2010-11-04 71 views
2

目前,我正在评估CouchDB新项目的过程。将CouchDB中的资源访问权限限制为2个用户

该项目的关键约束是强大的隐私。需要有两个用户可读的资源。

一个用例可能类似于在Twitter直接信息(DMS)的东西。另一个用例是User/SuperUser访问级别。

我目前还没有关于如何解决这几样不是建立一个数据库,只有这些用户是accessable其他使用CouchDB问题的任何想法。我想知道如何构建视图来汇总来自多个数据库的数据?

你对我有什么提示/建议吗?

回答

3

我问这个问题上CouchDB的邮件列表几次,没有得到回答。

有一些事情,couchdb丢失。

其中之一是文件级别的安全性,其将:

  • 仅允许特定用户查看文档
  • 过滤器视图中的索引上的用户级权限的基础文件

我不认为目前的couchdb实现有权限考虑解决方案。

一个解决方案是使用像Lucene的外部索引工具,并与标签的用户权限您的文档,然后发出带有用户权限定义Lucene的查询,以获得该文档。这也意味着你的服务器上的额外负载(lucene需要一个JVM)以及数据可用的额外延迟(lucene索引时间...)

至于多个数据库解决方案,有语言框架这些实现根本不允许使用多于一个数据库(例如,用于Ruby的couch_potato)。

有几个数据库也意味着你有几个复制过程,如果你的数据库可被复制。

此外,这意味着将为每个数据库更新视图。在某些情况下,这样做会更好,然后在单个数据库中有大量的视图索引,但这也意味着不同的用户可能没有及时获取单一信息源(即有些视图会更新视图,其他则不会)。所以你不能保证数据对所有用户都是一致的。

因此,除非在沙发核心中为了管理文档级授权而实现某些内容,否则CouchDB似乎不适合用于管理具有隐私约束的数据。

+2

文档级权限充满了问题。以下是CouchDB维基上的一个页面,解释了为什么,包括底部的链接以讨论CouchDB开发人员邮件列表中的问题:http://wiki.apache.org/couchdb/PerDocumentAuthorization – 2010-11-21 07:49:00

1

还有一堆的细节丢失你正在试图完成什么,什么数据的模样,所以很难作出具体的建议。您可能能够为每个用户创建一个数据库并将项目复制到每个用户数据库中(对于您描述的DM使用案例)。每个用户只能访问他们自己的数据库,然后你可以有一个可以访问所有数据库的管理员用户。如果您需要稍后更新这些记录,将它们复制到多个数据库可能不是一个好主意,然后您可能会考虑是否要在与存储不同的级别上控制权限。

对于从多个数据库汇总的数据,我建议看着休息室和bigcouch意见,其中采取不同的方法。

http://tilgovi.github.com/couchdb-lounge/ http://support.cloudant.com/faqs/views/chained-mapreduce-views