On this page
Resource Document
在本页面
资源文档指定特权允许actions
的资源。
数据库和/或集合资源
要指定数据库和/或集合,请使用以下语法:
{ db: <database>, collection: <collection> }
将数据库的集合指定为资源
如果资源文档将db
和collection
字段都作为非空字符串,则该资源是指定数据库中的指定集合。例如,以下文档指定products
数据库中inventory
集合的资源:
{ db: "products", collection: "inventory" }
对于以非admin
数据库为范围的用户定义角色,其特权的资源说明必须指定与该角色相同的数据库。范围为admin
数据库的用户定义角色可以指定其他数据库。
指定数据库作为资源
如果只有collection
字段是空字符串(""
),则资源是指定的数据库,但不包括system collections。例如,以下资源文档指定test
数据库的资源,但不包括系统集合:
{ db: "test", collection: "" }
对于以非admin
数据库为范围的用户定义角色,其特权的资源说明必须指定与该角色相同的数据库。范围为admin
数据库的用户定义角色可以指定其他数据库。
Note
当您将数据库指定为资源时,系统集合将被排除,除非您明确命名它们,如下所示:
{ db: "test", collection: "system.js" }
系统集合包括但不限于以下各项:
system.users Collection在
admin
数据库中system.roles Collection在
admin
数据库中
将跨数据库的集合指定为资源
如果只有db
字段为空字符串(""
),则该资源是所有数据库中具有指定名称的所有集合。例如,以下文档指定所有数据库中所有accounts
集合的资源:
{ db: "", collection: "accounts" }
对于用户定义的角色,只有作用于admin
数据库的角色才能具有此资源规范的特权。
在所有数据库中指定所有非系统集合
如果db
和collection
字段均为空字符串(""
),则资源是所有数据库中的所有集合,但不包括system collections:
{ db: "", collection: "" }
对于用户定义的角色,只有作用于admin
数据库的角色才能具有此资源规范的特权。
Cluster Resource
要将群集指定为资源,请使用以下语法:
{ cluster : true }
使用cluster
资源来执行影响系统状态的操作,而不是对特定的数据库或集合集进行操作。此类动作的示例是shutdown
,replSetReconfig
和addShard
。例如,以下文档授予cluster
上的动作shutdown
。
{ resource: { cluster : true }, actions: [ "shutdown" ] }
对于用户定义的角色,只有作用于admin
数据库的角色才能具有此资源规范的特权。
anyResource
内部资源anyResource
可以访问系统中的每个资源,仅供内部使用。 **除非特殊情况,否则请勿使用此资源。此资源的语法是{ anyResource: true }
。