如何为CouchDB特定数据库配置管理员及权限管控
CouchDB权限方案实现指南
完全可以实现你要的权限管理方案,具体配置步骤如下:
一、为单个数据库配置专属管理员
- 先在CouchDB的全局
_users数据库中创建普通用户账号(比如db1_admin、db2_admin),不要将这些账号设为全局管理员。 - 进入目标数据库的
_security文档(通过CouchDB的Fauxton界面或发送PUT请求到/[数据库名]/_security),配置admins字段:
{ "admins": { "names": ["db1_admin"], "roles": [] }, "members": { "names": [], "roles": [] } }
该配置会让指定账号拥有对应数据库的完整管理权限(创建、删除文档,修改设计文档等),但无法操作其他数据库。
二、配置数据库的只读匿名/公共账号访问
- 同样编辑目标数据库的
_security文档,根据需求配置readers字段:
- 若允许匿名只读访问:
{ "admins": { "names": ["db1_admin"], "roles": [] }, "members": { "names": [], "roles": [] }, "readers": { "names": [], "roles": ["_reader"] } }
"_reader"是CouchDB内置角色,允许未登录的匿名用户执行_all_docs、_find等只读操作。
- 若仅允许指定公共账号(如anonymous:anonymous)只读访问:
先在_users数据库创建anonymous账号,再修改_security文档:
{ "admins": { "names": ["db1_admin"], "roles": [] }, "members": { "names": [], "roles": [] }, "readers": { "names": ["anonymous"], "roles": [] } }
此配置仅允许anonymous账号访问该数据库的只读接口,匿名用户无法访问。
注意:配置前需确认CouchDB全局配置中require_valid_user的设置——若设为true,匿名访问会被完全禁止,此时只能用指定公共账号的方式;若设为false,才能开启匿名只读访问。
内容的提问来源于stack exchange,提问作者FangQ
相关产品推荐
相关产品推荐

