即使用户具有数据库的读/写访问权限,我们是否可以限制数据库中特定集合的读/写访问权限?
例如:我有一个叫做PRODCAST的数据库,它包含collA,collB,collC和collD。假设我们有10个用户,他们都可以访问PRODCAST数据库,并能够对数据库中存在的所有集合执行读/写操作。
我的问题是,无论如何,我们可以阻止所有用户执行读/写操作,特别是在 CollC 上,因为collC有一些敏感数据因此我不会向所有人显示,即使他们有数据库访问权限。
答案 0 :(得分:1)
即使用户具有数据库的读/写访问权限,我们是否可以限制数据库中特定集合的读/写访问权限?
与MongoDB 3.6一样,角色和权限是附加的:您可以向用户授予其他权限,但不能删除或限制已授予或继承的现有权限。
例如:我有一个叫做PRODCAST的数据库,它包含collA,collB,collC和collD。假设我们有10个用户,他们都可以访问PRODCAST数据库并能够对数据库中存在的所有集合执行读/写操作。
限制访问collC
的建议方法是:
PRODCAST
数据库的读/写访问权限)或如果您的所有用户都需要一组通用的访问权限,则可以创建user-defined (custom) role以简化管理。然后,您可以grant the custom role(例如PRODCAST
)向您的用户添加并在添加具有共享访问权限的新集合/数据库时根据需要更新角色。
我的问题是,无论如何,我们可以阻止所有用户执行读/写操作,特别是在 CollC 上,因为collC有一些敏感数据因此我不会向所有人显示,即使他们有数据库访问权限。
有关访问敏感数据的进一步限制,您可以使用上述任一方法来限制整体读/写访问权限,然后创建集合的read-only view(MongoDB 3.4+)。与集合类似,访问视图需要读取权限。但是,可以在没有对基础集合的读取权限的情况下授予对视图的读取权限,因此可以完全编辑敏感字段。