CouchDB授权逻辑?

dev*_*ull 5 couchdb couchdb-futon

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

和以前的问题 基于每个数据库的CouchDB授权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
Run Code Online (Sandbox Code Playgroud)

所以第一个问题是为什么管理员被添加为类型用户而不是管理员令人费解.这个用户是管理员,因为他们可以在任何数据库中执行任何操作,并且角色为空但我确实保护了_users文档

["admin"]
Run Code Online (Sandbox Code Playgroud)

角色作为唯一成员,只有管理员可以访问它(即使他们在_users文档中的角色为空).

此保护不允许创建新的"普通"用户,因此蒲团"signup"命令将返回注册错误:您无权访问此数据库.

我认为这种设置是唯一合乎逻辑的设置.为什么你希望任何人都能在你的数据库上创建用户?

即使您在数据库中指定读访问权限仅适用于一个管理员,每个管理员都可以访问它

(

 " admins" : {
   "names" : ["guru"],
   "roles" : ["boss"]
  },
  "readers" : {
    "names" : ["guru"],
   "roles" : ["boss"]
  }
}
Run Code Online (Sandbox Code Playgroud)

上面的例子对新创建的stackoverflow管理员没有影响,如上例所示.

所以我的假设是,通过蒲团创建的管理员可以做任何事情,无论如何.唯一令人困惑的逻辑部分是_users文档,它们没有特殊类型(它们是用户),也没有特殊角色.

回到具体问题: - 通过futon添加管理员时为什么在_users文档中没有标记为admin,该文档中的CouchDB如何确定它是一个广泛的系统管理员? - 如果您想创建一个普通用户而不允许他们注册(通过蒲团或直接HTTP请求),您必须保护_users文档.然而,您将如何创建自己的用户来读取/写入自己的数据库? - 由于用户(根据CouchDB Docs)将拥有数据库的读/写权限但不能创建设计文档的可能性如何才能真正有效地使用它,因为任何使用数据库开发的人都需要视图?

应该可以有一个正常的,简单的多主机,而不会危及安全性,因为http://www.iriscouch.com/上有一个共享的CouchDB产品,所以我只是不明白你在逻辑上如何构建一个简单的服务用户拥有自己的数据库,只能在这个数据库上做任何事情.因为管理员角色无论如何"用户"如何将它们与_users表中的非管理员区分开来?

Jas*_*ith 9

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

CouchDB的类似于Windows的Active Directory或Unix NIS和LDAP:大多数用户拥有"正常"的帐户,但是管理员帐户(例如Windows的"Administrator",或Unix的"根")都不能正常使用的会计制度,而是更简单的系统(local.ini配置文件).

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

我是否需要向用户添加"_admin"角色?

不,管理员角色(角色"_admin")不是来自用户的文档,而是来自"admins"部分中的配置.

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

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

CouchDB支持普通用户的数据库管理员.这些用户只能访问数据库,而不能访问任何其他数据库,例如其他数据库或服务器配置.通过将用户的名称或角色添加到"管理员"列表,可以在"安全性"部分中设置数据库管理员.

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

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

  1. 一个普通用户创建(在事实上没有有效的密码)
  2. 相同的用户名被添加到系统配置"管理员"部分.GET /_config/admins/the_username看到它.(这就是Futon的配置标签.)

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

关于Iris Couch的旁注

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