ZooKeeper ACL权限控制
权限控制保护ZooKeeper数据安全。
ACL权限模型概述
权限位含义:
| 权限 | 缩写 | 说明 |
|---|---|---|
| create | c | 创建子节点 |
| read | r | 读取节点数据 |
| write | w | 修改节点数据 |
| delete | d | 删除子节点 |
| admin | a | 设置ACL权限 |
权限组合:
| 组合 | 说明 |
|---|---|
| crwda | 全部权限 |
| crwa | 管理权限(无删除) |
| r | 仅读权限 |
| rw | 读写权限 |
ACL结构:
Bash
scheme:id:permissions
scheme: 认证方案
id: 认证身份
permissions: 权限位组合
查看节点ACL:
Bash
# 查看ACL
getAcl /app/config
# 输出: 'world,'anyone: cdrwa
设置节点ACL:
Bash
# 创建时设置ACL
create /secure/data "secret" digest:user:password:crwa
# 修改ACL
setAcl /secure/data auth:user:crwa
注意:默认ACL是world:anyone:crwda,完全开放。
认证方案类型
四种认证方案:
| 方案 | 说明 | 格式 |
|---|---|---|
| world | 开放访问 | world:anyone |
| auth | 已认证用户 | auth:空 |
| digest | 密码认证 | digest:user:pwd |
| ip | IP限制 | ip:192.168.1.0/24 |
world方案:
Bash
# 创建开放节点
create /public "data" world:anyone:crwa
# 所有人有crwa权限
digest方案:
Bash
# 生成密码摘要
# 格式: digest:user:BASE64(SHA1(user:password))
# 添加认证
addauth digest user:password
# 创建密码保护节点
create /secure "secret" digest:user:password:crwa
# 只有认证用户可访问
ip方案:
Bash
# IP限制
create /internal "data" ip:192.168.1.0/24:crwa
# 仅192.168.1.*网段可访问
认证流程:
text
1. 使用addauth添加认证信息
2. 后续操作携带认证身份
3. ACL检查认证身份权限
认证命令:
text
# 添加digest认证
addauth digest admin:admin123
# 添加后访问受保护节点
get /secure/data
典型ACL配置:
| 场景 | ACL方案 |
|---|---|
| 公开配置 | world:anyone:r |
| 系统配置 | digest:admin:crwa |
| 业务数据 | digest:app:rw |
| 内部节点 | ip:内网段:crwa |
提示:生产环境敏感节点必须设置ACL,避免world开放。
要点总结
- 权限位:c创建、r读取、w修改、d删除、a管理
- ACL结构:scheme:id:permissions
- world方案完全开放,默认配置
- digest密码认证需addauth添加
- ip方案按网段限制访问
- 生产环境敏感节点必须设置ACL
📝 发现内容有误?点击此处直接编辑