역할 기반 액세스 제어를 사용한 데이터베이스 액세스 - Amazon DocumentDB

역할 기반 액세스 제어를 사용한 데이터베이스 액세스

Amazon DocumentDB (MongoDB 호환)의 역할 기반 액세스 제어 (RBAC)를 사용하여 데이터베이스에서 사용자가 수행할 수 있는 작업에 대한 액세스를 제한할 수 있습니다. RBAC는 사용자에게 하나 이상의 역할을 부여하여 작동합니다. 이러한 역할은 사용자가 데이터베이스 리소스에서 수행할 수 있는 작업을 결정합니다. Amazon DocumentDB는 현재, read, readWrite, readAnyDatabase, clusterAdmin 등 데이터베이스 수준에서 범위가 지정된 기본 제공 역할과, 요구 사항에 따라 특정 작업으로 범위를 지정할 수 있는 사용자 정의 역할과 컬렉션과 같은 세분화된 리소스를 모두 지원합니다.

RBAC의 일반적인 사용 사례에는 클러스터의 데이터베이스에 대한 읽기 전용 액세스 권한을 가진 사용자를 생성하여 최소 권한을 적용하는 것과 단일 사용자가 클러스터의 지정된 데이터베이스에 액세스할 수 있도록 하는 다중 테넌트 애플리케이션 디자인이 포함됩니다.

참고

2020년 3월 26일 이전에 생성된 모든 새 사용자에게는 dbAdminAnyDatabase, readWriteAnyDatabaseclusterAdmin 역할이 부여되었습니다. 기존 사용자를 모두 재평가하고 필요에 따라 역할을 수정하여 클러스터에 대한 최소 권한을 적용하는 것이 좋습니다.

RBAC 개념

다음은 역할 기반 액세스 제어와 관련된 중요한 용어와 개념입니다. Amazon DocumentDB 사용자에 관한 자세한 내용은 Amazon DocumentDB 사용자 관리 단원을 참조하세요.

  • 사용자 - 데이터베이스에 대해 인증하고 작업을 수행할 수 있는 개별 엔터티입니다.

  • 암호 - 사용자를 인증하는 데 사용되는 암호입니다.

  • 역할 - 사용자에게 하나 이상의 데이터베이스에서 작업을 수행할 수 있는 권한을 부여합니다.

  • 관리 데이터베이스 - 사용자가 저장되고 권한이 부여되는 데이터베이스입니다.

  • 데이터베이스(db) - 문서를 저장하기 위한 컬렉션을 포함하는 클러스터 내의 네임스페이스입니다.

다음 명령은 sample-user라는 사용자를 생성합니다.

db.createUser({user: "sample-user", pwd: "abc123", roles: [{role: "read", db: "sample-database"}]})

이 예제에서는 다음이 적용됩니다.

  • user: "sample-user" - 사용자 이름을 나타냅니다.

  • pwd: "abc123" - 사용자 암호를 나타냅니다.

  • role: "read", "db: "sample-database" - sample-user 사용자에게 sample-database에서 읽기 권한이 있음을 나타냅니다.

사용자 이름, 암호 및 사용 권한을 나타내는 createUser 명령을 보여주는 코드 예제입니다.

다음 예제에서는 db.getUser(sample-user)를 사용하여 sample-user 사용자를 가져온 후 출력을 보여 줍니다. 이 예제에서 sample-user 사용자는 admin 데이터베이스에 상주하지만 sample-database데이터베이스에 대한 읽기 역할이 있습니다.

새 사용자 ID를 정의하는 createUser 명령의 결과, 새 사용자가 할당된 관리자 데이터베이스, 사용자에게 적용된 역할 권한을 보여주는 코드 출력 예제입니다.

