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