ZooKeeper 【三】 acl权限控制

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的服务可以访问相关的节点,防止混乱

你可能感兴趣的:(ZooKeeper 【三】 acl权限控制)