有关自管理部署的资源文档
资源文档指定了权限允许 actions
访问的资源。
数据库和/或集合资源
要指定数据库和/或集合,请使用以下语法:
{ db: <database>, collection: <collection> }
将数据库的集合指定为资源
如果资源文档将 db
和 collection
字段都指定为非空字符串,资源将是指定数据库中的指定集合。例如,如下文档将指定 products
数据库中的 inventory
集合的资源:
{ db: "products", collection: "inventory" }
对于作用域为非 admin
数据库的用户定义角色,他们的权限的资源规范必须指定与角色相同的数据库。作用域为 admin
数据库的用户定义角色可以指定其他数据库。
将数据库指定为资源
如果仅 collection
字段为空string (""
),则资源为指定数据库,不包括 系统集合。 示例,以下资源文档指定test
数据库的资源,不包括系统集合:
{ db: "test", collection: "" }
对于作用域为非 admin
数据库的用户定义角色,他们的权限的资源规范必须指定与角色相同的数据库。作用域为 admin
数据库的用户定义角色可以指定其他数据库。
注意
当您将一个数据库指定为资源时,将会排除系统集合,除非您明确命名它们,如下所示:
{ db: "test", collection: "system.js" }
系统集合包括但不限于以下内容:
数据库
system.users
中自托管部署中的 集合admin
数据库
system.roles
中自托管部署中的 集合admin
将跨数据库的集合指定为资源
如果只有 db
字段是空字符串 (""
),资源将是所有数据库中具有指定名称的所有集合。例如,如下文档将指定所有数据库中的所有 accounts
集合的资源:
{ db: "", collection: "accounts" }
对于用户定义的角色,只有限定为 admin
数据库的角色才能为其权限使用此资源规范。
指定所有数据库中的所有非系统集合
如果 db
和 collection
字段都是空字符串 (""
),资源将是所有数据库中的所有集合,不包括系统集合:
{ db: "", collection: "" }
对于用户定义的角色,只有限定为 admin
数据库的角色才能为其权限使用此资源规范。
集群资源
要将集群指定为资源,请使用如下语法:
{ cluster : true }
使用 cluster
资源执行将会影响系统状态的操作,而不是对一组特定的数据库或集合执行操作。此类操作的示例包括 shutdown
、replSetReconfig
和 addShard
。例如,如下文档将授权对 cluster
执行 shutdown
操作。
{ resource: { cluster : true }, actions: [ "shutdown" ] }
对于用户定义的角色,只有限定为 admin
数据库的角色才能为其权限使用此资源规范。
anyResource
内部资源 anyResource
允许访问系统中的每个资源,但仅供内部使用。除特殊情况以外,请勿使用此资源。此资源的语法为 { anyResource: true }
。