Zookeeper通过ACL(访问控制列表)实现权限管理,核心机制如下:
-
权限模式(Scheme)
- world:默认模式,所有用户可访问(
world:anyone:cdrwa)。 - auth:基于会话认证,需先调用
addauth(如addauth digest user:pass),无需指定ID。 - digest:用户名+密码认证,密码需提前用SHA1加密(如
digest:user:加密密码:cdrwa)。 - ip:基于客户端IP地址认证(如
ip:192.168.1.1:cdrwa)。 - super:超级权限,可绕过ACL限制(需在配置文件中设置)。
- world:默认模式,所有用户可访问(
-
权限类型(Permissions)
- CREATE(c):创建子节点。
- READ(r):读取节点数据及子节点列表。
- WRITE(w):修改节点数据。
- DELETE(d):删除子节点。
- ADMIN(a):设置节点ACL。
-
操作命令
- 添加认证:
addauth(如addauth digest user:pass)。 - 设置权限:
setAcl(如: : setAcl /node digest:user:加密密码:crwda)。 - 查看权限:
getAcl。 - 删除认证:设置为
world:anyone权限。
- 添加认证:
-
注意事项
- 权限设置不继承,仅对当前节点生效。
- 生产环境中建议使用
digest或sasl模式,避免明文密码。 - 超级权限(super)需谨慎使用,可能破坏权限隔离。
参考来源: