繁体   English   中英

CouchDB / PouchDB 部分同步,权限有限

[英]CouchDB / PouchDB partial syncs with limited rights

我只是偶然发现了 CouchDB 和 PouchDB 同步功能。 通常,Web 应用程序有一个应用程序服务器来实现身份验证、权限和业务逻辑,允许限制用户对特定资源/记录的访问。 这让我想到了几个问题:

  1. 是否可以限制对沙发数据库中记录的访问。 例如。 超级管理员可以查看所有内容,部门经理可以查看其部门的所有内容,而普通用户只能查看自己的记录或例如分配给他的任务?
  2. CouchDB + PouchDB 是否只能进行部分同步。 例如同步我负责的所有任务?
  3. 您会使用 CouchDB 进行用户身份验证和权限存储(针对上述用例)吗? 无论如何,我似乎很奇怪,因为在我看来,每个人都可以访问用户数据库。

是否可以限制对沙发数据库中记录的访问。 例如。 超级管理员可以查看所有内容,部门经理可以查看其部门的所有内容,而普通用户只能查看自己的记录或例如分配给他的任务?

不。 您不能使用单个数据库并仅使用 CouchDB 来做到这一点。 但是有几种方法可以实现这一点,例如:

  • 每个项目/用户组/用户使用一个数据库。 在大多数情况下,这可能是首选方法。 在 CouchDB 中创建数据库很容易。 这也最适合同步
  • 创建一个智能代理,用用户凭据包装所有文档并过滤所有结果
  • 基于每个用户加密文档
  • 使用 validate_doc_read 和 validate_doc_update 函数

更多信息在这里: https : //wiki.apache.org/couchdb/PerDocumentAuthorization

是否可以限制对沙发数据库中记录的访问。 例如。 超级管理员可以查看所有内容,部门经理可以查看其部门的所有内容,而普通用户只能查看自己的记录或例如分配给他的任务?

现成的安全策略非常基础,但您可以使用高级功能做很多事情。

您想要做的事情可以简单地使用show函数完成,该函数会根据req.userCtx生成不同的输出。

在不同的设置中(基于用户/方法/URI 的授权,有或没有第三方身份验证),由于 CouchDB 完全符合 REST,您还可以使用 HTTP 反向代理来实现安全相关功能。

CouchDB + PouchDB 是否只能进行部分同步。 例如同步我负责的所有任务?

在 CouchDB 中,这称为 “过滤复制”

无论如何,我似乎很奇怪,因为在我看来,每个人都可以访问用户数据库。

当然不是。 在正常模式下(不是“管理方”),其他用户只能访问“公共”属性,当然,只有用户自己可以更新她的用户文档(请参阅文档)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM