权限控制
为了避免存储在 Zookeeper 上的数据被其他程序或者人为误修改,Zookeeper 提供了 ACL(Access Control Lists) 进行权限控制。
ACL 权限可以针对节点设置相关读写等权限,保障数据安全性。
ZooKeeper 中 ACL 被设计为scheme:id:permissions。
scheme:id,scheme 表示用户认证规则,id 表示在某用户认证规则下允许的用户
- world:全局模式,默认模式,所有客户端均拥有所指定权限,world 模式下 id 只能为 anyone,通常为
world:anyone:[permissons] - auth:认证模式,仅通过认证的用户拥有所指定权限,通常为
auth:user:password:[permissons] - digest:加密认证模式,仅通过认证的用户拥有所指定权限,通常为
auth:user:BASE64(SHA1(password)):[permissons] - ip:IP 模式,仅指定用户拥有所指定权限,通常为
ip:182.168.0.168:[permissions]
到这里你可以发现使用
auth模式设置的权限和使用digest模式设置的权限,在最终结果上,得到的权限模式都是digest。某种程度上,你可以把auth模式理解成是digest模式的一种简便实现。因为在digest模式下,每次设置都需要书写用户名和加密后的密码,这是比较繁琐的,采用auth模式就可以避免这种麻烦。- world:全局模式,默认模式,所有客户端均拥有所指定权限,world 模式下 id 只能为 anyone,通常为
permissions,表示权限
- CREATE,允许创建节点
- DELETE,允许删除节点
- READ,允许获取节点数据,以及列出该节点子节点
- WRITE,允许修改节点数据
- ADMIN,允许管理节点(设置节点 ACL)
# 设置节点 ACL
# setAcl [-s] [-v version] [-R] path acl
setAcl / acl
# 获取节点 ACL
# getAcl [-s] path
getAcl /
addauth scheme auth
addauth digest test:root