ACL功能简介
ZooKeeper的ACL(Access Control List,访问控制表)权限在生产环境是特别重要的。ACL权限可以针对节点设置相关读写等权限,保障数据的安全性。
ACL的构成
ZooKeeper的ACL通过
[scheme:id:permissions]
来构成权限列表。
- scheme:授权的模式,代表采用的某种权限机制,包括world、auth、digest、ip、super几种。
- id:授权对象,代表允许访问的用户,如果我们选择采用ip的方式,使用的授权对象可以是一个ip地址或一个ip地址段;而如果使用Digest或Super方式,则对应于一个用户名;如果是World模式则代表授权系统中所有的用户。
- permissions:授权的权限,权限组合字符串,由
cdrwa
组成,其中每个字母代表支持不同的权限。创建权限create©、删除权限delete(d)、读权限read(r)、写权限write(w)、管理权限admin(a)。
ACL的用法
授权命令 | 用法 | 描述 |
---|---|---|
getAcl | getAcl path | 读取节点的ACL权限 |
setAcl | setAcl path acl | 设置节点的ACL权限 |
create | create path data acl | 创建节点时设置ACL |
addAuth | addAuth scheme auth | 添加认证用户,类似于登陆操作 |
测试
1、调整world模式
2、设置digest模式
注:密码可以使用加密后的密文,而不是明文。加密指令如下:
echo -n 用户名:密码 | openssl dgst -binary -sha1 | openssl base64
上述指令执行完成后,会得出一串ACL可解读的密文,使用该密文替代原明文密码,注意用户名不能替代。
3、设置ip模式
注:多个指定ip可以通过逗号分隔,如
setAcl /test ip:IP1:rw,ip:IP2:cdrwa