ACL权限控制命令
针对节点可以设置相关读写等权限,目的为了保障数据安全性
权限permissions可以指定不同的权限范围以及角色
ACL命令行
getAcl:获取某个节点的acl权限信息,语法:getAcl path
setAcl:设置某个节点的acl权限信息,语法:setAcl path
addauth:输入认证权限信息,注册时输入明文密码(登录),但是在zk的系统里,密码是以加密的形式存在的。语法:addauth scheme auth
#连接zk
$ zkCli.sh -server 127.0.0.1:2181
$ create /test 123
$ create /test/abc aaa
# 查看默认权限
$ getAcl /test/abc
'world,'anyone
:cdrwaACL的构成
zk的acl通过[scheme:id:permissions]来构成权限列表
scheme:代表采用某种权限机制
id:代表运行访问的用户
permissions:权限组合字符串
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:cdrwa与setAcl/path auth:lee:BASE64(SHA1(lee)):cdrwa是等价的,在通过addauth digest lee:lee后都能啊哦做指定节点的权限
ip:当设置为ip指定的ip地址,此时限制ip进行访问,比如
ip:192.168.1.1:[permissions]super:代表超级管理员,拥有所有的权限。
permissions
权限字符串缩写:crdwa
CREATE:创建子节点
READ:获取节点/子节点
WRITE:设置节点数据
DELETE:删除子节点
ADMIN:设置分配以上权限的权利
ACL命令行学习
world:anyone:cdrwa
world:anyone:cdrwa操作
auth:user:pwd:cdrwadigest:user:BASE64(SHA1(pwd)):cdrwa
addauth digest user:pwd
auth:user:pwd:cdrwa操作
auth:user:pwd:cdrwa操作digest:user:BASE64(SHA1(pwd)):cdrwa操作
ctrl+c 即可以退出之前所登录的revin用户就会自动退出
ip:192.168.1.1:[permissions]操作
ip:192.168.1.1:[permissions]操作super超级管理员
super
1.修改zkServer.sh 增加super管理员
2.重启zkServer.sh
ACL的常用使用场景
开发/测试环境分离,开发者无权操作测试库的节点,只能看
生产环境上控制指定ip的服务可以访问相关节点,防止混乱
Last updated
Was this helpful?