Couchbase用户权限管理 #
一、认证概述 #
1.1 认证方式 #
Couchbase支持多种认证方式:
| 方式 | 说明 | 适用场景 |
|---|---|---|
| 本地认证 | 内置用户管理 | 开发、小规模部署 |
| LDAP | 企业目录服务 | 企业环境 |
| RBAC | 基于角色的访问控制 | 生产环境 |
1.2 用户类型 #
| 类型 | 说明 |
|---|---|
| Administrator | 集群管理员 |
| Bucket User | Bucket级别用户 |
| Scope User | Scope级别用户 |
| Collection User | Collection级别用户 |
二、内置角色 #
2.1 集群级别角色 #
| 角色 | 说明 | 权限 |
|---|---|---|
| admin | 完全管理权限 | 所有操作 |
| cluster_admin | 集群管理 | 集群配置、节点管理 |
| ro_admin | 只读管理员 | 查看集群状态 |
| security_admin | 安全管理 | 用户和角色管理 |
2.2 Bucket级别角色 #
| 角色 | 说明 | 权限 |
|---|---|---|
| bucket_admin | Bucket管理 | Bucket所有操作 |
| bucket_full_access | 完全访问 | Bucket读写和管理 |
| data_reader | 数据读取 | SELECT查询 |
| data_writer | 数据写入 | INSERT/UPDATE/DELETE |
| data_dcp_reader | DCP读取 | DCP流 |
| views_admin | 视图管理 | 视图操作 |
| query_select | 查询权限 | SELECT语句 |
| query_insert | 插入权限 | INSERT语句 |
| query_update | 更新权限 | UPDATE语句 |
| query_delete | 删除权限 | DELETE语句 |
2.3 Scope和Collection级别角色 #
| 角色 | 说明 |
|---|---|
| scope_admin | Scope管理权限 |
| collection_admin | Collection管理权限 |
三、用户管理 #
3.1 创建用户 #
命令行创建:
bash
/opt/couchbase/bin/couchbase-cli user-manage \
--cluster localhost:8091 \
--username Administrator \
--password your-password \
--set \
--rbac-username app_user \
--rbac-password password123 \
--rbac-name "Application User" \
--roles bucket_full_access[my-bucket] \
--auth-domain local
REST API创建:
bash
curl -X PUT http://localhost:8091/settings/rbac/users/local/app_user \
-u Administrator:password \
-d name="Application User" \
-d password=password123 \
-d roles=bucket_full_access[my-bucket]
3.2 查看用户 #
命令行查看:
bash
/opt/couchbase/bin/couchbase-cli user-manage \
--cluster localhost:8091 \
--username Administrator \
--password your-password \
--list
REST API查看:
bash
curl -X GET http://localhost:8091/settings/rbac/users \
-u Administrator:password
3.3 修改用户 #
bash
/opt/couchbase/bin/couchbase-cli user-manage \
--cluster localhost:8091 \
--username Administrator \
--password your-password \
--set \
--rbac-username app_user \
--rbac-name "Application User Updated" \
--roles bucket_full_access[my-bucket],query_select[my-bucket] \
--auth-domain local
3.4 修改密码 #
bash
/opt/couchbase/bin/couchbase-cli user-manage \
--cluster localhost:8091 \
--username Administrator \
--password your-password \
--set \
--rbac-username app_user \
--rbac-password newpassword123 \
--auth-domain local
3.5 删除用户 #
bash
/opt/couchbase/bin/couchbase-cli user-manage \
--cluster localhost:8091 \
--username Administrator \
--password your-password \
--delete \
--rbac-username app_user \
--auth-domain local
四、角色分配 #
4.1 分配单个角色 #
bash
/opt/couchbase/bin/couchbase-cli user-manage \
--cluster localhost:8091 \
--username Administrator \
--password your-password \
--set \
--rbac-username reader_user \
--rbac-password password123 \
--roles data_reader[my-bucket] \
--auth-domain local
4.2 分配多个角色 #
bash
/opt/couchbase/bin/couchbase-cli user-manage \
--cluster localhost:8091 \
--username Administrator \
--password your-password \
--set \
--rbac-username app_user \
--rbac-password password123 \
--roles "data_reader[my-bucket],data_writer[my-bucket],query_select[my-bucket],query_insert[my-bucket],query_update[my-bucket],query_delete[my-bucket]" \
--auth-domain local
4.3 Scope级别权限 #
bash
/opt/couchbase/bin/couchbase-cli user-manage \
--cluster localhost:8091 \
--username Administrator \
--password your-password \
--set \
--rbac-username scope_user \
--rbac-password password123 \
--roles scope_admin[my-bucket:my-scope] \
--auth-domain local
4.4 Collection级别权限 #
bash
/opt/couchbase/bin/couchbase-cli user-manage \
--cluster localhost:8091 \
--username Administrator \
--password your-password \
--set \
--rbac-username collection_user \
--rbac-password password123 \
--roles collection_admin[my-bucket:my-scope:my-collection] \
--auth-domain local
五、LDAP集成 #
5.1 配置LDAP #
bash
/opt/couchbase/bin/couchbase-cli setting-ldap \
--cluster localhost:8091 \
--username Administrator \
--password your-password \
--enabled 1 \
--servers ldap://ldap.example.com \
--authentication-enabled 1 \
--ldap-user-uid-attribute sAMAccountName \
--ldap-group-attribute memberOf \
--ldap-query-ou "ou=users,dc=example,dc=com"
5.2 LDAP角色映射 #
bash
/opt/couchbase/bin/couchbase-cli setting-ldap \
--cluster localhost:8091 \
--username Administrator \
--password your-password \
--enabled 1 \
--servers ldap://ldap.example.com \
--authentication-enabled 1 \
--authorization-enabled 1 \
--ldap-group-query "(&(objectClass=group)(member=%D))"
5.3 测试LDAP连接 #
bash
curl -X POST http://localhost:8091/settings/saslauthdAuth \
-u Administrator:password \
-d username=ldap_user \
-d password=ldap_password
六、安全配置 #
6.1 启用TLS #
bash
/opt/couchbase/bin/couchbase-cli ssl-manage \
--cluster localhost:8091 \
--username Administrator \
--password your-password \
--set-cluster-certificate \
--certificate-file /path/to/certificate.pem
6.2 强制加密 #
bash
/opt/couchbase/bin/couchbase-cli setting-security \
--cluster localhost:8091 \
--username Administrator \
--password your-password \
--set \
--disable-http-ui 1 \
--cluster-encryption-level all
6.3 审计日志 #
bash
/opt/couchbase/bin/couchbase-cli setting-audit \
--cluster localhost:8091 \
--username Administrator \
--password your-password \
--set \
--enabled 1 \
--log-path /var/lib/couchbase/logs/audit.log \
--rotate-interval 86400
七、最佳实践 #
7.1 最小权限原则 #
text
原则:
- 只授予必要的权限
- 避免使用admin角色
- 定期审查权限
7.2 用户分类 #
text
应用用户:
- bucket_full_access[app-bucket]
- query_*[app-bucket]
只读用户:
- data_reader[app-bucket]
- query_select[app-bucket]
管理员:
- bucket_admin[app-bucket]
- cluster_admin(仅集群管理员)
7.3 密码策略 #
text
建议:
- 密码长度 >= 12位
- 包含大小写字母、数字、特殊字符
- 定期更换密码
- 使用密码管理器
7.4 审计与监控 #
bash
curl -X GET http://localhost:8091/settings/audit \
-u Administrator:password
八、常见问题 #
8.1 认证失败 #
text
排查:
1. 检查用户名密码
2. 检查用户状态
3. 检查认证域
4. 查看日志
8.2 权限不足 #
sql
SELECT * FROM system:user_info
WHERE name = 'app_user';
8.3 LDAP连接问题 #
bash
/opt/couchbase/bin/couchbase-cli setting-ldap \
--cluster localhost:8091 \
--username Administrator \
--password your-password \
--get
九、总结 #
用户权限管理要点:
| 功能 | 说明 |
|---|---|
| 用户管理 | 创建、修改、删除用户 |
| 角色分配 | 授予适当的权限 |
| LDAP集成 | 企业认证集成 |
| 安全配置 | TLS、审计日志 |
最佳实践:
- 遵循最小权限原则
- 定期审查用户权限
- 启用审计日志
- 使用强密码
- 配置TLS加密
下一步,让我们学习备份与恢复!
最后更新:2026-03-27