사용자를 만들 때 역할 지정 시 db 필드를 생략하면 Amazon DocumentDB에서 연결이 실행되는 데이터베이스에 역할의 속성을 암시적으로 지정합니다. 예를 들어, sample-database 데이터베이스에 대해 연결이 실행되고 다음 명령을 실행하면 sample-user 사용자가 admin 데이터베이스에 생성되고 sample-database 데이터베이스에 대한 readWrite 권한이 부여됩니다.

db.createUser({user: "sample-user", pwd: "abc123", roles: ["readWrite"]})

이 작업의 출력은 다음과 같이 표시됩니다.

{ "user":"sample-user", "roles":[ { "db":"sample-database", "role":"readWrite" } ] }

모든 데이터베이스에서 범위가 지정된 역할(예: readAnyDatabase)을 가진 사용자를 생성하려면 사용자를 생성할 때 admin 데이터베이스 컨텍스트에 있거나 사용자를 생성할 때 역할에 대한 데이터베이스를 명백하게 명시해야 합니다. admin 데이터베이스에 대해 명령을 실행하려면 use admin 명령을 사용할 수 있습니다. 자세한 내용은 공통 명령 단원을 참조하십시오.

RBAC 내장된 역할 시작하기

역할 기반 액세스 제어를 시작하는 데 도움이 되도록 이 단원에서는 서로 다른 작업 기능을 가진 세 명의 사용자에 대한 역할을 생성하여 최소 권한을 적용하는 예제 시나리오를 설명합니다.

  • user1은 클러스터의 모든 데이터베이스를 보고 액세스할 수 있어야 하는 새로운 관리자입니다.

  • user2는 동일한 클러스터에서 하나의 데이터베이스 sample-database-1에만 액세스해야 하는 신입 직원입니다.

  • user3은 동일한 클러스터에서 이전에 액세스할 수 없었던 다른 데이터베이스 sample-database-2를 보고 액세스해야 하는 기존 직원입니다.

나중에 user1user2 모두 회사를 떠나서 그들의 액세스를 취소해야 합니다.

사용자를 생성하고 역할을 부여하려면 클러스터에 인증하는 사용자에게 createUsergrantRole에 대한 작업을 수행할 수 있는 연결된 역할이 있어야 합니다. 예를 들어 adminuserAdminAnyDatabase 역할은 모두 이러한 능력을 부여할 수 있습니다. 각 역할의 작업에 대한 자세한 내용은 역할 기반 액세스 제어를 사용한 데이터베이스 액세스 단원을 참조하십시오.

참고

Amazon DocumentDB에서 모든 사용자 및 역할 작업(예: create, get, drop, grant, revoke, admin 등)은 admin 데이터베이스에 대해 명령을 실행하는지 여부에 관계없이 데이터베이스에서 암시적으로 수행됩니다.

먼저 클러스터에 현재 사용자 및 역할이 무엇인지 이해하려면 다음 예제와 같이 show users 명령을 실행할 수 있습니다. 두 명의 사용자, 즉 serviceadmin과 클러스터의 기본 사용자가 표시됩니다. 이 두 사용자는 항상 존재하며 삭제할 수 없습니다. 자세한 내용은 Amazon DocumentDB 사용자 관리 단원을 참조하십시오.

show users

user1의 경우 다음 명령을 사용하여 전체 클러스터의 모든 데이터베이스에 대해 읽기 및 쓰기 액세스 권한이 있는 역할을 만듭니다.

db.createUser({user: "user1", pwd: "abc123", roles: [{role: "readWriteAnyDatabase", db: "admin"}]})

이 작업의 출력은 다음과 같이 표시됩니다.

{ "user":"user1", "roles":[ { "role":"readWriteAnyDatabase", "db":"admin" } ] }

user2의 경우 다음 명령을 사용하여 데이터베이스 sample-database-1에 대한 읽기 전용 액세스 권한이 있는 역할을 만듭니다.

db.createUser({user: "user2", pwd: "abc123", roles: [{role: "read", db: "sample-database-1"}]})

이 작업의 출력은 다음과 같이 표시됩니다.

{ "user":"user2", "roles":[ { "role":"read", "db":"sample-database-1" } ] }

user3이 기존 사용자인 시나리오를 시뮬레이션하려면 먼저 사용자 user3를 만든 다음 user3에 새 역할을 할당합니다.

db.createUser({user: "user3", pwd: "abc123", roles: [{role: "readWrite", db: "sample-database-1"}]})

이 작업의 출력은 다음과 같이 표시됩니다.

{ "user":"user3", "roles":[ { "role":"readWrite", "db":"sample-database-1" } ] }

이제 사용자 user3이 생성되었으므로 user3read, sample-database-2 역할을 할당합니다.

db.grantRolesToUser("user3", [{role: "read", db: "sample-database-2"}])

마지막으로, user1user2 모두 회사를 떠나고 클러스터에 대한 그들의 액세스가 취소되어야 합니다. 다음과 같이 사용자를 삭제하여 이 작업을 수행할 수 있습니다.

db.dropUser("user1") db.dropUser("user2")

모든 사용자에게 적절한 역할이 있는지 확인하려면 다음 명령을 사용하여 모든 사용자를 나열할 수 있습니다.

show users

이 작업의 출력은 다음과 같이 표시됩니다.

{ "_id":"serviceadmin", "user":"serviceadmin", "db":"admin", "roles":[ { "db":"admin", "role":"root" } ] } { "_id":"master-user", "user":"master-user", "db":"admin", "roles":[ { "db":"admin", "role":"root" } ] } { "_id":"user3", "user":"user3", "db":"admin", "roles":[ { "db":"sample-database-2", "role":"read" }, { "db":"sample-database-1", "role":"readWrite" } ] }

RBAC 사용자 정의 역할 시작하기

사용자 정의 역할을 시작하는 데 도움이 되도록 이 단원에서는 서로 다른 작업 기능을 가진 세 명의 사용자에 대한 역할을 생성하여 최소 권한을 적용하는 예제 시나리오를 설명합니다.

이 예에서 이하의 내용이 모두 적용됩니다.

  • user1은 클러스터의 모든 데이터베이스를 보고 액세스할 수 있어야 하는 새로운 관리자입니다.

  • user2은 동일한 클러스터에서 하나의 데이터베이스 sample-database-1에만 ‘찾기’ 작업이 필요한 신입 직원입니다.

  • user3은 동일한 클러스터에서 이전에 액세스할 수 없었던 다른 데이터베이스 sample-database-2 내의 특정 컬렉션, col2를 보고 액세스해야 하는 기존 직원입니다.

  • user1의 경우 다음 명령을 사용하여 전체 클러스터의 모든 데이터베이스에 대해 읽기 및 쓰기 액세스 권한이 있는 역할을 만듭니다.

db.createUser( { user: "user1", pwd: "abc123", roles: [{role: "readWriteAnyDatabase", db: "admin"}] } )

이 작업의 출력은 다음과 같이 표시됩니다.

{ "user":"user1", "roles":[ { "role":"readWriteAnyDatabase", "db":"admin" } ] }

user2의 경우, 다음 명령을 사용하여 데이터베이스 sample-database-1의 모든 컬렉션에 대해 '찾기' 권한이 있는 역할을 생성합니다. 이 역할을 사용하면 연결된 모든 사용자가 찾기 쿼리만 실행할 수 있다는 점에 유의하세요.

db.createRole( { role: "findRole", privileges: [ { resource: {db: "sample-database-1", collection: ""}, actions: ["find"] }], roles: [] } )

이 작업의 출력은 다음과 같이 표시됩니다.

{ "role":"findRole", "privileges":[ { "resource":{ "db":"sample-database-1", "collection":"" }, "actions":[ "find" ] } ], "roles":[ ] }

그런 다음 사용자(user2)를 만들고 최근에 만든 역할을 findRole 사용자에게 연결합니다.

db.createUser( { user: "user2", pwd: "abc123", roles: [] }) db.grantRolesToUser("user2",["findRole"])

user3이 기존 사용자인 시나리오를 시뮬레이션하려면 먼저 사용자 user3를 만든 후, 다음 단계에서 user3에 새 역할을 할당할 collectionRole이라는 새 역할을 생성합니다.

이제 새 역할을 user3에 할당할 수 있습니다. 이 새 역할을 통해 user3sample-database-2 내의 하나의 특정 컬렉션 col2에 액세스를 삽입, 업데이트, 삭제하고 액세스 권한을 찾을 수 있습니다.

db.createUser( { user: "user3", pwd: "abc123", roles: [] }) db.createRole( { role: "collectionRole", privileges: [ { resource: {db: "sample-database-2", collection: "col2"}, actions: ["find", "update", "insert", "remove"] }], roles: [] } )

이 작업의 출력은 다음과 같이 표시됩니다.

{ "role":"collectionRole", "privileges":[ { "resource":{ "db":"sample-database-2", "collection":"col2" }, "actions":[ "find", "update", "insert", "remove" ] } ], "roles":[ ] }

이제 사용자 user3이 생성되었으므로 user3에 역할 collectionFind을 부여합니다.

db.grantRolesToUser("user3",["collectionRole"])

마지막으로, user1user2 모두 회사를 떠나고 클러스터에 대한 그들의 액세스가 취소되어야 합니다. 다음과 같이 사용자를 삭제하여 이 작업을 수행할 수 있습니다.

db.dropUser("user1") db.dropUser("user2")

모든 사용자에게 적절한 역할이 있는지 확인하려면 다음 명령을 사용하여 모든 사용자를 나열할 수 있습니다.

show users

이 작업의 출력은 다음과 같이 표시됩니다.

{ "_id":"serviceadmin", "user":"serviceadmin", "db":"admin", "roles":[ { "db":"admin", "role":"root" } ] } { "_id":"master-user", "user":"master-user", "db":"admin", "roles":[ { "db":"admin", "role":"root" } ] } { "_id":"user3", "user":"user3", "db":"admin", "roles":[ { "db":"admin", "role":"collectionRole" } ] }

Amazon DocumentDB에 사용자로 연결

Amazon DocumentDB 클러스터에 연결할 때 특정 데이터베이스의 컨텍스트에서 연결합니다. 기본적으로 연결 문자열에 데이터베이스를 지정하지 않으면 test 데이터베이스의 컨텍스트에서 클러스터에 자동으로 연결됩니다. test 데이터베이스의 컬렉션에 대해 insertfind 같은 모든 컬렉션 레벨 명령이 발행됩니다.

컨텍스트에 있는 또는, 달리 말해, 명령이 발행되는 데이터베이스를 보려면 다음과 같이 mongo 쉘에서 db 명령을 사용하십시오.

쿼리:

db

출력:

test

기본 연결이 test 데이터베이스 컨텍스트에 있을 수 있지만 해당 연결과 연결된 사용자가 test 데이터베이스에서 작업을 수행할 수 있는 권한이 있는 것은 아닙니다. 앞의 예제 시나리오에서 sample-database-1 데이터베이스에 대한 readWrite 역할이 있는 사용자 user3으로 인증하는 경우 연결의 기본 컨텍스트는 test 데이터베이스입니다. 그러나 test 데이터베이스의 컬렉션에 문서를 삽입하려고 하면 권한 부여 실패 오류 메시지가 나타납니다. 아래와 같이 해당 사용자가 해당 데이터베이스에서 해당 명령을 수행할 권한이 없기 때문입니다.

쿼리:

db

출력:

test

쿼리:

db.col.insert({x:1})

출력:

WriteCommandError({ "ok" : 0, "code" : 13, "errmsg" : "Authorization failure" })

sample-database-1 데이터베이스에 대한 연결 컨텍스트를 변경하면 사용자가 그렇게 할 수 있는 권한을 가진 컬렉션에 쓸 수 있습니다.

