我确实阅读了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 并通过 futon 添加管理员导致在 _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 管理员没有影响。
所以我的假设是,通过蒲团创建的管理员可以做任何事情。唯一令人困惑的逻辑部分是 _users 文档,它们没有特殊类型(他们是用户)也没有特殊角色。
回到具体问题: - 当通过蒲团添加管理员时,为什么它没有在 _users 文档中标记为管理员,以及该文档中的 CouchDB 如何确定它是一个广泛的系统管理员?- 如果您想创建一个普通用户而不允许他们注册(通过被褥或直接 HTTP 请求),您必须保护 _users 文档。但是,您将如何创建自己的用户以在自己的数据库上读/写?- 由于用户(根据 CouchDB Docs)将拥有数据库的读/写权限,但没有创建设计文档的可能性,他如何才能真正有效地使用它,因为任何使用数据库开发的人都需要视图?
应该可以在不危及安全性的情况下进行正常的、简单的多主机托管,因为在http://www.iriscouch.com/上有一个共享的 CouchDB 产品,所以我只是不明白您将如何合理地构建一个简单的服务,其中用户有他自己的数据库,可以做任何事情,但只能在这个数据库上。由于管理员角色无论如何都是“用户”,您如何将它们与 _users 表中的非管理员区分开来?