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
:cdrwa

ACL的构成

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:cdrwasetAcl/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

操作

  • auth:user:pwd:cdrwa

  • digest:user:BASE64(SHA1(pwd)):cdrwa

  • addauth digest user:pwd

auth:user:pwd:cdrwa操作

digest:user:BASE64(SHA1(pwd)):cdrwa操作

ctrl+c 即可以退出之前所登录的revin用户就会自动退出

ip:192.168.1.1:[permissions]操作

super超级管理员

super

1.修改zkServer.sh 增加super管理员

2.重启zkServer.sh

参考:【zookeeper】ACL super 超级管理员

ACL的常用使用场景

  • 开发/测试环境分离,开发者无权操作测试库的节点,只能看

  • 生产环境上控制指定ip的服务可以访问相关节点,防止混乱

Last updated

Was this helpful?