문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

기본 제공 역할

이 페이지의 내용

  • MongoDB Atlas 기본 제공 역할
  • 자체 호스팅 배포서버의 기본 제공 역할
  • 데이터베이스 사용자 역할
  • 데이터베이스 관리 역할
  • 클러스터 관리 역할
  • 백업 및 복원 역할
  • 전체 데이터베이스 역할
  • 슈퍼유저 역할
  • 내부 역할

MongoDB는 역할 기반 권한 부여를 통해 데이터 및 명령에 대한 액세스 권한을 부여하고, 데이터베이스 시스템에서 일반적으로 필요한 다양한 수준의 액세스를 제공하는 역할을 기본적으로 제공합니다. 사용자 정의 역할을 추가로 만들 수 있습니다.

역할은 정의된 리소스에서 일련의 조치를 수행할 수 있는 권한을 부여합니다. 지정된 역할은 해당 역할이 정의된 데이터베이스에 적용되며 컬렉션 수준까지 세부적으로 액세스 권한을 부여할 수 있습니다.

MongoDB가 기본으로 제공하는 각각의 역할은 해당 역할의 데이터베이스에 있는 모든 비시스템 컬렉션에 대한 데이터베이스 수준과 모든 시스템 컬렉션에 대한 컬렉션 수준에서 액세스를 정의합니다.

이 섹션에서는 각 기본 제공 역할에 대한 권한을 설명합니다. rolesInfo showPrivilegesshowBuiltinRoles 필드를 모두 true 으로 설정한 상태에서 명령을 실행하여 언제든지 기본 제공 역할에 대한 권한을 볼 수도 있습니다.

MongoDB Atlas 배포서버에는 자체 호스팅 배포서버와는 다른 기본 제공 역할이 있습니다. 자세한 내용은 다음 리소스를 참조하세요.

  • MongoDB Atlas 기본 제공 역할

  • 자체 호스팅 배포서버의 기본 제공 역할

MongoDB Atlas에 호스팅되는 배포서버에 다음과 같은 기본 제공 데이터베이스 사용자 역할을 할당할 수 있습니다.

MongoDB 역할
MongoDB Atlas UI에서 역할 이름
상속된 역할 또는 권한 작업
atlasAdmin
Atlas admin
readWriteAnyDatabase
Read and write to any database
readAnyDatabase
Only read any database

MongoDB Atlas UI에서 데이터베이스 사용자를 생성하고 기본 제공 역할을 할당할 수 있습니다. 자세한 내용은 데이터베이스 사용자 추가를 참조하세요.

MongoDB는 자체 호스팅 배포서버에 다음과 같은 역할을 기본으로 제공합니다.

각각의 데이터베이스에는 다음과 같은 클라이언트 역할이 포함됩니다.

read

모든 시스템 컬렉션 및 system.js 컬렉션에서 데이터를 읽을 수 있는 기능을 제공합니다.

참고

이 역할은 system.namespaces 컬렉션에 직접 액세스할 수 있는 권한을 제공하지 않습니다.

이 역할은 다음과 같은 조치를 허용하여 읽기 액세스 권한을 제공합니다.

사용자에게 listDatabases 권한 조치가 없는 경우, authorizedDatabases 옵션이 지정되지 않았거나 true로 설정된 상태에서 listDatabases 명령을 실행하여 사용자에게 권한이 있는 데이터베이스 목록(특정 컬렉션에 대한 권한이 있는 데이터베이스 포함)을 반환할 수 있습니다.

readWrite

read 역할의 모든 권한과 모든 시스템 컬렉션 및 system.js 컬렉션의 데이터를 수정할 수 있는 기능을 제공합니다.

이 역할은 이러한 컬렉션에 대해 다음과 같은 조치를 제공합니다.

각각의 데이터베이스에는 다음과 같은 데이터베이스 관리 역할이 포함되어 있습니다.

