mongodb:限制特定集合的读/写访问权限

时间:2018-03-22 18:32:01

标签: mongodb

即使用户具有数据库的读/写访问权限,我们是否可以限制数据库中特定集合的读/写访问权限?

例如:我有一个叫做PRODCAST的数据库,它包含collA,collB,collC和collD。假设我们有10个用户,他们都可以访问PRODCAST数据库,并能够对数据库中存在的所有集合执行读/写操作。

我的问题是,无论如何,我们可以阻止所有用户执行读/写操作,特别是在 CollC 上,因为collC有一些敏感数据因此我不会向所有人显示,即使他们有数据库访问权限。

1 个答案:

答案 0 :(得分:1)

  

即使用户具有数据库的读/写访问权限,我们是否可以限制数据库中特定集合的读/写访问权限?

与MongoDB 3.6一样,角色和权限是附加的:您可以向用户授予其他权限,但不能删除或限制已授予或继承的现有权限。

  

例如:我有一个叫做PRODCAST的数据库,它包含collA,collB,collC和collD。假设我们有10个用户,他们都可以访问PRODCAST数据库并能够对数据库中存在的所有集合执行读/写操作。

限制访问collC的建议方法是:

如果您的所有用户都需要一组通用的访问权限,则可以创建user-defined (custom) role以简化管理。然后,您可以grant the custom role(例如PRODCAST)向您的用户添加并在添加具有共享访问权限的新集合/数据库时根据需要更新角色。

  

我的问题是,无论如何,我们可以阻止所有用户执行读/写操作,特别是在 CollC 上,因为collC有一些敏感数据因此我不会向所有人显示,即使他们有数据库访问权限。

有关访问敏感数据的进一步限制,您可以使用上述任一方法来限制整体读/写访问权限,然后创建集合的read-only view(MongoDB 3.4+)。与集合类似,访问视图需要读取权限。但是,可以在没有对基础集合的读取权限的情况下授予对视图的读取权限,因此可以完全编辑敏感字段。