revokePrivilegesFromRole
定义
revokePrivilegesFromRole
删除运行该命令的数据库上用户定义角色的指定权限。
提示
在
mongosh
中,还可以通过db.revokePrivilegesFromRole()
辅助方法运行此命令。辅助方法对
mongosh
用户来说很方便,但它们返回的信息级别可能与数据库命令不同。如果不追求方便或需要额外的返回字段,请使用数据库命令。
兼容性
此命令可用于以下环境中托管的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
重要
M 0 、M 2和 M 5集群不支持此命令。 有关更多信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
该命令具有以下语法:
db.runCommand( { revokePrivilegesFromRole: "<role>", privileges: [ { resource: { <resource> }, actions: [ "<action>", ... ] }, ... ], writeConcern: <write concern document>, comment: <any> } )
命令字段
该命令接受以下字段:
字段 | 类型 | 说明 |
---|---|---|
| 字符串 | 要撤销其中的权限的用户定义角色。 |
| 阵列 | 要从角色中删除的权限数组。 有关权限格式的更多信息,请参阅 |
| 文档 | |
| any | 可选。用户提供的待附加到该命令的注释。设置后,该注释将与该命令的记录一起出现在以下位置:
注释可以是任何有效的 BSON 类型(字符串、整型、对象、数组等)。 |
行为
要撤销权限,资源文档模式必须与该权限的resource
字段完全匹配。 actions
字段可以是子集,也可以完全匹配。
例如,假设products
数据库中的accountRole
角色具有将products
数据库指定为资源的以下特权:
{ "resource" : { "db" : "products", "collection" : "" }, "actions" : [ "find", "update" ] }
您无法仅从products
数据库中的一个集合中撤销find
和/或update
。 以下操作不会导致角色发生变化:
use products db.runCommand( { revokePrivilegesFromRole: "accountRole", privileges: [ { resource : { db : "products", collection : "gadgets" }, actions : [ "find", "update" ] } ] } ) db.runCommand( { revokePrivilegesFromRole: "accountRole", privileges: [ { resource : { db : "products", collection : "gadgets" }, actions : [ "find" ] } ] } )
要撤销角色accountRole
中的"find"
和/或"update"
操作,必须与资源文档完全匹配。 例如,以下操作仅撤销现有特权中的"find"
操作。
use products db.runCommand( { revokePrivilegesFromRole: "accountRole", privileges: [ { resource : { db : "products", collection : "" }, actions : [ "find" ] } ] } )
必需的访问权限
您必须对特权的目标数据库执行revokeRole
操作才能撤销该特权。 如果特权针对多个数据库或cluster
资源,则必须对admin
数据库拥有revokeRole
操作。
例子
以下操作会从products
数据库中的associates
角色中删除多个权限:
use products db.runCommand( { revokePrivilegesFromRole: "associate", privileges: [ { resource: { db: "products", collection: "" }, actions: [ "createCollection", "createIndex", "find" ] }, { resource: { db: "products", collection: "orders" }, actions: [ "insert" ] } ], writeConcern: { w: "majority" } } )