dbAdmin

스키마 관련 작업, 인덱싱, 통계 수집 등의 관리 작업을 수행하는 기능을 제공합니다. 이 역할은 사용자 및 역할 관리에 대한 권한을 부여하지 않습니다.

이 역할은 다음과 같은 권한을 부여합니다.

리소스
허용된 조치
모든 시스템 컬렉션(즉, 데이터베이스 리소스)
dbOwner

데이터베이스 소유자는 데이터베이스에 대해 모든 관리 작업을 수행할 수 있습니다. 이 역할은 readWrite, dbAdminuserAdmin 역할이 부여하는 권한을 결합합니다.

userAdmin

현재 데이터베이스에서 역할과 사용자를 만들고 수정할 수 있는 기능을 제공합니다. userAdmin 역할을 통해 사용자는 자신을 포함한 모든 사용자에게 모든 권한을 부여할 수 있으므로 이 역할은 데이터베이스 또는 클러스터( admin 데이터베이스로 범위가 지정된 경우)에 대한 슈퍼유저 액세스 권한도 간접적으로 제공합니다.

userAdmin 역할은 다음 조치를 명시적으로 제공합니다.

경고

데이터베이스에 대해 이 역할을 가진 사용자는 해당 데이터베이스에 대한 모든 권한을 자신에게 할당할 수 있으므로 userAdmin 역할 부여가 보안에 미치는 영향을 이해하는 것이 중요합니다. admin 데이터베이스에 userAdmin 역할을 부여하면 클러스터에 대한 슈퍼유저 액세스 권한이 간접적으로 제공되므로 보안에 더 많은 영향을 미칩니다. admin 범위에서는 userAdmin 역할을 가진 사용자가 userAdminAnyDatabase 를 포함한 클러스터 전체의 역할 또는 권한을 부여할 수 있습니다.

admin 데이터베이스에는 단일 데이터베이스가 아닌 전체 시스템을 관리하기 위한 다음과 같은 역할이 포함되어 있습니다. 이러한 역할에는 복제본 세트샤딩된 클러스터 관리 기능이 포함되지만 이에 국한되지는 않습니다.

clusterAdmin

최고의 클러스터 관리 액세스를 제공합니다. 이 역할은 clusterManager, clusterMonitorhostManager 역할이 부여하는 권한을 결합합니다. 또한 이 역할은 dropDatabase 조치를 제공합니다.

clusterManager

클러스터에 대한 관리 및 모니터링 조치를 제공합니다. 이 역할을 가진 사용자는 샤딩 및 복제에 각각 사용되는 configlocal 데이터베이스에 액세스할 수 있습니다.

리소스
작업

clusterManagerconfiglocal 데이터베이스에 대한 추가 권한을 제공합니다.

config 데이터베이스에 대해 다음과 같은 조치를 허용합니다.

리소스
작업
config 데이터베이스의 모든 비시스템 컬렉션

local 데이터베이스에 대해 다음과 같은 조치를 허용합니다.

clusterMonitor

MongoDB Cloud ManagerOps Manager 모니터링 에이전트와 같은 모니터링 도구에 대한 읽기 전용 액세스 권한을 제공합니다.

클러스터 전체에 대해 다음 조치를 허용합니다.

클러스터의 모든 데이터베이스에 대해 다음 조치를 허용합니다.

클러스터의 모든 system.profile 컬렉션에 대해 find 조치를 허용합니다.

config 데이터베이스에 대해 다음과 같은 조치를 허용합니다.

local 데이터베이스에 대해 다음과 같은 조치를 허용합니다.

enableSharding

컬렉션에 대한 샤딩을 활성화하고 기존 샤드 키를 수정할 수 있는 기능을 제공합니다.

모든 비시스템 컬렉션에 대해 다음 조치를 제공합니다.

hostManager

서버를 모니터링하고 관리할 수 있는 기능을 제공합니다.

