【问题标题】:CouchDB per field read privilege based on roles基于角色的 CouchDB 每个字段读取权限
【发布时间】:2019-07-15 06:17:38
【问题描述】:

我是 CouchDB 的新手。 我不知道我是否可以限制角色可以从文档中读取的字段。如果可以,这是使用 CouchDB 的正确方法吗?

例如,如果我有这样的文档:

{
    firstname: 'firstname',
    lastname: 'lastname',
    email: ['home': 'foobar@foobar.net', 'work': 'foobar@foobar-working.net'],
    phone: ['home': '+81 00 0000 0000'],
}

还有以下角色:

{
   "admins": {
       "names": [
           "superuser"
       ],
       "roles": [
           "admins"
       ]
   },
   "members": {
       "names": [
           "user1",
           "user2"
       ],
       "roles": [
           "developers"
       ]
   }
}

我希望管理员角色可以读取所有字段,而开发人员只能读取电子邮件和电话。 我怎样才能做到这一点?使用验证函数?

【问题讨论】:

    标签: couchdb couchdb-2.0


    【解决方案1】:

    您帖子中描述的功能在 CouchDB 中不可用。

    couchdb 中的安全性定义如下(摘自doc)

    安全对象由两个强制性元素组成,admins 和 members,用于指定分别对数据库具有 admin 和 members 权限的用户和/或角色的列表:

    • 成员:他们可以从数据库中读取所有类型的文档,并且他们 可以将文档写入(和编辑)数据库,但设计文档除外。
    • admins:他们拥有会员的所有权限以及以下权限: 编写(和编辑)设计文档,添加/删除数据库管理员和 成员并设置数据库修订限制。他们无法创建 数据库或删除数据库。

    在 CouchDB 中没有实现每个文档甚至每个部分文档的访问限制

    目前,您可以通过在设计文档中定义验证文档更新函数来定义每个文档的写入限制。

    有一个建议添加一些每个文档的访问限制,但它似乎处于开发的早期阶段。可以看提案here

    【讨论】:

    • 好的,谢谢 是否存在另一种方法来实现我需要的结果?
    • CouchDB 中没有内置机制来满足您的要求。您应该在 CouchDB 之上使用一些逻辑来支持它。这取决于您的架构。
    猜你喜欢
    • 2015-12-23
    • 2018-05-29
    • 2023-03-15
    • 2021-09-16
    • 1970-01-01
    • 2019-12-08
    • 2017-01-16
    • 1970-01-01
    • 2011-05-02
    相关资源
    最近更新 更多