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