Docs 菜单

Docs 主页开发应用程序MongoDB Manual

db.revokePrivilegesFromRole()

在此页面上

  • 定义
  • 行为
  • 必需的访问权限
  • 例子
db.revokePrivilegesFromRole(rolename, privileges, writeConcern)

在该方法运行的数据库上,删除用户定义角色的指定特权。

重要

mongosh 方法

本页介绍了 mongosh方法。这不是数据库命令或特定语言驱动程序(例如 Node.js)的文档。

有关数据库命令,请参阅 revokePrivilegesFromRole 命令。

对于 MongoDB API 驱动程序,请参阅特定语言的MongoDB 驱动程序文档。

对于传统 mongo Shell 文档,请参阅相应 MongoDB Server 版本的文档:

mongo shell v4.4

db.revokePrivilegesFromRole()方法采用以下语法:

db.revokePrivilegesFromRole(
"<rolename>",
[
{ resource: { <resource> }, actions: [ "<action>", ... ] },
...
],
{ <writeConcern> }
)

db.revokePrivilegesFromRole()方法接受以下参数:

范围
类型
说明
rolename
字符串
要撤销权限的用户定义角色的名称。
privileges
阵列
要从角色中删除的权限数组。有关权限格式的更多信息,请参阅privileges
writeConcern
文档

可选。操作的写关注级别。请参阅写关注规范

如果在副本集上运行,则默认情况下使用 写关注执行db.revokePrivilegesFromRole() "majority"

要撤销权限,资源文档模式必须与该权限的resource字段完全匹配。 actions字段可以是子集,也可以完全匹配。

例如,假设products数据库中的accountRole角色具有将products数据库指定为资源的以下特权:

{
"resource" : {
"db" : "products",
"collection" : ""
},
"actions" : [
"find",
"update"
]
}

无法仅从products数据库中的一个集合中撤销find和/或update 。以下操作不会导致角色发生变化:

use products
db.revokePrivilegesFromRole(
"accountRole",
[
{
resource : {
db : "products",
collection : "gadgets"
},
actions : [
"find",
"update"
]
}
]
)
db.revokePrivilegesFromRole(
"accountRole",
[
{
resource : {
db : "products",
collection : "gadgets"
},
actions : [
"find"
]
}
]
)

要撤销角色accountRole中的"find"和/或"update"操作,必须与资源文档完全匹配。例如,以下操作仅撤销现有特权中的"find"操作。

use products
db.revokePrivilegesFromRole(
"accountRole",
[
{
resource : {
db : "products",
collection : ""
},
actions : [
"find"
]
}
]
)

您必须对特权的目标数据库执行revokeRole操作才能撤销该特权。如果特权针对多个数据库或cluster资源,则必须对admin数据库拥有revokeRole操作。

以下操作会删除associates角色的多个特权:

db.revokePrivilegesFromRole(
"associate",
[
{
resource: { db: "products", collection: "" },
actions: [ "createCollection", "createIndex", "find" ]
},
{
resource: { db: "products", collection: "orders" },
actions: [ "insert" ]
}
],
{ w: "majority" }
)
← db.grantPrivilegesToRole()