ACL ( access control lists ) [ 类似shiro ]
针对节点可以设置相关的读写等权限,目的为了保障数据安全。
权限pemissions可以指定不同的权限范围以及角色
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:user:password:[permissions]
- digest:需要对密码加密才可以访问,组合形式为
digest:username:BASE64(SHA1(password)):[permissions]- 简而言之,auth与digest的区别就是,前者是明文,后者是密文
setAcl /path auth:lee:lee:crdwa
与
setAcl /path digest:lee:BASE64(SHA1(password))crdwa
是等价的,再通过
addauth digest lee:lee后都能操作指定节点的权限
- ip :当设置为ip指定的ip地址,此时限制ip进行访问,比如
ip:192.168.1.1:[permissions]- super:代表超级管理员,拥有所有权限
ACL的构成 三 - permissions
权限字符串缩写crdwa
- CREATE:创建子节点
- READ:读取节点、子节点
- WRITE:设置节点数据
- DELETE:删除子节点
- ADMIN:设置权限
ACL命令行 一
- world:anyone:cdrwa
- auth:user:pwd:cdrwa
digest:user:BASE64(SHA1(pwd)):cdrwa
addauth digest user:pwd - ip:192.168.1.1:cdrwa
ACL命令行 二
- Super
*修改zkServer.sh增加super管理员
增加超级管理员
image.png
保存,重启:./zkServer.sh restart
*重启zkServer.sh
ACL的常用使用场景
- 开发、测试环境分离,开发者无权操作测试库的节点,只能查看
- 生产环境上控制指定ip的服务可以访问相关的节点,防止混乱
网友评论