Docs 菜单

Docs 主页开发应用程序MongoDB Manual

rolesInfo

在此页面上

  • 定义
  • 兼容性
  • 语法
  • 命令字段
  • 行为
  • 返回单个角色的信息
  • 返回多个角色的信息
  • 返回数据库中所有角色的信息
  • 必需的访问权限
  • 输出
  • 举例
  • 查看单个角色的信息
  • 查看多个角色的信息
  • 查看数据库的所有用户定义角色
  • 查看数据库的所有用户定义角色和内置角色
  • 查看角色的身份验证限制
rolesInfo

返回指定角色的继承和权限信息,包括用户定义的角色内置角色。

rolesInfo命令还可以检索作用域为数据库的所有角色。

此命令可用于以下环境中托管的部署:

  • MongoDB Atlas :用于在云中部署 MongoDB 的完全托管服务

注意

所有 MongoDB Atlas 集群都支持此命令。有关所有命令的信息,请参阅不支持的命令。

该命令具有以下语法:

db.runCommand(
{
rolesInfo: { role: <name>, db: <db> },
showAuthenticationRestrictions: <Boolean>,
showBuiltinRoles: <Boolean>,
showPrivileges: <Boolean>,
comment: <any>
}
)

该命令接受以下字段:

字段
类型
说明
rolesInfo
字符串、文档、数组或整数
要返回相关信息的角色。有关指定角色的语法,请参阅行为。
showAuthenticationRestrictions
布尔

可选。将该字段设置为 true,以在输出中包含身份验证限制。身份验证限制指出了具有此角色的用户可以连接的 IP 地址。

默认情况下,此字段为 false,这意味着 rolesInfo 输出不包含身份验证限制。

showBuiltinRoles
布尔
可选。当rolesInfo字段设置为1时,将showBuiltinRoles设置为true以在输出中包含内置角色。默认情况下,此字段设置为falserolesInfo: 1的输出仅显示用户定义的角色。
showPrivileges
布尔
可选。将该字段设置为true以显示角色权限,包括从其他角色继承的权限和直接定义的权限。默认情况下,该命令仅返回此角色从中继承权限的角色,而不返回特定权限。
comment
注意到

可选。用户提供的待附加到该命令的注释。设置后,该注释将与该命令的记录一起出现在以下位置:

注释可以是任何有效的 BSON 类型(字符串、整型、对象、数组等)。

要指定当前数据库中的角色,请按角色名称指定:

{ rolesInfo: "<rolename>" }

要指定其他数据库中的角色,请通过指定角色和数据库的文档来指定角色:

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

要指定多个角色,请使用数组。将数组中的每个角色指定为文档或字符串。仅当运行命令的数据库上存在该角色时才使用字符串:

{
rolesInfo: [
"<rolename>",
{ role: "<rolename>", db: "<database>" },
...
]
}

要指定运行该命令的数据库中的所有角色,请指定rolesInfo: 1 。默认情况下,MongoDB 会显示数据库中所有用户定义的角色。要同时包含内置角色,请包含参数值对showBuiltinRoles: true

{ rolesInfo: 1, showBuiltinRoles: true }

要查看角色的信息,您必须已被显式授予该角色,或必须有权对该角色的数据库执行 viewRole 操作

rolesInfo.role

角色的名称。

rolesInfo.db

定义角色的数据库。每个数据库都有内置角色。数据库还可能具有用户定义的角色。

rolesInfo.isBuiltin

值为true表示该角色是内置角色。值为false表示该角色是用户定义的角色。

rolesInfo.roles

直接向此角色提供特权的角色以及定义这些角色的数据库。

rolesInfo.inheritedRoles

此角色从中继承特权的所有角色。这包括rolesInfo.roles数组中的角色以及rolesInfo.roles数组中的角色从中继承特权的角色。所有权限都适用于当前角色。此字段中的文档列出了角色以及定义这些角色的数据库。

rolesInfo.privileges

该角色直接指定的权限;即该数组不包括从其他角色继承的特权。默认情况下,输出不包含privileges字段。要包含该字段,请在运行rolesInfo命令时指定showPrivileges: true

每个权限文档指定了资源以及允许对资源执行的操作

rolesInfo.inheritedPrivileges

此角色授予的所有权限,包括从其他角色继承的权限。默认情况下,输出不包含inheritedPrivileges字段。要包含该字段,请在运行rolesInfo命令时指定showPrivileges: true

每个权限文档指定了资源以及允许对资源执行的操作

本节中的示例展示如何使用rolesInfo命令:

以下命令返回products数据库中定义的角色associate的角色继承信息:

db.runCommand(
{
rolesInfo: { role: "associate", db: "products" }
}
)

以下命令返回运行该命令的数据库上角色siteManager的角色继承信息:

db.runCommand(
{
rolesInfo: "siteManager"
}
)

以下命令返回products数据库上定义的角色associate角色继承和特权:

db.runCommand(
{
rolesInfo: { role: "associate", db: "products" },
showPrivileges: true
}
)

以下命令将返回两个不同数据库上两个角色的信息:

db.runCommand(
{
rolesInfo: [
{ role: "associate", db: "products" },
{ role: "manager", db: "resources" }
]
}
)

以下同时返回角色继承和特权:

db.runCommand(
{
rolesInfo: [
{ role: "associate", db: "products" },
{ role: "manager", db: "resources" }
],
showPrivileges: true
}
)

以下操作返回运行该命令的数据库上的所有用户定义角色,并包括特权:

db.runCommand(
{
rolesInfo: 1,
showPrivileges: true
}
)

示例输出(为便于阅读已被缩短):

{
roles: [
{
_id: 'products.associate',
role: 'associate',
db: 'products',
privileges: [
{
resource: { db: 'products', collection: '' },
actions: [ 'bypassDocumentValidation' ]
}
],
roles: [ { role: 'readWrite', db: 'products' } ],
isBuiltin: false,
inheritedRoles: [ { role: 'readWrite', db: 'products' } ],
inheritedPrivileges: [
{
resource: { db: 'products', collection: '' },
actions: [ 'bypassDocumentValidation' ]
},
{
resource: { db: 'products', collection: '' },
actions: [
'changeStream',
'collStats',
'compactStructuredEncryptionData',
...
]
},
...
]
}
],
ok: 1
}

以下操作返回运行该命令的数据库上的所有角色,包括内置角色和用户定义的角色:

db.runCommand(
{
rolesInfo: 1,
showBuiltinRoles: true
}
)

示例输出(为便于阅读已被缩短):

{
roles: [
{
role: 'enableSharding',
db: 'products',
isBuiltin: true,
roles: [],
inheritedRoles: []
},
{
role: 'userAdmin',
db: 'products',
isBuiltin: true,
roles: [],
inheritedRoles: []
},
{
role: 'read',
db: 'products',
isBuiltin: true,
roles: [],
inheritedRoles: []
},
...
],
ok: 1
}

以下操作返回products数据库上的所有用户定义角色,并包括身份验证限制:

db.runCommand(
{
rolesInfo: 1,
showAuthenticationRestrictions: true
}
)

示例输出:

{
roles: [
{
_id: 'products.associate',
role: 'associate',
db: 'products',
roles: [ { role: 'readWrite', db: 'products' } ],
authenticationRestrictions: [
[ { clientSource: [ '198.51.100.0' ] } ]
],
isBuiltin: false,
inheritedRoles: [ { role: 'readWrite', db: 'products' } ],
inheritedAuthenticationRestrictions: [
[ { clientSource: [ '198.51.100.0' ] } ]
]
}
],
ok: 1
}
← revokeRolesFromRole