MongoDB 역할 기반 권한 부여를 통해 데이터 및 명령에 대한 액세스 부여합니다. MongoDB 데이터베이스 시스템에서 일반적으로 필요한 다양한 수준의 액세스 을 부여하는 역할을 내장 제공합니다.
역할은 정의된 리소스 에 대해 일련의 조치 를 수행할 수 있는 권한을 부여합니다. 역할 자신이 정의된 데이터베이스 에 적용되며 컬렉션 수준까지 세부적으로 액세스 부여할 수 있습니다.
각 내장 역할 역할 데이터베이스 에 있는 모든 비시스템 컬렉션에 대한 데이터베이스 수준과 모든 시스템 컬렉션에 대한 컬렉션 수준에서 액세스 정의합니다.
시스템 컬렉션 에는 다음 항목이 포함됩니다.
<database>.system.*namespacelocal.replset.*복제본 세트 네임스페이스
비시스템 컬렉션 은 이전 목록의 네임스페이스에 없는 컬렉션입니다.
MongoDB Atlas 데이터베이스 사용자는 자체 호스팅 배포서버 사용자와는 다른 내장 역할을 가지고 있습니다. 그러나 MongoDB는 동일한 권한 조치설정에서 각 배포서버 유형에 대한 내장 역할을 빌드합니다.
페이지 상단의 선택기를 사용하여 배포서버 유형을 선택하고 사용 가능한 내장 역할을 확인합니다.
MongoDB Atlas 기본 제공 역할
이 섹션에서는 MongoDB Atlas 내장 역할과 MongoDB 역할 에 대해 설명합니다.
MongoDB Atlas 사용자 인터페이스에서 데이터베이스 사용자를 생성하고 내장 역할을 할당합니다. 자세한 내용은 데이터베이스 사용자 추가를 참조하세요.
MongoDB Atlas 현재 MongoDB Atlas 사용자 권한으로 지원 하지 않는 일반적인 명령에 대해 자세히 학습 지원되지 않는 명령을 참조하세요.
Atlas 전용 역할
다음 역할은 MongoDB Atlas에서만 사용 가능하며 해당하는 자체 관리형 MongoDB 역할이 없습니다.
killOpSession활성 작업을 보고 종료하고 세션을 관리할 수 있는 기능을 제공합니다.
클러스터 전체에 대해 다음과 같은 조치를 제공합니다.
autoCompact배경 압축을 활성화하기 위해
autoCompact명령을 실행할 수 있는 기능을 제공합니다.배경 압축은 사용 가능한 파일을 주기적으로 반복하고 불필요한 디스크 공간을 운영 체제에 할당합니다.
autoCompact에 대한 인증 요구 사항에 대해 자세히 알아보려면 필요한 권한을 참조하세요.클러스터 전체에 대해 다음과 같은 조치를 제공합니다.
manageShardBalancer범위 크기 및 밸런서 상태를 포함하여 샤드 밸런서 설정을 관리할 수 있는 기능을 제공합니다. 샤드 밸런싱에 대한 자세한 내용은 샤딩된 클러스터 밸런서를 참조하십시오.
config.settings컬렉션에서 다음 조치를 제공합니다.
보호된 MongoDB 데이터베이스 네임스페이스
admin, local 및 config 데이터베이스 또는 __mdb_internal_ 접두사가 붙은 데이터베이스 에는 쓰지 않도록 합니다. MongoDB Atlas 이러한 데이터베이스에서 여러 컬렉션을 관리합니다. 자세한 학습은 데이터베이스 및 컬렉션을 참조하세요.
atlasAdmin 는 밸런서 를 관리 위해 config.settings 컬렉션 에 대한 update 권한 가집니다.
기본 제공 역할 및 상속된 권한
다음 표에서 는 작업이 timeseries 컬렉션도 지원함을 나타냅니다.
MongoDB Atlas 내장 역할 | MongoDB 역할 | 상속된 역할 또는 권한 작업 |
|---|---|---|
이 역할 통해
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
MongoDB 내장 역할 설명
다음은 MongoDB Atlas 내장 역할에 사용되는 MongoDB 내장 역할입니다.
MongoDB 역할 | 설명 |
|---|---|
| 데이터 백업에 필요한 최소한의 권한을 제공합니다. 이 역할은 MongoDB Cloud Manager 백업 에이전트, Ops Manager 백업 에이전트를 사용하거나 |
| MongoDB Cloud Manager와 MongoDB Ops Manager 모니터링 에이전트와 같은 모니터링 도구에 대한 읽기 전용 액세스를 제공합니다. |
| 스키마 관련 작업, 인덱싱, 통계 수집 등의 관리 작업을 수행하는 기능을 제공합니다. 이 역할은 사용자 및 역할 관리에 대한 권한을 부여하지 않습니다. |
|
|
| 컬렉션에 대해 샤딩을 활성화하고 기존 샤드 키를 수정하는 기능을 제공합니다. |
| 모든 비시스템컬렉션과 컬렉션 |
|
이 역할은 클러스터 관리 리소스가 아닌 데이터베이스 리소스에 대한 권한을 부여합니다. |
| |
|
이 역할은 클러스터 관리 리소스가 아닌 데이터베이스 리소스에 대한 권한을 부여합니다. |
자세히 알아보기
내장 역할이 요구 사항을 충족하지 않는 경우 사용자 정의 역할을 만듭니다. 자세한 내용은 사용자 지정 데이터베이스 역할 구성을 참조하세요.
자체 관리형 배포서버 내장 역할
MongoDB 자체 관리형 배포에서 다음 내장 역할을 제공합니다.
내장 역할의 권한을 보려면 rolesInfo 명령을 showPrivileges 및 showBuiltinRoles 필드를 모두 true로 설정하여 실행하십시오. 다음 명령은 readWrite 역할 에 대한 권한을 보여줍니다.
db.getRole("readWrite", { showPrivileges: true, showBuiltinRoles: true } )
{ db: 'test', role: 'readWrite', roles: [], privileges: [ { resource: { db: 'test', collection: '' }, actions: [ 'changeStream', 'cleanupStructuredEncryptionData', 'collStats', 'compactStructuredEncryptionData', 'convertToCapped', 'createCollection', 'createIndex', 'createSearchIndexes', 'dbHash', 'dbStats', 'dropCollection', 'dropIndex', 'dropSearchIndex', 'find', 'insert', 'killCursors', 'listCollections', 'listIndexes', 'listSearchIndexes', 'updateSearchIndex', 'planCacheRead', 'performRawDataOperations', 'remove', 'renameCollectionSameDB', 'update' ] }, { resource: { db: 'test', collection: 'system.js' }, actions: [ 'changeStream', 'cleanupStructuredEncryptionData', 'collStats', 'compactStructuredEncryptionData', 'convertToCapped', 'createCollection', 'createIndex', 'createSearchIndexes', 'dbHash', 'dbStats', 'dropCollection', 'dropIndex', 'dropSearchIndex', 'find', 'insert', 'killCursors', 'listCollections', 'listIndexes', 'listSearchIndexes', 'updateSearchIndex', 'planCacheRead', 'performRawDataOperations', 'remove', 'renameCollectionSameDB', 'update' ] } ], inheritedRoles: [], inheritedPrivileges: [ { resource: { db: 'test', collection: '' }, actions: [ 'changeStream', 'cleanupStructuredEncryptionData', 'collStats', 'compactStructuredEncryptionData', 'convertToCapped', 'createCollection', 'createIndex', 'createSearchIndexes', 'dbHash', 'dbStats', 'dropCollection', 'dropIndex', 'dropSearchIndex', 'find', 'insert', 'killCursors', 'listCollections', 'listIndexes', 'listSearchIndexes', 'updateSearchIndex', 'planCacheRead', 'performRawDataOperations', 'remove', 'renameCollectionSameDB', 'update' ] }, { resource: { db: 'test', collection: 'system.js' }, actions: [ 'changeStream', 'cleanupStructuredEncryptionData', 'collStats', 'compactStructuredEncryptionData', 'convertToCapped', 'createCollection', 'createIndex', 'createSearchIndexes', 'dbHash', 'dbStats', 'dropCollection', 'dropIndex', 'dropSearchIndex', 'find', 'insert', 'killCursors', 'listCollections', 'listIndexes', 'listSearchIndexes', 'updateSearchIndex', 'planCacheRead', 'performRawDataOperations', 'remove', 'renameCollectionSameDB', 'update' ] } ], isBuiltin: true }
데이터베이스 사용자 역할
각각의 데이터베이스에는 다음과 같은 클라이언트 역할이 포함됩니다.
read모든 비시스템컬렉션과 컬렉션
system.js에 대한 읽기 액세스 제공합니다.참고
이 역할
system.namespaces컬렉션 에 직접 액세스 할 수 있는 권한을 제공하지 않습니다.이 역할은 다음과 같은 조치를 허용하여 읽기 액세스 권한을 제공합니다.
listDatabases권한 조치 없는 사용자는listDatabases명령을 실행 권한이 있는 데이터베이스 목록을 반환할 수 있습니다. 여기에는 사용자가 특정 컬렉션에 대한 권한을 가진 데이터베이스가 포함됩니다.authorizedDatabases옵션을 지정하지 않거나true로 설정하다 명령을 실행합니다.
데이터베이스 관리 역할
각각의 데이터베이스에는 다음과 같은 데이터베이스 관리 역할이 포함되어 있습니다.
dbAdmin스키마 관련 작업, 인덱싱, 통계 수집 등의 관리 작업을 수행하는 기능을 제공합니다. 이 역할은 사용자 및 역할 관리에 대한 권한을 부여하지 않습니다.
이 역할 다음과 같은 권한을 제공합니다.
Resource허용된 조치- 모든 비시스템 컬렉션
- (database resource)
dbOwner데이터베이스 소유자는 데이터베이스에 대해 모든 관리 조치를 수행할 수 있습니다. 이 역할은
readWrite,dbAdmin,userAdmin역할이 부여하는 권한을 조합합니다.
userAdmin현재 데이터베이스 에서 역할과 사용자를 만들고 수정할 수 있는 기능 을 제공합니다.
userAdmin역할 통해 사용자는 자신을 포함한 모든 사용자에게 모든 권한 부여할 수 있습니다. 또한 이 역할은 데이터베이스 또는 클러스터 (admin데이터베이스 로 범위가 지정된 경우)에 대한 슈퍼유저 액세스를 간접적으로 제공합니다.userAdmin역할은 다음과 같은 조치를 명시적으로 제공합니다.경고
역할 부여가 보안에 미치는
userAdmin영향을 이해합니다. 데이터베이스 에 대해 이 역할 가진 사용자는 해당 데이터베이스 에 대한 모든 권한 자신에게 할당할 수 있습니다.admin데이터베이스에userAdmin역할 부여하면 클러스터에 대한 슈퍼유저 액세스가 간접적으로 제공되므로 보안에 더 많은 영향을 미칩니다.admin범위를 사용하면userAdmin역할 가진 사용자는userAdminAnyDatabase를 포함한 클러스터 전체의 역할 또는 권한을 부여할 수 있습니다.
클러스터 관리 역할
admin 데이터베이스에는 단일 데이터베이스가 아닌 전체 시스템을 관리하기 위한 다음과 같은 역할이 포함되어 있습니다. 이러한 역할에는 복제본 세트 및 샤딩된 클러스터 관리 기능이 포함되지만 이에 국한되지는 않습니다.
clusterAdmin최고의 클러스터 관리 액세스 권한을 제공합니다. 이 역할은
clusterManager,clusterMonitor,hostManager역할이 부여하는 권한을 조합합니다. 이 역할은 다음과 같은 추가 권한도 제공합니다.dropDatabase조치setQuerySettings및removeQuerySettings데이터베이스 명령$querySettings집계 단계
clusterManager클러스터 에 대한 관리 및 모니터링 조치를 제공합니다. 이 역할 있는 사용자는 샤딩 및 복제 에 각각 사용되는
config및local데이터베이스에 액세스 할 수 있습니다. 또한 이 역할querySettings조치 제공합니다.Resource작업모두 databases
clusterManager는config및local데이터베이스에 대한 추가 권한을 제공합니다.config데이터베이스에 대해 다음과 같은 조치를 허용합니다.Resource작업config데이터베이스의 모든 비시스템 컬렉션local데이터베이스에 대해 다음과 같은 조치를 허용합니다.Resource작업local데이터베이스의 모든 비시스템 컬렉션system.replset컬렉션
clusterMonitorMongoDB Cloud Manager와 MongoDB Ops Manager 모니터링 에이전트와 같은 모니터링 도구에 대한 읽기 전용 액세스를 제공합니다.
클러스터 전체에 대해 다음 조치를 허용합니다.
클러스터의 모든 데이터베이스에 대해 다음 조치를 허용합니다.
클러스터의 모든
system.profile컬렉션에 대해find조치를 허용합니다.config데이터베이스에 대해 다음과 같은 조치를 허용합니다.Resource작업config데이터베이스의 모든 비시스템 컬렉션system.js컬렉션local데이터베이스에 대해 다음과 같은 조치를 허용합니다.
directShardOperationsMongoDB 8.0부터
directShardOperations역할을 사용하여 샤드에 대해 직접 명령을 실행해야 하는 유지 관리 작업을 수행할 수 있습니다.경고
directShardOperations역할 사용하여 명령을 실행하면 클러스터 올바르게 작동하지 않고 데이터가 손상될 수 있습니다.directShardOperations역할 유지 관리 목적으로만 사용하거나 MongoDB 지원 의 지침 에 따라 사용하세요. 유지 관리 작업 수행이 완료되면directShardOperations역할 사용을 중지합니다.
enableSharding컬렉션에 대해 샤딩을 활성화하고 기존 샤드 키를 수정하는 기능을 제공합니다.
모든 비시스템 컬렉션에 대해 다음 조치를 제공합니다.
moveCollection(MongoDB 8.0 이상)rewriteCollection(MongoDB 8.3 이상)unshardCollection(MongoDB 8.0 이상)
searchCoordinator__mdb_internal_search데이터베이스에 대한readAnyDatabase권한 및 쓰기 (write) 권한을 제공합니다.중요
__mdb_internal_search데이터베이스 의 내용을 수정하지 마세요.클러스터 전체에 대해 다음 조치 제공합니다.
백업 및 복원 역할
admin 데이터베이스에는 데이터 백업 및 복원을 위한 다음 역할이 포함되어 있습니다.
backup데이터 백업에 필요한 최소한의 권한을 제공합니다. 이 역할은 MongoDB Cloud Manager 백업 에이전트, Ops Manager 백업 에이전트를 사용하거나
mongodump를 사용하여 전체mongod인스턴스를 백업할 수 있는 충분한 권한을 제공합니다.config데이터베이스의settings컬렉션에 대한insert및update조치를 제공합니다.anyResource에서 다음 조치를 제공합니다.클러스터 전체에 대해 다음과 같은 조치를 제공합니다.
setUserWriteBlockMode(MongoDB 6.0부터 사용 가능)
다음에 대해
find조치를 제공합니다.config및local데이터베이스의 컬렉션을 포함하여 클러스터의 모든 비시스템 컬렉션클러스터에 있는 다음 시스템 컬렉션:
system.js및system.profileconfig.settings컬렉션2.6 이전 버전의 MongoDB에 있는 레거시
system.users컬렉션
config.settings컬렉션에 대해insert및update조치를 제공합니다.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대해 추가 권한이 필요합니다.기본 제공 역할
dbAdmin과dbAdminAnyDatabase는 모두 추가 권한을 제공합니다.--oplogReplay--oplogReplay를 사용하여 실행하려면anyResource에anyAction이 있는 사용자 정의 역할을 생성하십시오.--oplogReplay로mongorestore를 실행해야 하는 사용자에게만 부여하세요.클러스터 전체에 대해 다음 조치를 제공합니다.
모든 비시스템 컬렉션에 대해 다음 조치를 제공합니다.
system.js컬렉션에 대해 다음 조치를 제공합니다.anyResource에 대해 다음 조치를 제공합니다.config및local데이터베이스의 모든 비시스템 컬렉션에 대해 다음 조치를 제공합니다.다음과 같은 조치를 제공합니다.
admin.system.version다음과 같은 조치를 제공합니다.
admin.system.rolesadmin.system.users및 레거시system.users컬렉션에 대해 다음 조치를 제공합니다.restore에는 일반 수정 작업을 사용하여admin.system.users컬렉션의 문서를 수정할 수 있는 기능이 포함되어 있습니다. 그러나 이러한 데이터는 사용자 관리 방법을 통해서만 수정해야 합니다.<database>.system.views컬렉션에 대해 다음 조치를 제공합니다.dropCollection(MongoDB 6.0부터 사용 가능)
클러스터 전체에 대해 다음과 같은 조치를 제공합니다.
bypassWriteBlockingMode(MongoDB 6.0부터 사용 가능)setUserWriteBlockMode(MongoDB 6.0부터 사용 가능)
전체 데이터베이스 역할
다음 역할은 admin 데이터베이스 에서 사용할 수 있으며 local 및 config를 제외한 모든 데이터베이스에 적용 권한을 제공합니다.
readAnyDatabaselocal및config를 제외한 모든 데이터베이스에서read와 동일한 읽기 전용 권한을 제공합니다. 이 역할은 클러스터 전체에 대한listDatabases조치도 제공합니다.이 역할은 클러스터 관리 리소스가 아닌 데이터베이스 리소스에 대한 권한을 부여합니다.
config및local데이터베이스에 액세스하려면clusterManager및clusterMonitor역할도 참조하세요.
readWriteAnyDatabaselocal및config를 제외한 모든 데이터베이스에서readWrite와 동일한 권한을 제공합니다. 이 역할은 다음 또한 제공합니다.클러스터 전체에 대한
listDatabases조치
이 역할은 클러스터 관리 리소스가 아닌 데이터베이스 리소스에 대한 권한을 부여합니다.
config및local데이터베이스에 액세스하려면clusterManager및clusterMonitor역할도 참조하세요.
userAdminAnyDatabaselocal및config를 제외한 모든 데이터베이스에 대해userAdmin과 동일한 사용자 관리 작업에 액세스할 수 있는 권한을 제공합니다.userAdminAnyDatabase는 클러스터에 대해 다음과 같은 권한 조치도 제공합니다.이 역할은
admin데이터베이스의system.users및system.roles컬렉션과 2.6 이전 버전의 MongoDB의 레거시system.users컬렉션에 대해 다음과 같은 권한 조치를 제공합니다.userAdminAnyDatabase역할은 사용자가 부여할 수 있는 권한을 제한하지 않습니다. 따라서userAdminAnyDatabase사용자는 현재 권한을 초과하는 권한을 자신에게 부여할 수 있으며, 역할이 사용자 관리 이상의 권한을 명시적으로 부여하지 않더라도 모든 권한을 자신에게 부여할 수도 있습니다. 이 역할은 사실상 MongoDB 시스템 슈퍼유저입니다.config및local데이터베이스에 액세스하려면clusterManager및clusterMonitor역할도 참조하세요.
dbAdminAnyDatabaselocal및config를 제외한 모든 데이터베이스에 대해dbAdmin과 동일한 권한을 제공합니다. 이 역할은 클러스터 전체에 대해listDatabases조치도 제공합니다.config및local데이터베이스에 액세스하려면clusterManager및clusterMonitor역할도 참조하세요.MongoDB 5.0부터
dbAdminAnyDatabase에 ApplyOps 권한 조치가 포함됩니다.
슈퍼유저 역할
시스템 전체에 대해 간접적 또는 직접적 슈퍼유저 액세스 권한을 제공하는 몇 가지 역할이 있습니다.
다음 역할은 모든 사용자에게 모든 데이터베이스 에 대한 권한 할당할 수 있는 기능 을 제공합니다. 이러한 역할 중 하나를 가진 사용자는 모든 데이터베이스에 대한 모든 권한 자신에게 할당할 수 있습니다.
다음 역할은 모든 리소스에 대한 전체 권한을 제공합니다.
root다음과 같이 결합된 역할의 작업 및 모든 리소스에 대한 액세스 제공합니다.
또한 다음과 같은 권한 조치를 제공합니다.
system.컬렉션에 대한validateMongoDB 8.0 이상에서는
bypassDefaultMaxTimeMS로 인해 사용자가 실행 모든 쿼리가defaultMaxTimeMS의 값을 무시합니다.
내부 역할
__systemMongoDB는 복제본 세트 노드 및
mongos인스턴스와 같이 클러스터 노드를 나타내는 사용자 객체에 이 역할을 할당합니다. 이 역할은 소유자에게 데이터베이스의 모든 객체에 대해 모든 조치를 수행할 수 있는 권한을 부여합니다.예외적인 경우를 제외하고는 애플리케이션 또는 인간 관리자를 나타내는 사용자 객체에는 이 역할을 할당하지 마세요.
모든 리소스에 대한 모든 조치(예시:
applyOps명령 실행)에 액세스해야 하는 경우에는 이 역할을 할당하지 마세요. 대신,anyResource에 대해anyAction을 부여하는 사용자 정의 역할을 만들고 이러한 작업에 액세스해야 하는 사용자만 이 액세스 권한을 갖도록 하세요.
자세히 알아보기
내장 역할이 요구 사항을 충족하지 않는 경우 사용자 정의 역할을 만듭니다. 자세한 내용은 자체 관리형 배포서버에서 사용자 정의 역할을 참조하세요.