gpt4 book ai didi

CouchDB 授权逻辑?

转载 作者:行者123 更新时间:2023-12-03 15:53:10 27 4
gpt4 key购买 nike

我确实读过 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

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

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

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

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

即使您在数据库中指定只读访问权限,每个管理员都可以访问它
(

" admins" : {
"names" : ["guru"],
"roles" : ["boss"]
},
"readers" : {
"names" : ["guru"],
"roles" : ["boss"]
}
}

上面的例子对上面例子中新创建的 stackoverflow admin 没有影响。

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

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

因为在 http://www.iriscouch.com/ 上有一个共享的 CouchDB 产品,所以应该可以在不危及安全的情况下拥有一个普通的、简单的多主机。所以我只是不明白你如何逻辑地构建一个简单的服务,其中用户拥有自己的数据库并且可以做任何事情,但只能在这个数据库上做。由于管理员角色无论如何都是“用户”,您如何将他们与 _users 表中的非管理员区分开来?

最佳答案

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

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

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

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

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

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

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

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

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

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

  • A 正常 用户已创建(实际上没有有效密码)
  • 相同的用户名被添加到系统配置“admins”部分。获取 /_config/admins/the_username看见了。 (这就是 Futon 的配置选项卡所做的。)

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

    关于 Iris Couch 的旁注

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

    关于CouchDB 授权逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10364864/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com