资源文档

    在本页

    资源文档指定了权限所允许操作的资源。

    数据库和/或集合资源

    使用以下语法指定数据库和/或者集合:

    复制

    1. { db: <database>, collection: <collection> }

    指定一个数据库中的集合作为操作资源

    如果资源文档同时指定了dbcollection字段为非空字符串,操作资源就是该指定数据库中的指定集合。例如,下面的文档指定了products数据库中的inventory集合。

    复制

    1. { db: "products", collection: "inventory" }

    admin数据库范围内的用户自定义角色,为其权限指定操作资源时必须指定与该角色相同的数据库。admin数据库范围内定义的角色可以指定其他其他数据库为操作资源。

    指定一个数据库为资源

    如果仅collection字段为空字符串(""),操作资源就是该指定的数据库,但system集合除外。例如,下面的资源文档指定了操作资源为test数据库,但system集合除外。

    复制

    1. { db: "test", collection: "" }

    admin数据库范围内的用户自定义角色,为其权限指定操作资源时必须指定与该角色相同的数据库。admin数据库范围内定义的角色可以指定其他数据库为操作资源。

    说明

    当你指定一个数据库作为操作资源时,system集合是不包括在内的,除非像下面这样明确指定:

    复制

    1. { db: "test", collection: "system.js" }

    system集合包括但是不限于以下几项:

    通过数据库指定集合作为操作资源

    如果db字段是空字符串(""),那么操作资源则是所有数据库中具有指定名称的集合。例如,以下文档指定了所有数据库中accounts集合的资源:

    复制

    1. { db: "", collection: "accounts" }

    对于用户自定义角色,只有作用于admin数据库的角色才能拥有此资源指定的权限。

    指定所有数据库中的非 system 集合

    如果dbcollection两个字段都为空字符串(""),那么可操作的资源将是所有数据库中除system外的所有集合。

    复制

    1. { db: "", collection: "" }

    对于用户自定义角色,只有作用于admin数据库的角色才能拥有此资源指定的权限。

    集群资源

    要将群集指定为资源,请使用以下语法:

    复制

    1. { cluster : true }

    使用集群作为 actions 的操作资源,而不是对特定的数据库或集合进行操作,这样的操作会影响系统状态。 此类操作的示例包括“关机”,“ 副本集重新配置”和“添加分片”。 例如,以下文档授予“集群”上的“关机”动作。 cluster资源是用来执行那些影响系统状态的操作,而不是用来对特定的数据库或集合执行操作。此类操作的示例包括shutdownreplSetReconfigaddShard。例如,以下文档会将shutdown操作赋予cluster

    复制

    1. { resource: { cluster : true }, actions: [ "shutdown" ] }

    对于用户自定义角色,只有作用于admin数据库的角色才能拥有此资源指定的权限。

    anyResource

    内部资源anyResource使我们能访问系统中任何资源,它只供内部使用。除特殊情况外,不要使用这个资源。使用这个资源的语法为{ anyResource: true }

    原文链接:https://docs.mongodb.com/manual/reference/resource-document/

    译者:谢伟成

    参见

    原文 - Resource Document