Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / /

자체 관리형 배포서버의 기본 제공 역할

이 페이지의 내용

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

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

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

시스템 컬렉션 에는 다음 항목이 포함됩니다.

  • <database>.system.* namespace

  • local.replset.* 복제본 세트 네임스페이스

자세한 내용은 시스템 컬렉션을 참조하세요.

비시스템 컬렉션 은 이전 목록의 네임스페이스에 없는 컬렉션입니다.

MongoDB의 각 내장 역할은 해당 역할의 데이터베이스 에 있는 모든 시스템 컬렉션에 대한 데이터베이스 수준과 모든 시스템 컬렉션에 대한 컬렉션 수준에서 액세스 를 정의합니다.

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

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

  • MongoDB Atlas 기본 제공 역할

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

MongoDB Atlas 에서 호스팅되는 배포 내장 데이터베이스 사용자 역할은 Altas 기본 제공 역할 및 권한을 참조하세요.

MongoDB Atlas 사용자 인터페이스에서 데이터베이스 사용자를 생성하고 내장 역할을 할당할 수 있습니다. 학습 내용은 데이터베이스 사용자 추가를 참조하세요.

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

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

read

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

참고

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

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

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

readWrite

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

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

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

dbAdmin

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

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

Resource
허용된 조치

모든 시스템 컬렉션(즉, 데이터베이스 리소스)

dbOwner

데이터베이스 소유자는 데이터베이스에 대해 모든 관리 조치를 수행할 수 있습니다. 이 역할은 readWrite, dbAdmin, userAdmin 역할이 부여하는 권한을 조합합니다.

userAdmin

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

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

경고

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

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

clusterAdmin

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

clusterManager

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

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

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

clusterMonitor

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

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

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

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

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

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

directShardOperations

MongoDB 8.0부터 directShardOperations 역할을 사용하여 샤드에 대해 직접 명령을 실행해야 하는 유지 관리 작업을 수행할 수 있습니다.

경고

directShardOperations 역할 을 사용하여 명령을 실행하면 클러스터 가 올바르게 작동하지 않고 데이터가 손상될 수 있습니다. directShardOperations 역할 은 유지 관리 목적으로만 사용하거나 MongoDB 지원 의 지침 에 따라 사용하세요. 유지 관리 작업 수행이 완료되면 directShardOperations 역할 사용을 중지합니다.

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

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

system.profile

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

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

--oplogReplay

--oplogReplay를 사용하여 실행하려면 anyResourceanyAction이 있는 사용자 정의 역할을 생성하십시오.

--oplogReplaymongorestore를 실행해야 하는 사용자에게만 부여하세요.

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

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

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부터 dbAdminAnyDatabaseApplyOps 권한 조치가 포함됩니다.

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

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

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

root

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

또한 다음과 같은 권한 조치를 제공합니다.

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

__system

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

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

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

돌아가기

역할 기반 액세스 제어