클러스터 전체에 대해 다음 조치를 제공합니다.

클러스터의 모든 데이터베이스에 대해 다음 조치를 제공합니다.

admin 데이터베이스에는 데이터 백업 및 복원을 위한 다음 역할이 포함되어 있습니다.

backup

데이터 백업에 필요한 최소한의 권한을 제공합니다. 이 역할은 MongoDB Cloud Manager 백업 에이전트, Ops Manager 백업 에이전트를 사용하거나 mongodump 를 사용하여 전체 mongod 인스턴스를 백업할 수 있는 충분한 권한을 제공합니다.

config 데이터베이스의 settings 컬렉션에 대한 insertupdate 조치를 제공합니다.

anyResource에 대해 다음 조치를 제공합니다.

클러스터 전체에 대해 다음 조치를 제공합니다.

다음에 대해 find 조치를 제공합니다.

config.settings 컬렉션에 대해 insertupdate 조치를 제공합니다.

역할은 데이터베이스 프로파일링 으로 실행할 때 존재하는 backup system.profile컬렉션을 백업할 수 있는 추가 권한을 제공합니다.

restore

비시스템 컬렉션에 대한 convertToCapped 조치를 제공합니다.

데이터에 컬렉션 데이터가 system.profile 포함되어 mongorestore 있지 --oplogReplay 않고 옵션 없이 를 실행하는 경우 백업에서 데이터를 복원하는 데 필요한 권한을 제공합니다.

백업 데이터에 system.profile 컬렉션 데이터가 포함되어 있거나 --oplogReplay 로 실행하는 경우 추가 권한이 필요합니다.

system.profile

백업 데이터에 system.profile 컬렉션 데이터가 포함되어 있고 대상 데이터베이스에 컬렉션이 포함되어 있지 않은 system.profile 경우, 는 프로그램이mongorestore 실제로 문서를 복원하지 않더라도 컬렉션 생성을 system.profile 시도합니다. 따라서 사용자는 데이터베이스의 createCollection 컬렉션에 convertToCapped system.profile 대해 및 조치를 수행하려면 추가 권한이 필요합니다.

기본 제공 역할 dbAdmindbAdminAnyDatabase 모두 추가 권한을 제공합니다.

--oplogReplay

으로 anyResource 실행하려면 에 --oplogReplay anyAction 이 있는 사용자 정의 역할 을 만듭니다

--oplogReplay 으로 mongorestore 를 실행해야 하는 사용자에게만 부여합니다

클러스터 전체에 대해 다음 조치를 제공합니다.

모든 시스템 컬렉션에 대해 다음 조치를 제공합니다.

system.js 컬렉션에 대해 다음 조치를 제공합니다.

anyResource에 대해 다음 조치를 제공합니다.

configlocal 데이터베이스의 모든 비시스템 컬렉션에 대해 다음 조치를 제공합니다.

다음과 같은 조치를 제공합니다. admin.system.version

다음과 같은 조치를 제공합니다. admin.system.roles

admin.system.users 및 레거시 system.users 컬렉션에 대해 다음 조치를 제공합니다.

에는 일반적인restore 수정 작업을 사용하여 컬렉션의 admin.system.users 문서를 수정할 수 있는 기능이포함되어 있지만 사용자 관리 메서드 를 통해서만 이러한 데이터를 수정할 수 있습니다.

<database>.system.views 컬렉션에 대해 다음 조치를 제공합니다.

클러스터 전체에 대해 다음과 같은 조치를 제공합니다.

다음 역할은 admin 데이터베이스에서 사용할 수 있으며 localconfig를 제외한 모든 데이터베이스에 적용되는 권한을 제공합니다.

readAnyDatabase

localconfig 를 제외한 모든 데이터베이스에서 read 와 동일한 읽기 전용 권한을 제공합니다. 또한 이 역할은 클러스터 전체에 대한 listDatabases 조치를 제공합니다.

