【发布时间】:2012-05-09 01:00:14
【问题描述】:
我确实读过http://guide.couchdb.org/draft/security.html 和
和上一个问题 CouchDB Authorization on a Per-Database Basis 和 http://wiki.apache.org/couchdb/Security_Features_Overview
我目前正在使用 Apache CouchDB 1.2.0 并通过蒲团添加管理结果 例如在 _users 添加用户
_id
org.couchdb.user:stackoverflow
_rev
1-b9f223532b662d4ac52d14082d81e6a5
name
stackoverflow
password
null
roles
[ ]
type
user
所以第一个问题是为什么将管理员添加为类型用户而不是管理员令人费解。该用户是管理员,因为他们可以在任何数据库中执行任何操作,并且角色为空,但我确实使用 _users 文档保护了
["admin"]
作为唯一成员和管理员的角色可以访问它(即使他们在 _users 文档中的角色为空)。
此保护不允许创建新的“普通”用户,因此蒲团“注册”命令将返回注册错误:您无权访问此数据库。
我认为这种设置是唯一合乎逻辑的设置。为什么您希望任何人都能够在您的数据库上创建用户??
即使您将数据库中的读取权限指定为仅适用于一个管理员,每个管理员都可以访问它
(
" admins" : {
"names" : ["guru"],
"roles" : ["boss"]
},
"readers" : {
"names" : ["guru"],
"roles" : ["boss"]
}
}
上面的例子对新创建的stackoverflow admin没有影响。
所以我的假设是,通过 futon 创建的管理员可以做任何事情。唯一令人困惑的逻辑部分是 _users 文档,它们没有特殊类型(他们是用户)也没有特殊角色。
回到具体问题: - 当通过蒲团添加管理员时,为什么它没有在 _users 文档中标记为管理员,以及该文档中的 CouchDB 如何确定它是一个广泛的系统管理员? - 如果您想创建一个普通用户而不允许他们注册(通过被褥或直接 HTTP 请求),您必须保护 _users 文档。但是,您将如何创建自己的用户以在自己的数据库上读/写? - 由于用户(根据 CouchDB Docs)将拥有数据库的读/写权限,但没有创建设计文档的可能性,因为任何使用数据库开发的人都需要视图,他如何才能真正有效地使用它?
应该可以在不危及安全性的情况下进行正常的、简单的多主机托管,因为http://www.iriscouch.com/ 提供了共享的 CouchDB 产品,所以我只是不明白您在用户拥有自己的情况下构建简单服务的逻辑有多合理数据库,并且可以做任何事情,但只是在这个数据库上。由于管理员角色无论如何都是“用户”,您如何将它们与 _users 表中的非管理员区分开来?
【问题讨论】:
标签: couchdb couchdb-futon