문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

system.roles 컬렉션

이 페이지의 내용

  • system.roles 스키마
  • 예제

admin 데이터베이스의 system.roles 컬렉션은 사용자 정의 역할을 저장합니다. 이러한 사용자 정의 역할을 생성하고 관리하기 위해 MongoDB는 역할 관리 명령을 제공합니다.

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.roles[n].db

역할이 정의된 데이터베이스의 이름입니다.

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 데이터베이스의 특정 컬렉션 logsdata 에 대한 추가 작업을 허용합니다. 데이터베이스 컬렉션을 리소스로 지정을 참조하세요.

  • 마지막 권한은 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 역할이 권한을 상속합니다.

← 보안 참조

이 페이지의 내용