关于自管理部署的资源文档
资源文档指定了权限允许的操作所依赖的资源操作
.
数据库和/或集合资源
要指定数据库和/或集合,使用以下语法
{ 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" }
系统集合包括但不限于以下
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 }
。