5

我确实阅读了http://guide.couchdb.org/draft/security.html

和上一个问题 CouchDB Authorization on a Per-Database Basishttp://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 表中的非管理员区分开来?

4

1 回答 1

9

为什么将管理员添加为普通用户而不是管理员?

CouchDB 类似于 Windows 的 Active Directory 或 Unix NIS 和 LDAP:大多数用户都有“普通”帐户,但是管理员帐户(例如 Windows“管理员”或 Unix“root”)不使用普通的记帐系统,而是更简单的系统(local.ini配置文件)。

如果帐户和身份验证系统出现问题,您仍然可以以管理员身份登录并修复它。

我需要为用户添加“_admin”角色吗?

不,管理员角色(角色"_admin")不是来自用户的文档,而只是来自“管理员”部分的配置。

为什么所有管理员都可以读取数据库?

通过在全局配置中创建管理员(编辑local.ini文件,或使用 Futon 的“配置”选项卡,或单击管理员组中的“修复此”链接),您创建了一个系统管理员。系统管理员始终可以访问所有数据(类似于 Windows 管理员和 Unix root)。

CouchDB 支持普通用户的数据库管理员。这些用户仅具有对数据库的管理员访问权限,而不是对其他任何内容(例如其他数据库或服务器配置)的管理员访问权限。通过将用户名或角色添加到“管理员”列表中,可以在“安全”部分设置数据库管理员。

具体问题: - 通过蒲团添加管理员时,为什么它没有在 _users 文档中标记为管理员,以及该文档中的 CouchDB 如何确定它是一个广泛的系统管理员?

通过 Futon 添加管理员时,会发生两件事

  1. 创建了一个普通用户(实际上没有有效密码)
  2. 相同的用户名被添加到系统配置“管理员”部分。得到/_config/admins/the_username看到它。(这就是 Futon 的配置选项卡所做的。)

换句话说,CouchDB 不知道它是来自文档的广泛系统管理员,而是来自配置。如果您删除该配置条目,则用户将“降级”回普通用户。

关于 Iris Couch 的旁注

一开始可能会有点困惑,但是一旦你学会了 CouchDB 用户和安全系统,它就非常简单且强大。但是每个 Iris Couch用户都有完整的 CouchDB服务器。如果您注册,您在 Iris Couch 上有一个帐户,但您有一个完整的 CouchDB 服务器可供使用。在该服务器中,您可以为自己的应用程序创建多个用户。

于 2012-04-29T00:36:21.380 回答