保护文档样式数据库(MongoDb,CouchDb,RavenDb)以进行客户端(浏览器)访问

Hug*_*own 6 couchdb mongodb nosql ravendb

支持REST样式的JSON over HTTP访问的文档数据库似乎是支持AJAX丰富的应用程序的理想选择,其中浏览器直接调用数据库,绕过传统的Web服务器/应用程序逻辑组件.例如,一旦用户通过身份验证,就可以检索用户首选项.(BBC主页可能是一个很好的例子,在负载崩溃之前!)

这种情况的问题是安全问题 - 如果用户使用Web服务器进行身份验证(例如基本表单身份验证),该身份如何转移到文档DB.是通过Web服务器代理对数据库的所有请求的唯一答案 - 即保护文档数据库,以便没有直接的外部访问?

这似乎是最有意义的,也是最容易实现的,但我想知道是否有人在异构环境中使用文档dbs有经验和/或建议?

Tom*_*vic 1

这可能在您提到的每个数据库中有所不同。以下是它在 CouchDB 中的工作原理。

CouchDB 允许您管理用户和角色。

validate_doc_update您可以在设计文档中使用该功能来限制文档创建/更新。例如,您可以编写一个验证,拒绝除作者之外的任何人更新文档。

要限制谁可以从数据库读取文档,您可以编辑文档/db_name/_security并列出用户或角色。

但是,我认为您无法使读取访问更细化(即允许用户仅读取他们创建的文档)。

为此,您必须将 CouchDB 置于代理后面,并使用视图向经过身份验证的用户提供文档。您仍然可以通过这种方式使用 CouchDB 用户管理。代理只是隐藏了对数据库的直接访问。

有关更多详细信息,请查看CouchDB wiki 上的安全性概述Relax 书的安全性章节以及这个简短的截屏视频