쿼리:

use sample-database-1

출력:

switched to db sample-database-1

쿼리:

db.col.insert({x:1})

출력:

WriteResult({ "nInserted" : 1})

특정 사용자를 사용하여 클러스터에 인증하는 경우 연결 문자열에서 데이터베이스를 지정할 수도 있습니다. 이렇게 하면 사용자가 admin 데이터베이스에 인증된 후 use 명령을 수행할 필요가 없습니다.

다음 연결 문자열은 admin 데이터베이스에 대해 사용자를 인증하지만 연결 컨텍스트는 sample-database-1 데이터베이스에 대한 것입니다.

mongo "mongodb://user3:abc123@sample-cluster.node.us-east-1.docdb.amazonaws.com:27017/sample-database-2"

공통 명령

이 단원에서는 Amazon DocumentDB에서 역할 기반 액세스 제어를 사용하는 공통 명령의 예를 제공합니다. 사용자 및 역할을 만들고 수정하려면 admin 데이터베이스의 컨텍스트에 있어야 합니다. use admin 명령을 사용하여 admin 데이터베이스로 전환할 수 있습니다.

참고

사용자 및 역할에 대한 수정은 admin 데이터베이스에서 암시적으로 발생합니다. 모든 데이터베이스에서 범위가 지정된 역할(예: readAnyDatabase)을 가진 사용자를 생성하려면 사용자를 생성할 때 admin 데이터베이스(즉 use admin) 컨텍스트에 있거나 사용자를 생성할 때 역할에 대한 데이터베이스를 명백하게 명시해야 합니다(이 단원의 예제 2 참조).

예제 1: 데이터베이스foo에 대한 read 역할을 가진 사용자를 만듭니다.

db.createUser({user: "readInFooBar", pwd: "abc123", roles: [{role: "read", db: "foo"}]})

이 작업의 출력은 다음과 같이 표시됩니다.

{ "user":"readInFooBar", "roles":[ { "role":"read", "db":"foo" } ] }

예제 2: 모든 데이터베이스에서 읽기 권한이 있는 사용자를 만듭니다.

db.createUser({user: "readAllDBs", pwd: "abc123", roles: [{role: "readAnyDatabase", db: "admin"}]})

이 작업의 출력은 다음과 같이 표시됩니다.

{ "user":"readAllDBs", "roles":[ { "role":"readAnyDatabase", "db":"admin" } ] }

예제 3: 새 데이터베이스의 기존 사용자에게 read 역할을 부여합니다.

db.grantRolesToUser("readInFooBar", [{role: "read", db: "bar"}])

예제 4: 사용자의 역할을 업데이트합니다.

db.updateUser("readInFooBar", {roles: [{role: "read", db: "foo"}, {role: "read", db: "baz"}]})

예제 5: 사용자의 데이터베이스에 대한 액세스 권한을 취소합니다.

db.revokeRolesFromUser("readInFooBar", [{role: "read", db: "baz"}])

예제 6: 기본 제공 역할을 설명합니다.

db.getRole("read", {showPrivileges:true})

이 작업의 출력은 다음과 같이 표시됩니다.

