ACL全称为Access Control List(访问控制列表),用于控制资源的访问权限。ZooKeeper使用ACL来控制对其znode(ZooKeeper数据树的数据节点)的访问。
zk利用ACL策略控制节点的访问权限:
CREATE c 可以创建子节点
DELETE d 可以删除子节点(仅下一级节点)
READ r 可以读取节点数据及显示子节点列表
WRITE w 可以设置节点数据
ADMIN a 可以设置节点访问控制列表权限
在传统的文件系统中,一个文件拥有某个组的权限即拥有了组里的所有权限,文件或子目录默认会继承自父目录的ACL。而在Zookeeper中,znode的ACL是没有继承关系的,每个znode的权限都是独立控制的,只有客户端满足znode设置的权限要求时,才能完成相应的操作。Zookeeper的ACL,分为三个维度:scheme、id、permission,通常表示为:scheme:id:permission,schema代表授权策略,id代表用户,permission代表权限。下面分别讲述一下这三个属性:
语法:digest:username:BASE64(SHA1(password)):cdrwa
digest:是授权方式
username:BASE64(SHA1(password)):是id部分
cdrwa:权限部份
授予什么权限
CREATE c 可以创建子节点
DELETE d 可以删除子节点(仅下一级节点)
READ r 可以读取节点数据及显示子节点列表
WRITE w 可以设置节点数据
ADMIN a 可以设置节点访问控制列表权限
创建节点:
create /demo001 001
生成密钥:
假设我要设置的用户名为admin,密码为admin123
echo -n admin:admin123 | openssl dgst -binary -sha1 | openssl base64
给节点设置acl:
setAcl /demo001 digest:admin:dyks0yAxrXfvFZ7G5BN0+ZUcGCE=:cdrwa
可以看到,设置了acl后,再次获取节点数据时,提示权限不足。
设置权限信息:
addauth digest admin:admin123
参考:
Zookeeper节点ACL权限设置(四)_禁止zk某个节点的数据访问-CSDN博客
ZooKeeper: Because Coordinating Distributed Systems is a Zoo
https://www.cnblogs.com/quchunhui/p/13214699.html