configlocal 데이터베이스에 액세스하기 위한 clusterManagerclusterMonitor 역할도 참조하세요.

readWriteAnyDatabase

localconfig 를 제외한 모든 데이터베이스에 대해 readWrite 와 동일한 권한을 제공합니다. 이 역할은 또한 다음을 제공합니다.

configlocal 데이터베이스에 액세스하기 위한 clusterManagerclusterMonitor 역할도 참조하세요.

userAdminAnyDatabase

localconfig 을(를) 제외한 모든 데이터베이스에서 userAdmin 와(과) 동일한 사용자 관리 작업에 대한 액세스 권한을 제공합니다.

userAdminAnyDatabase 는 클러스터에 대해 다음과 같은 권한 조치도 제공합니다.

이 역할은 admin 데이터베이스의 system.userssystem.roles 컬렉션과 2.6 이전 버전의 MongoDB의 레거시 system.users 컬렉션에 대해 다음과 같은 권한 조치를 제공합니다.

userAdminAnyDatabase 역할은 사용자가 부여할 수 있는 권한을 제한하지 않습니다. 따라서 userAdminAnyDatabase 사용자는 현재 권한을 초과하는 권한을 자신에게 부여할 수 있으며, 역할이 사용자 관리 이상의 권한을 명시적으로 부여하지 않더라도 모든 권한 을 자신에게 부여할 수도 있습니다. 이 역할은 사실상 MongoDB 시스템 슈퍼유저입니다.

configlocal 데이터베이스에 액세스하기 위한 clusterManagerclusterMonitor 역할도 참조하세요.

dbAdminAnyDatabase

localconfig 를 제외한 모든 데이터베이스에 대해 dbAdmin 와 동일한 권한을 제공합니다. 또한 이 역할은 클러스터 전체에 대한 listDatabases 조치를 제공합니다.

configlocal 데이터베이스에 액세스하기 위한 clusterManagerclusterMonitor 역할도 참조하세요.

MongoDB 5 부터 시작.0, dbAdminAnyDatabase 에는 applyOps 권한 작업이 포함되어 있습니다.

시스템 전체에 대해 간접적 또는 직접적 슈퍼유저 액세스 권한을 제공하는 몇 가지 역할이 있습니다.

다음 역할은 모든 사용자에게 모든 데이터베이스에 대한 모든 권한을 할당할 수 있는 기능을 제공하므로, 이러한 역할 중 하나를 가진 사용자는 모든 데이터베이스에 대한 모든 권한을 자신에게 할당할 수 있습니다.

다음 역할은 모든 리소스에 대한 전체 권한을 제공합니다.

root

조합된 다음 역할의 작업 및 모든 리소스에 대한 액세스를 제공합니다.

또한 system. 컬렉션에 대한 validate 권한 조치를 제공합니다.

버전 6.0에서 변경된 사항: root 역할에는 config 데이터베이스의 system.preimages 컬렉션에 대한 findremove 권한이 포함되어 있습니다.

__system

MongoDB는 복제본 세트 노드 및 mongos 인스턴스와 같이 클러스터 노드를 나타내는 사용자 객체에 이 역할을 할당합니다. 이 역할은 소유자에게 데이터베이스의 모든 객체에 대해 모든 조치를 수행할 수 있는 권한을 부여합니다.

예외적인 경우를 제외하고는 애플리케이션 또는 인간 관리자를 나타내는 사용자 객체에는 이 역할을 할당하지 마세요.

모든 리소스에 대한 모든 조치(예시: applyOps 명령 실행)에 액세스해야 하는 경우에는 이 역할을 할당하지 마세요. 대신, anyResource에 대해 anyAction을 부여하는 사용자 정의 역할을 만들고 이러한 작업에 액세스해야 하는 사용자만 이 액세스 권한을 갖도록 하세요.

← 역할 기반 액세스 제어