{ "role":"read", "db":"sample-database-1", "isBuiltin":true, "roles":[ ], "inheritedRoles":[ ], "privileges":[ { "resource":{ "db":"sample-database-1", "collection":"" }, "actions":[ "changeStream", "collStats", "dbStats", "find", "killCursors", "listCollections", "listIndexes" ] } ], "inheritedPrivileges":[ { "resource":{ "db":"sample-database-1", "collection":"" }, "actions":[ "changeStream", "collStats", "dbStats", "find", "killCursors", "listCollections", "listIndexes" ] } }

예제 7: 클러스터에서 사용자를 삭제합니다.

db.dropUser("readInFooBar")

이 작업의 출력은 다음과 같이 표시됩니다.

true

예제 8: 특정 컬렉션에 대한 읽기 및 쓰기 권한이 있는 역할 생성합니다.

db.createRole( { role: "collectionRole", privileges: [ { resource: {db: "sample-database-2", collection: "col2"}, actions: ["find", "update", "insert", "remove"] }], roles: [] } )

이 작업의 출력은 다음과 같이 표시됩니다.

{ "role":"collectionRole", "privileges":[ { "resource":{ "db":"sample-database-2", "collection":"col2" }, "actions":[ "find", "update", "insert", "remove" ] } ], "roles":[ ] }

예제 9: 사용자를 생성하고 사용자 정의 역할을 할당합니다.

db.createUser( { user: "user3", pwd: "abc123", roles: [] }) db.grantRolesToUser("user3",["collectionRole"])

예제 10: 사용자 정의 역할에 추가 권한을 부여합니다.

db.grantPrivilegesToRole( "collectionRole", [ { resource: { db: "sample-database-1", collection: "col1" }, actions: ["find", "update", "insert", "remove"] } ] )

예제 11: 사용자 정의 역할에서 권한을 제거합니다.

db.revokePrivilegesFromRole( "collectionRole", [ { resource: { db: "sample-database-1", collection: "col2" }, actions: ["find", "update", "insert", "remove"] } ] )

예제 12: 기존 사용자 정의 역할을 업데이트합니다.

db.updateRole( "collectionRole", { privileges: [ { resource: {db: "sample-database-3", collection: "sample-collection-3"}, actions: ["find", "update", "insert", "remove"] }], roles: [] } )

기능적 차이

Amazon DocumentDB에서, 사용자 및 역할 정의는 admin 데이터베이스에 저장되고 사용자는 admin 데이터베이스에 대해 인증됩니다. 이 기능은 MongoDB Community Edition과 다르지만 MongoDB Atlas와 일치합니다.

Amazon DocumentDB는 또한 클러스터의 컬렉션 내에서 발생하는 변경 이벤트 시퀀스를 시간 순서대로 제공하는 변경 스트림을 지원합니다. listChangeStreams 작업은 클러스터 수준에서(즉, 모든 데이터베이스에 걸쳐) 적용되고 modifyChangeStreams 작업은 데이터베이스 수준 및 클러스터 수준에서 적용됩니다.

Limits

다음 표에는 Amazon DocumentDB의 역할 기반 액세스 제어에 대한 제한이 포함되어 있습니다.

설명 Limit
클러스터당 사용자 수 1000
사용자와 연결된 역할 수 1000
사용자 정의 역할 수 100
권한과 관련된 리소스 수 100

역할 기반 액세스 제어를 사용한 데이터베이스 액세스

역할 기반 액세스 제어를 사용하면 사용자를 생성하고 사용자에게 하나 이상의 역할을 부여하여 사용자가 데이터베이스 또는 클러스터에서 수행할 수 있는 작업을 결정할 수 있습니다.

다음은 Amazon DocumentDB에서 현재 지원되는 기본 제공 역할 목록입니다.

참고

Amazon DocumentDB 4.0 및 5.0에서는, ListCollectionListDatabase 명령을 사용하면 선택적으로 authorizedCollectionsauthorizedDatabases 매개변수를 사용하여 사용자가 각각 listCollectionslistDatabase 역할을 요구하지 않고도 액세스 권한이 있는 컬렉션과 데이터베이스를 나열할 수 있습니다. 또한, 이제 사용자는 KillCursor 역할이 없이도 자신의 커서를 죽일 수도 있습니다.

Database user
역할 이름 설명 작업
read 사용자에게 지정된 데이터베이스에 대한 읽기 액세스 권한을 부여합니다.

changeStreams

collStats

dbStats

find

killCursors

listIndexes

listCollections

readWrite 사용자에게 지정된 데이터베이스에 대한 읽기 및 쓰기 액세스 권한을 부여합니다.

read 권한의 모든 작업.

createCollection

dropCollection

createIndex

dropIndex

insert

killCursors

listIndexes

listCollections

remove

update

Cluster user
역할 이름 설명 작업
readAnyDatabase 사용자에게 클러스터의 모든 데이터베이스에 대한 읽기 권한을 부여합니다.

read 권한의 모든 작업.

listChangeStreams

listDatabases

readWriteAnyDatabase 사용자에게 클러스터의 모든 데이터베이스에 대한 읽기 및 쓰기 액세스 권한을 부여합니다.

readWrite 권한의 모든 작업.

listChangeStreams

listDatabases

userAdminAnyDatabase 사용자에게 지정된 데이터베이스에 대해 사용자가 갖는 역할 또는 권한을 할당하고 수정할 수 있는 기능을 부여합니다.

changeCustomData

changePassword

createUser

dropRole

dropUser

grantRole

listDatabases

revokeRole

viewRole

viewUser

dbAdminAnyDatabase 사용자에게 지정된 데이터베이스에서 데이터베이스 관리 역할을 수행할 수 있는 기능을 부여합니다.

dbAdmin 권한의 모든 작업.

dropCollection

listDatabases

listChangeStreams

modifyChangeStreams

Superuser
역할 이름 설명 작업
root 사용자에게 readWriteAnyDatabase, dbAdminAnyDatabase, userAdminAnyDatabase, clusterAdmin, restorebackup 역할이 결합된 모든 역할의 리소스 및 작업에 대한 액세스 권한을 부여합니다.

readWriteAnyDatabase, dbAdminAnyDatabase, userAdminAnyDatabase, clusterAdmin, restorebackup의 모든 작업

Database administrator
역할 이름 설명 작업
dbAdmin 사용자에게 지정된 데이터베이스에서 관리 작업을 수행할 수 있는 기능을 부여합니다.

bypassDocumentValidation

collMod

collStats

createCollection

createIndex

dropCollection

dropDatabase

dropIndex

dbStats

find

killCursors

listIndexes

listCollections

modifyChangeStreams

dbOwner 사용자에게 dbAdminreadWrite 역할을 결합하여 지정된 데이터베이스에서 모든 관리 작업을 수행할 수 있는 기능을 부여합니다.

dbAdminreadWrite의 모든 작업.

Cluster administrator
역할 이름 설명 작업
clusterAdmin clusterManager, clusterMonitorhostManager 역할을 결합하여 사용자에게 가장 큰 클러스터 관리 액세스 권한을 부여합니다.

clusterManager, clusterMonitorhostManager의 모든 작업.

listChangeStreams

dropDatabase

modifyChangeStreams

clusterManager 사용자에게 지정된 클러스터에서 관리 및 모니터링 작업을 수행할 수 있는 기능을 부여합니다.

listChangeStreams

listSessions

modifyChangeStreams

replSetGetConfig

clusterMonitor 사용자에게 모니터링 도구에 대한 읽기 전용 액세스 기능을 부여합니다.

collStats

dbStats

find

getParameter

hostInfo

indexStats

killCursors

listChangeStreams

listCollections

listDatabases

listIndexes

listSessions

replSetGetConfig

serverStatus

top

hostManager 사용자에게 서버를 모니터링하고 관리할 수 있는 기능을 부여합니다.

auditConfigure

killCursors

killAnyCursor

killAnySession

killop

Backup administrator
역할 이름 설명 작업
backup 사용자에게 데이터를 백업하는 데 필요한 액세스 권한을 부여합니다.

getParameter

insert

find

listChangeStreams

listCollections

listDatabases

listIndexes

update

restore 사용자에게 데이터를 복원하는 데 필요한 액세스 권한을 부여합니다.

bypassDocumentValidation

changeCustomData

changePassword

collMod

createCollection

createIndex

createUser

dropCollection

dropRole

dropUser

getParameter

grantRole

find

insert

listCollections

modifyChangeStreams

revokeRole

remove

viewRole

viewUser

update