자체 관리형 배포서버의 기본 제공 역할
이 페이지의 내용
MongoDB 는 역할 기반 권한 부여 를 통해 데이터 및 명령에 대한 액세스 을 부여하고 데이터베이스 시스템에서 일반적으로 필요한 다양한 수준의 액세스 를 제공하는 내장 제공 역할을 제공합니다. 사용자 정의 역할을 추가로 생성할 수 있습니다.
역할은 정의된 리소스에서 일련의 조치를 수행할 수 있는 권한을 부여합니다. 지정된 역할은 해당 역할이 정의된 데이터베이스에 적용되며 컬렉션 수준까지 세부적으로 액세스 권한을 부여할 수 있습니다.
시스템 컬렉션 에는 다음 항목이 포함됩니다.
<database>.system.*
namespacelocal.replset.*
복제본 세트 네임스페이스
자세한 내용은 시스템 컬렉션을 참조하세요.
비시스템 컬렉션 은 이전 목록의 네임스페이스에 없는 컬렉션입니다.
MongoDB의 각 내장 역할은 해당 역할의 데이터베이스 에 있는 모든 비시스템 컬렉션에 대한 데이터베이스 수준과 모든 시스템 컬렉션에 대한 컬렉션 수준에서 액세스 를 정의합니다.
이 섹션에서는 각 기본 제공 역할에 대한 권한을 설명합니다. 또한 showPrivileges
및 showBuiltinRoles
필드가 모두 true
으(로) 설정된 상태에서 rolesInfo
명령을 실행하여 언제든지 기본 제공 역할의 권한을 볼 수 있습니다.
MongoDB Atlas 배포서버에는 자체 호스팅 배포서버와는 다른 기본 제공 역할이 있습니다. 자세한 내용은 다음 리소스를 참조하세요.
MongoDB Atlas 기본 제공 역할
MongoDB Atlas 에서 호스팅되는 배포 내장 데이터베이스 사용자 역할은 Altas 기본 제공 역할 및 권한을 참조하세요.
MongoDB Atlas 사용자 인터페이스에서 데이터베이스 사용자를 생성하고 내장 역할을 할당할 수 있습니다. 학습 내용은 데이터베이스 사용자 추가를 참조하세요.
자체 호스팅 배포서버의 기본 제공 역할
MongoDB는 자체 호스팅 배포서버에 다음과 같은 역할을 기본으로 제공합니다.
모든 데이터베이스에서 데이터베이스 사용자 및 데이터베이스 관리 역할
기타 모든 역할은
admin
데이터베이스에서만 제공
데이터베이스 사용자 역할
각각의 데이터베이스에는 다음과 같은 클라이언트 역할이 포함됩니다.
read
모든 비시스템 컬렉션 및
system.js
컬렉션에서 데이터를 읽을 수 있는 기능을 제공합니다.참고
이 역할은
system.namespaces
컬렉션에 직접 액세스할 수 있는 권한을 제공하지 않습니다.이 역할은 다음과 같은 조치를 허용하여 읽기 액세스 권한을 제공합니다.
사용자에게
listDatabases
권한 조치가 없는 경우,authorizedDatabases
옵션이 지정되지 않았거나true
로 설정된 상태에서listDatabases
명령을 실행하여 사용자에게 권한이 있는 데이터베이스 목록(특정 컬렉션에 대한 권한이 있는 데이터베이스 포함)을 반환할 수 있습니다.
데이터베이스 관리 역할
각각의 데이터베이스에는 다음과 같은 데이터베이스 관리 역할이 포함되어 있습니다.
dbAdmin
스키마 관련 작업, 인덱싱, 통계 수집 등의 관리 작업을 수행하는 기능을 제공합니다. 이 역할은 사용자 및 역할 관리에 대한 권한을 부여하지 않습니다.
이 역할은 다음과 같은 권한을 부여합니다.
Resource허용된 조치모든 비시스템 컬렉션(즉, 데이터베이스 리소스)
dbOwner
데이터베이스 소유자는 데이터베이스에 대해 모든 관리 조치를 수행할 수 있습니다. 이 역할은
readWrite
,dbAdmin
,userAdmin
역할이 부여하는 권한을 조합합니다.
userAdmin
현재 데이터베이스에서 역할과 사용자를 생성하고 수정할 수 있는 기능을 제공합니다.
userAdmin
역할은 사용자가 자신을 포함한 모든 사용자에게 어떠한 권한이든 부여할 수 있도록 허용하므로 데이터베이스 또는 클러스터(admin
데이터베이스로 범위가 지정된 경우)에 대한 슈퍼유저 액세스 권한도 간접적으로 제공합니다.userAdmin
역할은 다음과 같은 조치를 명시적으로 제공합니다.경고
데이터베이스에 대해 이 역할을 가진 사용자는 해당 데이터베이스에 대한 모든 권한을 자신에게 할당할 수 있으므로
userAdmin
역할 부여가 보안에 미치는 영향을 이해하는 것이 중요합니다.admin
데이터베이스에userAdmin
역할을 부여하면 클러스터에 대해 슈퍼유저 액세스 권한이 간접적으로 부여되므로 보안에 더 많은 영향을 미칩니다.admin
범위에서는userAdmin
역할을 가진 사용자가userAdminAnyDatabase
를 비롯하여 클러스터 전반에 걸친 역할 또는 권한을 부여할 수 있습니다.
클러스터 관리 역할
admin
데이터베이스에는 단일 데이터베이스가 아닌 전체 시스템을 관리하기 위한 다음과 같은 역할이 포함되어 있습니다. 이러한 역할에는 복제본 세트 및 샤딩된 클러스터 관리 기능이 포함되지만 이에 국한되지는 않습니다.
clusterAdmin
최고의 클러스터 관리 액세스 권한을 제공합니다. 이 역할은
clusterManager
,clusterMonitor
,hostManager
역할이 부여하는 권한을 조합합니다. 또한dropDatabase
조치를 제공합니다.
clusterManager
클러스터에 대한 관리 및 모니터링 조치를 제공합니다. 이 역할을 가진 사용자는 샤딩 및 복제에 각각 사용되는
config
및local
데이터베이스에 액세스할 수 있습니다. 또한querySettings
조치를 제공합니다.Resource작업모두 databasesclusterManager
는config
및local
데이터베이스에 대한 추가 권한을 제공합니다.config
데이터베이스에 대해 다음과 같은 조치를 허용합니다.Resource작업config
데이터베이스의 모든 비시스템 컬렉션local
데이터베이스에 대해 다음과 같은 조치를 허용합니다.
clusterMonitor
MongoDB Cloud Manager와 MongoDB Ops Manager 모니터링 에이전트와 같은 모니터링 도구에 대한 읽기 전용 액세스를 제공합니다.
클러스터 전체에 대해 다음 조치를 허용합니다.
클러스터의 모든 데이터베이스에 대해 다음 조치를 허용합니다.
클러스터의 모든
system.profile
컬렉션에 대해find
조치를 허용합니다.config
데이터베이스에 대해 다음과 같은 조치를 허용합니다.Resource작업config
데이터베이스의 모든 비시스템 컬렉션system.js
컬렉션local
데이터베이스에 대해 다음과 같은 조치를 허용합니다.
directShardOperations
MongoDB 8.0부터
directShardOperations
역할을 사용하여 샤드에 대해 직접 명령을 실행해야 하는 유지 관리 작업을 수행할 수 있습니다.경고
directShardOperations
역할 을 사용하여 명령을 실행하면 클러스터 가 올바르게 작동하지 않고 데이터가 손상될 수 있습니다.directShardOperations
역할 은 유지 관리 목적으로만 사용하거나 MongoDB 지원 의 지침 에 따라 사용하세요. 유지 관리 작업 수행이 완료되면directShardOperations
역할 사용을 중지합니다.
hostManager
서버를 모니터링하고 관리할 수 있는 기능을 제공합니다.
클러스터 전체에 대해 다음 조치를 제공합니다.
rotateCertificates
(버전 5.0에 새로 추가됨)
클러스터의 모든 데이터베이스에 대해 다음 조치를 제공합니다.
백업 및 복원 역할
admin
데이터베이스에는 데이터 백업 및 복원을 위한 다음 역할이 포함되어 있습니다.
backup
데이터 백업에 필요한 최소한의 권한을 제공합니다. 이 역할은 MongoDB Cloud Manager 백업 에이전트, Ops Manager 백업 에이전트를 사용하거나
mongodump
를 사용하여 전체mongod
인스턴스를 백업할 수 있는 충분한 권한을 제공합니다.config
데이터베이스의settings
컬렉션에 대한insert
및update
조치를 제공합니다.anyResource
에 대해 다음 조치를 제공합니다.클러스터 전체에 대해 다음 조치를 제공합니다.
setUserWriteBlockMode
(MongoDB 6.0부터 사용 가능)
다음에 대해
find
조치를 제공합니다.config
및local
데이터베이스의 컬렉션을 포함하여 클러스터의 모든 비시스템 컬렉션클러스터의 다음과 같은 시스템 컬렉션:
config.settings
컬렉션2.6 이전 버전의 MongoDB에 있는 레거시
system.users
컬렉션
config.settings
컬렉션에 대해insert
및update
조치를 제공합니다.backup
역할은 데이터베이스 프로파일링으로 실행할 때 존재하는system.profile
컬렉션을 백업할 수 있는 추가 권한을 제공합니다.
restore
비시스템 컬렉션에 대한
convertToCapped
조치를 제공합니다.데이터에
system.profile
컬렉션 데이터가 포함되어 있지 않고--oplogReplay
옵션 없이mongorestore
를 실행하는 경우 백업에서 데이터를 복원하는 데 필요한 권한을 제공합니다.백업 데이터에
system.profile
컬렉션 데이터가 포함되어 있거나--oplogReplay
를 사용하여 실행하는 경우 추가 권한이 필요합니다.system.profile
백업 데이터에
system.profile
컬렉션 데이터가 포함되어 있고 대상 데이터베이스에system.profile
컬렉션이 포함되어 있지 않은 경우mongorestore
는 프로그램이 실제로system.profile
문서를 복원하지 않더라도 컬렉션을 만들려고 시도합니다. 따라서 데이터베이스의system.profile
컬렉션에createCollection
및convertToCapped
조치를 수행하려면 사용자에게 추가 권한이 필요합니다.기본 제공 역할
dbAdmin
과dbAdminAnyDatabase
는 모두 추가 권한을 제공합니다.--oplogReplay
--oplogReplay
를 사용하여 실행하려면anyResource
에anyAction
이 있는 사용자 정의 역할을 생성하십시오.--oplogReplay
로mongorestore
를 실행해야 하는 사용자에게만 부여하세요.클러스터 전체에 대해 다음 조치를 제공합니다.
모든 비시스템 컬렉션에 대해 다음 조치를 제공합니다.
system.js
컬렉션에 대해 다음 조치를 제공합니다.anyResource
에 대해 다음 조치를 제공합니다.config
및local
데이터베이스의 모든 비시스템 컬렉션에 대해 다음 조치를 제공합니다.다음과 같은 조치를 제공합니다.
admin.system.version
다음과 같은 조치를 제공합니다.
admin.system.roles
admin.system.users
및 레거시system.users
컬렉션에 대해 다음 조치를 제공합니다.restore
에는 일반 수정 작업을 사용하여admin.system.users
컬렉션의 문서를 수정하는 기능이 포함되어 있지만 사용자 관리 방법을 통해서만 이러한 데이터를 수정합니다.<database>.system.views
컬렉션에 대해 다음 조치를 제공합니다.dropCollection
(MongoDB 7.2부터)
클러스터 전체에 대해 다음과 같은 조치를 제공합니다.
bypassWriteBlockingMode
(MongoDB 6.0부터 사용 가능)setUserWriteBlockMode
(MongoDB 6.0부터 사용 가능)
전체 데이터베이스 역할
다음 역할은 admin
데이터베이스에서 사용할 수 있으며 local
및 config
를 제외한 모든 데이터베이스에 적용되는 권한을 제공합니다.
readAnyDatabase
local
및config
를 제외한 모든 데이터베이스에서read
와 동일한 읽기 전용 권한을 제공합니다. 이 역할은 클러스터 전체에 대한listDatabases
조치도 제공합니다.config
및local
데이터베이스에 액세스하려면clusterManager
및clusterMonitor
역할도 참조하세요.
readWriteAnyDatabase
local
및config
를 제외한 모든 데이터베이스에서readWrite
와 동일한 권한을 제공합니다. 이 역할은 다음 또한 제공합니다.클러스터 전체에 대한
listDatabases
조치
config
및local
데이터베이스에 액세스하려면clusterManager
및clusterMonitor
역할도 참조하세요.
userAdminAnyDatabase
local
및config
를 제외한 모든 데이터베이스에 대해userAdmin
과 동일한 사용자 관리 작업에 액세스할 수 있는 권한을 제공합니다.userAdminAnyDatabase
는 클러스터에 대해 다음과 같은 권한 조치도 제공합니다.이 역할은
admin
데이터베이스의system.users
및system.roles
컬렉션과 2.6 이전 버전의 MongoDB의 레거시system.users
컬렉션에 대해 다음과 같은 권한 조치를 제공합니다.userAdminAnyDatabase
역할은 사용자가 부여할 수 있는 권한을 제한하지 않습니다. 따라서userAdminAnyDatabase
사용자는 현재 권한을 초과하는 권한을 자신에게 부여할 수 있으며, 역할이 사용자 관리 이상의 권한을 명시적으로 부여하지 않더라도 모든 권한을 자신에게 부여할 수도 있습니다. 이 역할은 사실상 MongoDB 시스템 슈퍼유저입니다.config
및local
데이터베이스에 액세스하려면clusterManager
및clusterMonitor
역할도 참조하세요.
dbAdminAnyDatabase
local
및config
를 제외한 모든 데이터베이스에 대해dbAdmin
과 동일한 권한을 제공합니다. 이 역할은 클러스터 전체에 대해listDatabases
조치도 제공합니다.config
및local
데이터베이스에 액세스하려면clusterManager
및clusterMonitor
역할도 참조하세요.MongoDB 5.0부터
dbAdminAnyDatabase
에 ApplyOps 권한 조치가 포함됩니다.
슈퍼유저 역할
시스템 전체에 대해 간접적 또는 직접적 슈퍼유저 액세스 권한을 제공하는 몇 가지 역할이 있습니다.
다음 역할은 모든 사용자에게 모든 데이터베이스에 대한 모든 권한을 할당할 수 있는 기능을 제공하므로, 이러한 역할 중 하나를 가진 사용자는 모든 데이터베이스에 대한 모든 권한을 자신에게 할당할 수 있습니다.
다음 역할은 모든 리소스에 대한 전체 권한을 제공합니다.
root
조합된 다음 역할의 작업 및 모든 리소스에 대한 액세스를 제공합니다.
또한 다음과 같은 권한 조치를 제공합니다.
system.
컬렉션에 대한validate
bypassDefaultMaxTimeMS
는 사용자가 실행하는 모든 쿼리가defaultMaxTimeMS
값을 무시하게 합니다.
내부 역할
__system
MongoDB는 복제본 세트 노드 및
mongos
인스턴스와 같이 클러스터 노드를 나타내는 사용자 객체에 이 역할을 할당합니다. 이 역할은 소유자에게 데이터베이스의 모든 객체에 대해 모든 조치를 수행할 수 있는 권한을 부여합니다.예외적인 경우를 제외하고는 애플리케이션 또는 인간 관리자를 나타내는 사용자 객체에는 이 역할을 할당하지 마세요.
모든 리소스에 대한 모든 조치(예시:
applyOps
명령 실행)에 액세스해야 하는 경우에는 이 역할을 할당하지 마세요. 대신,anyResource
에 대해anyAction
을 부여하는 사용자 정의 역할을 만들고 이러한 작업에 액세스해야 하는 사용자만 이 액세스 권한을 갖도록 하세요.