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

db.createRole()

이 페이지의 내용

  • 정의
  • 행동
  • 필요한 액세스 권한
  • 예시
db.createRole(role, writeConcern)

데이터베이스에 역할을 생성합니다. 권한을 명시적으로 나열하거나, 역할이 다른 역할의 권한을 상속받거나, 나열과 상속 둘 다 진행하여 역할에 대한 권한을 지정할 수 있습니다. 이 역할은 메서드를 실행하는 데이터베이스에 적용됩니다.

중요

Mongo쉬 방법

이 페이지에서는 mongosh 메서드를 설명합니다. 이는 데이터베이스 명령 또는 Node.js와 같은 언어별 드라이버에 대한 설명서가 아닙니다.

데이터베이스 명령의 경우 createRole 명령을 참조하세요.

MongoDB API 드라이버의 경우 언어별 MongoDB 드라이버 설명서를 참조하세요.

db.createRole() 메소드는 다음 인수를 허용합니다.

Parameter
유형
설명
role
문서
역할의 이름과 역할 정의가 포함된 문서입니다.
writeConcern
문서

선택 사항입니다. 작업에 대한 쓰기 고려 수준입니다. 쓰기 고려 사양을 참조하세요.

role 문서의 형식은 다음과 같습니다.

{
role: "<name>",
privileges: [
{ resource: { <resource> }, actions: [ "<action>", ... ] },
...
],
roles: [
{ role: "<role>", db: "<database>" } | "<role>",
...
],
authenticationRestrictions: [
{
clientSource: ["<IP>" | "<CIDR range>", ...],
serverAddress: ["<IP>" | "<CIDR range>", ...]
},
...
]
}

role 문서에 다음과 같은 필드가 있습니다:

필드
유형
설명
role
문자열
새 역할의 이름입니다.
privileges
배열

역할에 부여할 권한입니다. 권한은 리소스와 허용된 작업으로 구성됩니다. 권한의 구문은 privileges 배열을 참조하세요.

privileges 필드를 포함시켜야 합니다. 권한을 지정하지 않으려면 빈 배열을 사용하세요.

roles
배열

이 역할에게 권한을 상속해 주는 역할의 배열입니다.

roles 필드를 포함시켜야 합니다. 상속의 출처가 될 역할을 지정하지 않으려면 빈 배열을 사용하세요.

authenticationRestrictions
배열

선택 사항.

서버가 이 역할에 대해 시행하는 인증 제한입니다. 이 역할을 부여받은 사용자에게 연결이 허용되거나 연결의 시작점이 될 수 있는 IP 주소 및 CIDR 범위의 목록을 지정합니다.

버전 3.6에 새로 추가되었습니다.

roles 필드에서 기본 제공 역할사용자 정의 역할을 모두 지정할 수 있습니다.

db.createRole()가 실행되는 동일한 데이터베이스에 존재하는 역할을 지정하려면 역할의 이름과 함께 역할을 지정할 수 있습니다.

"readWrite"

또는 다음과 같이 문서로 역할을 지정할 수도 있습니다.

{ role: "<role>", db: "<database>" }

다른 데이터베이스에 존재하는 역할을 지정하려면 문서를 사용하여 역할을 지정합니다.

버전 3.6에 새로 추가되었습니다.

authenticationRestrictions 문서에는 다음 필드 포함될 수 있습니다. authenticationRestrictions 문서에 인식할 수 없는 필드가 포함되어 있으면 서버에서 오류를 발생시킵니다.

필드 이름
설명
clientSource
IP 주소 및/또는 CIDR 범위의 배열
존재하는 경우, 사용자를 인증할 때 서버는 클라이언트의 IP 주소가 지정된 목록에 있거나 목록에 있는 CIDR 범위에 속하는지 확인합니다. 클라이언트의 IP 주소가 없는 경우 서버는 사용자를 인증하지 않습니다.
serverAddress
IP 주소 및/또는 CIDR 범위의 배열
클라이언트가 연결할 수 있는 IP 주소 또는 CIDR 범위의 목록입니다. 존재하는 경우, 서버는 주어진 목록의 IP 주소를 통해 클라이언트의 연결이 승인되었는지 확인합니다. 인식할 수 없는 IP 주소를 통해 연결이 수락된 경우 서버는 사용자를 인증하지 않습니다.

중요

사용자가 인증 제한이 호환되지 않는 여러 역할을 상속하는 경우 해당 사용자는 사용할 수 없게 됩니다.

예를 들어, 사용자가 clientSource 필드가 ["198.51.100.0"]인 역할과 clientSource 필드가 ["203.0.113.0"]인 다른 역할을 상속하는 경우 서버는 사용자를 인증할 수 없습니다.

MongoDB의 인증에 대한 자세한 내용은 인증을 참조하세요.

복제본 세트에서 실행할 경우, db.createRole()는 기본값으로 "majority" 쓰기 고려(write concern)를 사용하여 실행됩니다.

admin 데이터베이스에서 만든 역할을 제외하고 역할은 해당 데이터베이스에 적용되는 권한만 포함할 수 있으며 해당 데이터베이스의 다른 역할로부터만 상속할 수 있습니다.

admin 데이터베이스에서 만든 역할에는 admin 데이터베이스, 다른 데이터베이스 또는 클러스터 리소스에 적용되는 권한이 포함될 수 있으며, admin 데이터베이스뿐만 아니라 다른 데이터베이스의 역할에서 상속될 수 있습니다.

db.createRole() 메서드는 데이터베이스에 이미 역할이 있는 경우 역할 중복 오류를 반환합니다.

데이터베이스에서 역할을 생성하려면 다음 항목이 있어야 합니다.

  • 해당 데이터베이스 리소스에 대한 createRole 작업

  • 해당 데이터베이스에 대한 grantRole 작업이 있으면 새 역할의 권한은 물론 상속의 출처가 될 역할까지 지정할 수 있습니다.

기본 제공 역할인 userAdminuserAdminAnyDatabase은(는) 각자의 리소스에 대해 createRole 작업 및 grantRole 작업을 제공합니다.

authenticationRestrictions이(가) 지정된 역할을 생성하려면 이 역할이 생성되는 데이터베이스 리소스에 대한 setAuthenticationRestriction 작업이 있어야 합니다.

다음 db.createRole() 메서드는 admin 데이터베이스에 myClusterwideAdmin 역할을 생성합니다.

use admin
db.createRole(
{
role: "myClusterwideAdmin",
privileges: [
{ resource: { cluster: true }, actions: [ "addShard" ] },
{ resource: { db: "config", collection: "" }, actions: [ "find", "update", "insert", "remove" ] },
{ resource: { db: "users", collection: "usersCollection" }, actions: [ "update", "insert", "remove" ] },
{ resource: { db: "", collection: "" }, actions: [ "find" ] }
],
roles: [
{ role: "read", db: "admin" }
]
},
{ w: "majority" , wtimeout: 5000 }
)

돌아가기

역할 관리