updateRole
이 페이지의 내용
정의
updateRole
사용자 정의 역할을 업데이트합니다.
updateRole
명령은 역할의 데이터베이스에서 실행되어야 합니다.팁
mongosh
에서 이 명령을db.updateRole()
헬퍼 메서드를 통해서도 실행할 수 있습니다.헬퍼 메서드는
mongosh
사용자에게 편리하지만 데이터베이스 명령과 동일한 수준의 정보를 반환하지 못할 수 있습니다. 편의가 필요하지 않거나 추가 리턴 필드가 필요한 경우 데이터베이스 명령을 사용합니다.필드를 업데이트하면 이전 필드의 값이 완전히 대체 됩니다. 모든 값을 바꾸지 않고 역할이나 권한 을 부여하거나 제거하려면 다음 명령 중 하나 이상을 사용합니다.
경고
privileges
또는roles
배열을 업데이트하면 이전 배열의 값이 완전히 바뀝니다.updateRole
명령은 다음 구문을 사용합니다. 역할을 업데이트하려면privileges
배열,roles
배열 또는 둘 다를 제공해야 합니다.{ updateRole: "<role>", privileges: [ { resource: { <resource> }, actions: [ "<action>", ... ] }, ... ], roles: [ { role: "<role>", db: "<database>" } | "<role>", ... ], authenticationRestrictions: [ { clientSource: ["<IP>" | "<CIDR range>", ...], serverAddress: ["<IP>", ...] }, ... ] writeConcern: <write concern document>, comment: <any> } updateRole
명령에는 다음과 같은 필드가 있습니다.필드유형설명updateRole
문자열업데이트할 사용자 정의 역할 역할의 이름입니다.privileges
배열선택 사항입니다.roles
배열을 지정하지 않는 경우 필수입니다. 역할에 부여할 권한입니다.privileges
배열에 대한 업데이트는 이전 배열의 값을 재정의합니다. 권한을 지정하는 구문은privileges
배열을 참조하세요.roles
배열선택 사항입니다.privileges
배열을 지정하지 않는 경우 필수입니다. 이 역할이 권한을 상속하는 역할입니다.roles
배열에 대한 업데이트는 이전 배열의 값을 재정의합니다.authenticationRestrictions
배열선택 사항. .. include:: /includes/fact-auth-restrictions-role-desc.rstwriteConcern
문서comment
어떤선택 사항. 이 명령에 첨부할 사용자 제공 코멘트입니다. 설정되면 이 설명은 다음 위치에서 이 명령의 레코드와 함께 표시됩니다.
mongod 로그 메시지(
attr.command.cursor.comment
필드).데이터베이스 프로파일러 출력의
command.comment
필드에 있습니다.currentOp
{command.comment
5} 필드에 출력을 입력합니다.
댓글은 유효한 모든 BSON types (문자열, 정수, 객체, 배열 등)이 될 수 있습니다.
역할
roles
필드에서 기본 제공 역할과 사용자 정의 역할을 모두 지정할 수 있습니다.
updateRole
가 실행되는 동일한 데이터베이스에 존재하는 역할을 지정하려면 역할의 이름과 함께 역할을 지정할 수 있습니다.
"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의 인증에 대한 자세한 내용은 인증을 참조하세요.
행동
역할의 권한은 역할이 생성된 데이터베이스에 적용됩니다. 역할은 데이터베이스에 있는 다른 역할로부터 권한을 상속받을 수 있습니다. admin
데이터베이스에서 생성된 역할은 모든 데이터베이스 또는 클러스터에 적용되는 권한을 포함할 수 있으며 다른 데이터베이스의 역할로부터 권한을 상속할 수 있습니다.
필요한 액세스 권한
역할을 업데이트하려면 모든 데이터베이스에 revokeRole
작업이 있어야 합니다.
배열을 업데이트하려면 roles
배열에 있는 각 역할의 데이터베이스에 grantRole
작업이 있어야 합니다.
배열을 업데이트하려면 privileges
배열에 있는 각 권한의 데이터베이스에 대해 grantRole
작업이 있어야 합니다. 권한의 리소스가 데이터베이스에 걸쳐 있는 경우 admin
데이터베이스에 grantRole
이 있어야 합니다. 권한이 다음 중 하나에 해당하는 경우 권한은 데이터베이스에 걸쳐 있습니다.
모든 데이터베이스의 컬렉션
모든 컬렉션 및 모든 데이터베이스
cluster
리소스
역할의 authenticationRestrictions
문서를 업데이트하려면 대상 역할의 데이터베이스에 setAuthenticationRestriction
작업이 있어야 합니다.
예제
다음은 admin
데이터베이스에서 myClusterwideAdmin
역할을 업데이트하는 updateRole
명령의 예입니다. privileges
} 배열과 roles
배열은 모두 선택 사항이지만 둘 중 하나 이상은 필수입니다.
db.adminCommand( { updateRole: "myClusterwideAdmin", privileges: [ { resource: { db: "", collection: "" }, actions: [ "find" , "update", "insert", "remove" ] } ], roles: [ { role: "dbAdminAnyDatabase", db: "admin" } ], writeConcern: { w: "majority" } } )
역할의 권한을 보려면 rolesInfo
명령을 사용합니다.