【ACL概述】
ACL:access control Lists,权限控制。
* 针对节点可以设置相关的读写等权限,目的是为了保障数据安全性。
* 权限permissions可以指定不同的权限范围以及角色。
【ACL命令行】
[ getAcl ]
获取某个节点的ACL权限信息。
[ setAcl ]
设置某个节点的ACL权限信息
[ addauth ]
输入认证授权信息,注册时输入明文密码(登录),但是在zk的系统里,密码是以加密的形式存在的。
【ACL的构成】
zk的acl通过[scheme:id:permissions]来构成权限列表的
scheme:代表采用某种权限机制
id:代表允许访问的用户
permissions:权限组合字符串
【ACL的构成——scheme】
* world
world下只有一个id,即只有一个用户,也就是anyone,那么组合的写法就是world:anyone:[permissions]
* auth
auth代表认证登录,需要注册用户有权限就可以,形式为auth:user:passworld:[permissions]
* digest
需要对密码加密才能访问,组合形式为 digest:username:BASE64(SHA1(passworld)):[permissions]
[注意]
简而言之,auth和digest的区别就是,前者明文,后者密文。
setAcl /path auth:lee:lee:cdrwa
与setACl /path digest:lee:BASE64(SHA1(passworld)) cdrwa是等价的,在通过addauth digest lee:lee后都能操作指定节点的权限。
* ip
当设置为ip指定的ip地址,此时限制ip进行访问,比如ip:192.168.1.1:[permissions]
* super
代表超级管理员,拥有所有的权限。
【ACL的构成——permisssions】
权限字符串缩写 crdwa
* CREATE:创建子节点,注意,是子节点
* READ:获取节点/子节点
* WRITE:设置节点数据
* DELETE:删除子节点
* ADMIN:设置权限的权限
【ACL命令行】
[ world:anyone:cdrwa ]
【ACL的常用使用场景】
* 开发/测试环境分离,开发者无权操作测试库的节点,只能看。
* 生产环境上控制指定ip的服务可以访问相关节点,防止混乱。