문서 홈 → 애플리케이션 개발 → MongoDB 매뉴얼
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
필드는 역할의 이름을 지정하는 문자열입니다.
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> } 또는
{ 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
데이터베이스의 모든 컬렉션에 대한 작업( "insert"
, "dbStats"
, "collStats"
, "compact"
)을 허용하는 단일 권한이 있습니다. 데이터베이스를 리소스로 지정을 참조하세요.
roles
배열은 역할 이름과 데이터베이스로 식별되는 역할을 나열하며, 이 역할로부터 appAdmin
역할이 권한을 상속합니다.