Zookeeper03 - Zookeeper之ACL

一、ACL

1、ACL全称Access Control Lists,叫做访问控制列表,Zookeeper用它来控制客户端对Zookeeper节点的操作;它包含以下五个权限:

  • CREATE:表示创建子节点的权限
  • READ:表示获取节点数据和子节点列表的权限
  • WRITE:表示更新节点数据的权限
  • DELETE:表示删除子节点的权限
  • ADMIN:表示设置节点ACL的权限
要注意的是CREATE和DELETE是针对子节点来做的权限控制;而且,节点的ACL不具有继承关系
2、ACL表示方法
ACL的表示方法为:scheme:id:permission,其中scheme表示验证过程中使用的验证策略;id表示权限被赋予的对象,比如某个IP或某个用户;permission表示以上的五个权限的组合,比如crwda表示拥有全部的权限
3、查看某个节点的ACL信息
可以使用getAcl命令来查看某个节点的ACL信息,用法为:getAcl path,如:

4、设置节点权限
可以使用setAcl命令来设置某个节点的访问权限,用法为:setAcl path acl,如:

5、验证策略之world
当验证策略为world时,id值固定为anyone,表示任何用户,比如world:anyone:crwda表示任何用户都具有crwda权限,如下设置为任何人对/node3节点都没有读权限,而拥有其它的四个权限

6、验证策略之auth
当验证策略为auth(本质就是digest)时,它没有id值,表示给认证通过的所有用户设置acl权限,可以通过addauth命令(addauth digest <username>:<password>)进行认证用户的添加;当使用addauth命令添加多个认证用户后,使用auth策略来设置acl,那么所有认证过的用户都被会加入到acl中。如下图所示,如果在当前会话中还没有认证过的用户就使用auth策略设置某个节点的acl权限时是不会成功的;当使用addauth命令在当前会话中添加认证用户后,再使用auth策略设置acl权限,则在当前会话中所有被认证过的用户都会被设置为一样的权限;而且如果使用addauth命令在设置acl后继续添加了认证用户,如果也需要把新添加的认证用户设置到acl权限中,那么需要再次使用auth策略来设置acl权限,只要使用auth策略设置acl权限,那么所有被认证过的用户对该节点的权限都会跟着变化


添加的认证用户是跟会话绑定的,如下图所示,如果此时在另外一个会话中,如果不添加对应的认证用户,那么是没有相应访问权限的,而且如果再使用auth策略来设置acl权限,则会覆盖之前的acl权限信息,只会针对当前会话中的认证用户来设置acl权限


还可以为相同用户设置不同的密码:

6、验证策略之digest

当验证策略为digest时,它对应的id为username:BASE64(SHA1(username:password)),表示指定某个用户及它的密码才能访问,可以使用Zookeeper提供的Java API快速生成对应的id,如:


用digest策略设置acl并访问,这样设置过后就只有当在当前会话中添加了认证用户为aclUser且密码为pwd时才能访问该节点


7、验证策略之ip

当验证策略为ip时,它对应的id为一个IP地址,表示指定某个ip地址可以访问。

8、验证策略之super

当验证策略为super时,有权限操作任何节点。需要在服务端启动脚本zkServer.sh中添加关于super用户的配置,用户名和密码都可以自由设置,但是密码还是得使用BASE64(SHA1(username:password))的方式,如下,这里super用户帐号设置为admin,明文密码为pwd:


然后就可以使用admin这个用户来访问任何节点了:




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值