【问题标题】:How can I implement field-level permissions for MongoDB?如何为 MongoDB 实现字段级权限?
【发布时间】:2021-08-05 00:05:19
【问题描述】:

在 MySQL 中,我可以授予更新特定字段的权限:

GRANT SELECT, UPDATE (col_Eagle) ON db_ANIMAL.tb_BIRD to 'JOHNNY'@'localhost';

MongoDB 只有“读”或“读”角色:

db.createUser(
    {
      user: "JOHNNY",
      pwd: "pass",
      roles: [
        { 
          role: "read", # or readWrite??
          db: "db_ANIMAL" 
        }
      ]
    }
)

如何限制 MongoDB 3.4 中特定字段的更新权限?

【问题讨论】:

  • MongoDB 不支持这个,最小的是per collection。如果你真的需要,你必须自己在你的应用层实现它。

标签: mongodb


【解决方案1】:

在 MongoDB 3.4 中,内置访问控制的粒度仅达到Collection-Level Access Control

例如,您可以为集合创建用户定义的角色限制权限:

privileges: [
  { resource: { db: "db_ANIMAL", collection: "tb_BIRD" },  actions: [ "find", "update" ] }
]

为了限制对集合数据子集的只读访问,您可以考虑使用 MongoDB 3.4 中的新 Views 功能或使用 $redact 聚合阶段 (MongoDB 2.6+) 实现 Field Level Redaction

如果您需要对字段级更新进行更精细的访问控制,您目前必须在您的 API 或应用程序代码中实现此功能。

您可能希望在 MongoDB 问题跟踪器中观看/支持一些相关的功能请求:

【讨论】:

    【解决方案2】:

    我刚刚为此主题创建了一个post in MongoDB's forums,一位 MongoDB 员工向我指出了解决方案。

    要为最终用户(与直接访问数据库的应用程序交互的用户)实现字段级权限,现在可以使用 MongoDB Realm 来完成,正如解释的那样在documentation.

    【讨论】:

      猜你喜欢
      • 2013-12-22
      • 2021-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-30
      • 2020-09-27
      • 1970-01-01
      相关资源
      最近更新 更多