system.roles
자체 관리형 배포의 컬렉션
이 페이지의 내용
admin
데이터베이스 의 system.roles
컬렉션 은 사용자 정의 역할을 저장합니다. 이러한 사용자 정의 역할을 생성하고 관리 하기 위해 MongoDB 는 역할 관리 명령을 제공합니다.
system.roles
스키마
system.roles
컬렉션의 문서에는 다음과 같은 스키마가 있습니다.
{ _id: <system-defined id>, role: "<role name>", db: "<database>", privileges: [ { resource: { <resource> }, actions: [ "<action>", ... ] }, ... ], roles: [ { role: "<role name>", db: "<database>" }, ... ] }
system.roles
문서에 다음과 같은 필드가 있습니다.
admin.system.roles.role
role
필드는 역할의 이름을 지정하는 string 입니다.
admin.system.roles.db
db
필드는 역할이 속해 있는 데이터베이스를 지정하는 문자열입니다. MongoDB는 이름(예:role
)과 해당 데이터베이스의 쌍을 통해 각 역할을 고유하게 식별합니다.
admin.system.roles.privileges
privileges
배열에는 역할에 대한 권한을 정의하는 권한 문서가 포함되어 있습니다.권한 문서에는 다음과 같은 구문이 있습니다.
{ resource: { <resource> }, actions: [ "<action>", ... ] } 각 권한 문서 에는 다음과 같은 필드가 있습니다.
admin.system.roles.privileges[n].resource
actions
권한 이 적용 되는 리소스를 지정하는 문서 입니다. 문서 의 형식은 다음 중 하나입니다.{ db: <database>, collection: <collection> } or
{ cluster : true } 자세한 내용 은 자체 관리 배포서버에 대한 리소스 문서를 참조하세요.
admin.system.roles.privileges[n].actions
리소스 에 허용된 작업의 배열 입니다. 작업 목록은 자체 관리형 배포서버에 대한 권한 작업을 참조하세요.
admin.system.roles.roles
roles
배열 에는 이 역할 이 권한을 상속 하는 역할을 지정하는 역할 문서가 포함되어 있습니다.역할 문서에는 다음과 같은 구문이 있습니다.
{ role: "<role name>", db: "<database>" } 역할 문서에는 다음과 같은 필드가 있습니다.
admin.system.roles.roles[n].role
역할 의 이름입니다. 역할 은 MongoDB 내장 제공 역할 또는 사용자 정의 역할 일 수 있습니다.
예시
admin
데이터베이스 의 system.roles
컬렉션 에 있는 다음 샘플 문서를 살펴보겠습니다.
사용자 정의 역할이 권한을 지정합니다.
다음은 myApp
데이터베이스에 대해 정의된 사용자 정의 역할 appUser
에 대한 샘플 문서입니다.
{ _id: "myApp.appUser", role: "appUser", db: "myApp", privileges: [ { resource: { db: "myApp" , collection: "" }, actions: [ "find", "createCollection", "dbStats", "collStats" ] }, { resource: { db: "myApp", collection: "logs" }, actions: [ "insert" ] }, { resource: { db: "myApp", collection: "data" }, actions: [ "insert", "update", "remove", "compact" ] }, { resource: { db: "myApp", collection: "system.js" }, actions: [ "find" ] }, ], roles: [] }
privileges
배열 에는 appUser
역할 이 지정하는 5개의 권한이 나열됩니다.
첫 번째 권한은 시스템 컬렉션을 제외한
myApp
데이터베이스의 모든 컬렉션에 대한 작업("find"
,"createCollection"
,"dbStats"
,"collStats"
)을 허용합니다. 데이터베이스를 리소스로 지정을 참조하세요.다음 두 권한은
myApp
데이터베이스 의 특정 컬렉션logs
및data
에 대한 추가 작업을 허용합니다. 데이터베이스 컬렉션을 리소스로 지정을 참조하세요.마지막 권한 은
myApp
데이터베이스 에 있는 하나의 시스템 컬렉션 에 대한 작업을 허용합니다. 첫 번째 권한 은find
조치 에 대한 데이터베이스 전체 권한을 부여하지만, 이 조치 은myApp
의 시스템 컬렉션에는 적용 되지 않습니다. 시스템 컬렉션 에 액세스 을 부여하려면 권한 이 컬렉션 을 명시적으로 지정해야 합니다. 자체 관리 배포서버에 대한 리소스 문서를 참조하세요.
빈 roles
배열에서 알 수 있듯이 appUser
는 다른 역할에서 추가 권한을 상속하지 않습니다.
다른 역할에서 상속되는 사용자 정의 역할
다음은 myApp
데이터베이스에 정의된 사용자 정의 역할 appAdmin
에 대한 샘플 문서입니다. 문서는 appAdmin
역할이 권한을 지정하고 다른 역할로부터 권한을 상속한다는 것을 보여줍니다.
{ _id: "myApp.appAdmin", role: "appAdmin", db: "myApp", privileges: [ { resource: { db: "myApp", collection: "" }, actions: [ "insert", "dbStats", "collStats", "compact" ] } ], roles: [ { role: "appUser", db: "myApp" } ] }
privileges
배열은 appAdmin
역할이 지정하는 권한을 나열합니다. 이 역할은 시스템 컬렉션을 제외한 myApp
데이터베이스의 모든 collection에 대한 조치( "insert"
, "dbStats"
, "collStats"
, "compact"
를 허용하는 단일 권한을 갖습니다. 데이터베이스를 리소스로 지정을 참조하세요.
roles
배열에는 역할 이름과 데이터베이스로 식별되는 역할이 나열되며, 해당 역할 appAdmin
에서 권한이 상속됩니다.