rolesInfo
在此页面上
定义
兼容性
此命令可用于以下环境中托管的部署:
MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务
注意
所有 MongoDB Atlas 集群都支持此命令。有关 Atlas 对所有命令的支持的信息,请参阅不支持的命令。
MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本
MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本
语法
该命令具有以下语法:
db.runCommand( { rolesInfo: { role: <name>, db: <db> }, showAuthenticationRestrictions: <Boolean>, showBuiltinRoles: <Boolean>, showPrivileges: <Boolean>, comment: <any> } )
命令字段
该命令接受以下字段:
字段 | 类型 | 说明 |
---|---|---|
rolesInfo | 字符串、文档、数组或整数 | 要返回相关信息的角色。 有关指定角色的语法,请参阅行为。 |
showAuthenticationRestrictions | 布尔 | 可选。将该字段设置为 默认情况下,此字段为 |
showBuiltinRoles | 布尔 | |
showPrivileges | 布尔 | 可选。 将该字段设置为 true 以显示角色权限,包括从其他角色继承的权限和直接定义的权限。 默认,该命令仅返回此角色从中继承权限的角色,而不返回特定权限。 |
comment | any | 可选。用户提供的待附加到该命令的注释。设置后,该注释将与该命令的记录一起出现在以下位置:
注释可以是任何有效的 BSON 类型(字符串、整型、对象、数组等)。 |
行为
返回单个角色的信息
要指定当前数据库中的角色,请按角色名称指定:
{ rolesInfo: "<rolename>" }
要指定其他数据库中的角色,请通过指定角色和数据库的文档来指定角色:
{ rolesInfo: { role: "<rolename>", db: "<database>" } }
返回多个角色的信息
要指定多个角色,请使用数组。 将数组中的每个角色指定为文档或string 。 仅当运行命令的数据库上存在该角色时才使用string :
{ rolesInfo: [ "<rolename>", { role: "<rolename>", db: "<database>" }, ... ] }
返回数据库中所有角色的信息
要指定运行该命令的数据库中的所有角色,请指定rolesInfo: 1
。 默认情况下,MongoDB 会显示数据库中所有用户定义的角色。 要同时包含内置角色,请包含参数值对showBuiltinRoles: true
:
{ rolesInfo: 1, showBuiltinRoles: true }
必需的访问权限
输出
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 }