system.roles
自管理部署中的集合
在此页面上
admin
数据库中的 system.roles
集合存储了用户定义的角色。为了创建和管理这些用户定义的角色,MongoDB 提供了角色管理命令。
system.roles
架构
system.roles
集合中的文档具有以下模式:
{ _id: <system-defined id>, role: "<role name>", db: "<database>", privileges: [ { resource: { <resource> }, actions: [ "<action>", ... ] }, ... ], roles: [ { role: "<role name>", db: "<database>" }, ... ] }
system.roles
文档包含以下字段:
admin.system.roles.role
role
字段是指定角色名称的string 。
admin.system.roles.privileges
privileges
数组包含定义角色权限的权限文件。权限文档的语法如下:
{ resource: { <resource> }, actions: [ "<action>", ... ] } 每个权限文档都包含以下字段:
admin.system.roles.privileges[n].resource
指定权限
actions
应用的资源的文档。 该文档采用以下形式之一:{ db: <database>, collection: <collection> } or
{ cluster : true } 有关更多详细信息,请参阅有关自管理部署的资源文档。
admin.system.roles.privileges[n].actions
允许对资源执行的操作大量。 有关操作列表,请参阅自管理部署的特权操作。
示例
请考虑在admin
数据库的system.roles
集合中找到的以下示例文档。
用户定义的角色指定特权
以下是为 myApp
数据库定义的用户定义角色 appUser
的示例文档:
{ _id: "myApp.appUser", role: "appUser", db: "myApp", privileges: [ { resource: { db: "myApp" , collection: "" }, actions: [ "find", "createCollection", "dbStats", "collStats" ] }, { resource: { db: "myApp", collection: "logs" }, actions: [ "insert" ] }, { resource: { db: "myApp", collection: "data" }, actions: [ "insert", "update", "remove", "compact" ] }, { resource: { db: "myApp", collection: "system.js" }, actions: [ "find" ] }, ], roles: [] }
privileges
大量列出了appUser
角色指定的五种权限:
第一个权限允许对
myApp
数据库中除系统集合之外的所有集合执行操作(
"find"
、"createCollection"
、"dbStats"
、"collStats"
)。请参阅将数据库指定为资源。接下来的两个权限允许对
myApp
数据库中的特定集合logs
和data
执行其他操作。 请参阅指定数据库集合作为资源。
最后一个权限允许对
myApp
数据库中的一个系统集合执行操作。 虽然第一个权限为
find
动作提供数据库范围的权限,但该动作应用用于myApp
的系统集合。 要授予对系统集合的访问权限权限,权限必须显式指定该集合。 请参阅有关自管理部署的资源文档。
如空的roles
数组所示,appUser
不会从其他角色继承任何额外权限。
用户定义的角色从其他角色继承
以下是为 myApp
数据库定义的用户定义角色 appAdmin
的示例文档:该文档显示 appAdmin
角色指定权限以及从其他角色继承权限:
{ _id: "myApp.appAdmin", role: "appAdmin", db: "myApp", privileges: [ { resource: { db: "myApp", collection: "" }, actions: [ "insert", "dbStats", "collStats", "compact" ] } ], roles: [ { role: "appUser", db: "myApp" } ] }
privileges
数组列出了 appAdmin
角色指定的权限。此角色具有单个权限,允许其对 myApp
数据库中的所有集合(不包括其系统集合)执行操作(
"insert"
、"dbStats"
、"collStats"
、"compact"
)。请参阅将数据库指定为资源。
roles
数组列出由角色名称和数据库标识的角色, appAdmin
角色从中继承权限。