自管理部署中的集合级访问控制
集合级访问控制允许管理员授予用户针对特定集合的权限。
管理员可以通过自定义角色实现集合级访问控制。通过创建具有权限的角色,这些权限限于特定数据库中的特定集合,管理员可以为用户提供在集合级别授予权限的角色。
权限和范围
权限由操作和允许执行这些操作的资源组成;即资源定义了该权限的作用范围。
通过在权限的资源文档中指定数据库和集合,管理员可以将权限操作仅限制在特定数据库的特定集合中。角色中的每个权限操作都可以作用到不同的集合。
例如,一个用户定义的角色可以包含以下权限
privileges: [ { resource: { db: "products", collection: "inventory" }, actions: [ "find", "update", "insert" ] }, { resource: { db: "products", collection: "orders" }, actions: [ "find" ] } ]
第一个权限将其操作范围限定在inventory
集合的 products
数据库。第二个权限将其操作范围限定在 orders
集合的 products
数据库。
作为一个最佳实践,避免将 createCollection
权限分配给没有对集合读取权限的用户。
更多信息
有关用户定义角色和MongoDB授权模型的更多信息,请参阅自托管部署中的基于角色的访问控制。有关创建用户定义角色的教程,请参阅自托管部署上的用户和角色管理。