정의
db.updateRole( rolename, update, writeConcern )Updates a user-defined role. The
db.updateRole()method must run on the role's database.중요
Mongo쉬 방법
This page documents a
mongoshmethod. This is not the documentation for database commands or language-specific drivers, such as Node.js.데이터베이스 명령에 대해서는
updateRole명령을 참조하십시오.MongoDB API 드라이버의 경우 언어별 MongoDB 드라이버 설명서를 참조하세요.
필드를 업데이트하면 이전 필드의 값이 완전히 바뀝니다. 모든 값을 바꾸지 않고 역할 또는 권한을 부여하거나 제거하려면 다음 방법 중 하나 이상을 사용합니다.
경고
privileges또는roles배열을 업데이트하면 이전 배열의 값이 완전히 바뀝니다.The
db.updateRole()method uses the following syntax:db.updateRole( "<rolename>", { privileges: [ { resource: { <resource> }, actions: [ "<action>", ... ] }, ... ], roles: [ { role: "<role>", db: "<database>" } | "<role>", ... ], authenticationRestrictions: [ { clientSource: ["<IP>" | "<CIDR range>", ...], serverAddress: ["<IP>", | "<CIDR range>", ...] }, ... ] }, { <writeConcern> } ) The
db.updateRole()method accepts the following arguments:Parameter유형설명rolename문자열
업데이트할 사용자 정의 역할의 이름입니다.
update문서
사용자의 대체 데이터가 포함된 문서입니다. 이 데이터는 사용자의 해당 데이터를 완전히 대체합니다.
writeConcern문서
update문서는 업데이트할 필드와 해당 새 값을 지정합니다.update문서의 각 필드는 선택사항이지만 문서에는 필드가 하나 이상 포함되어야 합니다.update문서에 다음과 같은 필드가 있습니다.필드유형설명privileges배열
선택 사항입니다.
roles배열을 지정하지 않는 경우 필수입니다. 역할에 부여할 권한입니다.privileges배열에 대한 업데이트는 이전 배열의 값을 재정의합니다. 권한을 지정하는 구문은privileges배열을 참조하세요.roles배열
선택 사항입니다.
privileges배열을 지정하지 않는 경우 필수입니다. 이 역할이 권한을 상속하는 역할입니다.roles배열에 대한 업데이트는 이전 배열의 값을 재정의합니다.authenticationRestrictions배열
선택 사항.
서버가 이 역할에 대해 시행하는 인증 제한입니다. 이 역할을 부여받은 사용자에게 연결이 허용되거나 연결할 수 있는 IP 주소 및 CIDR 범위의 목록을 지정합니다.
The
db.updateRole()method wraps theupdateRolecommand.
호환성
이 메서드는 다음 환경에서 호스팅되는 배포에서 사용할 수 있습니다.
중요
이 명령은 MongoDB Atlas 클러스터에서 지원되지 않습니다. 모든 명령에 대한 Atlas 지원에 관해 자세히 알아보려면 지원되지 않는 명령을 참조하세요.
MongoDB Enterprise: MongoDB의 구독 기반 자체 관리 버전
MongoDB Community: MongoDB의 소스 사용 가능 무료 자체 관리 버전
역할
roles 필드에서 기본 제공 역할과 사용자 정의 역할을 모두 지정할 수 있습니다.
To specify a role that exists in the same database where db.updateRole() runs, you can either specify the role with the name of the role:
"readWrite"
또는 다음과 같이 문서로 역할을 지정할 수도 있습니다.
{ role: "<role>", db: "<database>" }
다른 데이터베이스에 존재하는 역할을 지정하려면 문서를 사용하여 역할을 지정합니다.
인증 제한
authenticationRestrictions 문서에는 다음 필드만 포함될 수 있습니다. authenticationRestrictions 문서에 인식할 수 없는 필드가 포함되어 있으면 서버에서 오류를 발생시킵니다.
필드 이름 | 값 | 설명 |
|---|---|---|
| IP 주소 및/또는 CIDR 범위의 배열 | 존재하는 경우, 사용자를 인증할 때 서버는 클라이언트의 IP 주소가 지정된 목록에 있거나 목록에 있는 CIDR 범위에 속하는지 확인합니다. 클라이언트의 IP 주소가 없는 경우 서버는 사용자를 인증하지 않습니다. |
| IP 주소 및/또는 CIDR 범위의 배열 | 클라이언트가 연결할 수 있는 IP 주소 또는 CIDR 범위의 목록입니다. 존재하는 경우, 서버는 주어진 목록의 IP 주소를 통해 클라이언트의 연결이 승인되었는지 확인합니다. 인식할 수 없는 IP 주소를 통해 연결이 수락된 경우 서버는 사용자를 인증하지 않습니다. |
중요
사용자가 인증 제한이 호환되지 않는 여러 역할을 상속하는 경우 해당 사용자는 사용할 수 없게 됩니다.
예를 들어, 사용자가 clientSource 필드가 ["198.51.100.0"]인 역할과 clientSource 필드가 ["203.0.113.0"]인 다른 역할을 상속하는 경우 서버는 사용자를 인증할 수 없습니다.
MongoDB 의 인증 에 대한 자세한 내용 은 자체 관리형 배포서버에 대한 인증을 참조하세요.
행동
복제본 세트
If run on a replica set, db.updateRole() is executed using "majority" write concern by default.
범위
admin 데이터베이스에서 만든 역할을 제외하고 역할은 해당 데이터베이스에 적용되는 권한만 포함할 수 있으며 해당 데이터베이스의 다른 역할로부터만 상속할 수 있습니다.
admin 데이터베이스에서 만든 역할에는 admin 데이터베이스, 다른 데이터베이스 또는 클러스터 리소스에 적용되는 권한이 포함될 수 있으며, admin 데이터베이스뿐만 아니라 다른 데이터베이스의 역할에서 상속될 수 있습니다.
권한
privileges 배열 지정하면 데이터베이스의 여러 컬렉션 또는 전체 데이터베이스에 적용 권한 을 지정할 수 있습니다.
다음 구문은 products 데이터베이스 의 여러 컬렉션에 대한 권한을 지정합니다.
privileges: [ { resource: { db: 'products', collection: 'coll1' }, actions: [ 'bypassDocumentValidation' ] }, { resource: { db: 'products', collection: 'coll2' }, actions: [ 'bypassDocumentValidation' ] } ]
다음 구문은 products 데이터베이스 의 모든 컬렉션에 대한 권한을 지정합니다.
privileges: [ { resource: { db: 'products', collection: '' }, actions: [ 'bypassDocumentValidation' ] } ]
필요한 액세스 권한
역할을 업데이트하려면 모든 데이터베이스에 revokeRole 작업이 있어야 합니다.
배열을 업데이트하려면 roles 배열에 있는 각 역할의 데이터베이스에 grantRole 작업이 있어야 합니다.
배열을 업데이트하려면 privileges 배열에 있는 각 권한의 데이터베이스에 대해 grantRole 작업이 있어야 합니다. 권한의 리소스가 데이터베이스에 걸쳐 있는 경우 admin 데이터베이스에 grantRole이 있어야 합니다. 권한이 다음 중 하나에 해당하는 경우 권한은 데이터베이스에 걸쳐 있습니다.
모든 데이터베이스의 컬렉션
모든 컬렉션 및 모든 데이터베이스
cluster리소스
역할의 authenticationRestrictions 문서를 업데이트하려면 대상 역할의 데이터베이스에 setAuthenticationRestriction 작업이 있어야 합니다.
예시
The following db.updateRole() method replaces the privileges and the roles for the inventoryControl role that exists in the products database. The method runs on the database that contains inventoryControl:
use products db.updateRole( "inventoryControl", { privileges: [ { resource: { db:"products", collection:"clothing" }, actions: [ "update", "createCollection", "createIndex"] } ], roles: [ { role: "read", db: "products" } ] }, { w:"majority" } )
역할의 권한을 보려면 rolesInfo 명령을 사용합니다.