zookeeper权限管理

一个zookeeper节点中不仅包含了存储的数据,还有 ACL(Access Control List)。节点创建时,可以给它设置一个ACL,来决定谁可以对节点做哪些操作。

ACL 具有以下特点:

1. ZooKeeper的权限控制是基于每个znode节点的,需要对每个节点设置权限
2. 每个znode支持设置多种权限控制方案和多个权限
3. 子节点不会继承父节点的权限,客户端无权访问某节点,但可能可以访问它的子节点
4. 所以任何一个客户端都可以通过exists 操作来获得任何znode的状态,从而得知znode是否真的存在。

 

ACL 相关命令

命令语法描述
getAclgetAcl path读取某个节点ACL权限
setAclsetAcl path acllist设置某个节点ACL权限
addauthaddauth scheme authinfo添加认证用户
createcreate [-s] [-e] path data acllist创建节点时指明 ACL 权限



   
       

 

 

 

ACL Permissions

ACL 权限ACL 简写允许的操作
CREATEc创建子节点
DELETEd 删除子节点 (仅下一级节点)
READr获取节点的数据和它的子节点
WRITEw设置节点的数据
ADMINa设置 ACL 权限

 

 

 

 

 

 

 

ACL Schemes
ZooKeeper内置了一些权限控制方案,可以用以下方案为每个节点设置权限:

方案描述
world只有一个用户:anyone,代表所有人(默认)
ip使用IP地址认证
auth使用已添加认证的用户认证
digest使用“用户名:密码”方式认证

 

 

 

 

 

 

 

  
ACL是由鉴权方式(scheme)、该鉴权方式的ID(用户或ip地址)和一个权限(permession)的集合组成。例如,我们想通过一个ip地址为10.0.0.1的客户端访问一个节点。那么,我们需要为节点设置一个ACL,鉴权方式使用IP鉴权方式,鉴权方式的ID为10.0.0.1,只允许读权限。那么 ACL 的格式就是:ip:10.0.0.1:w

world 方案

默认情况下使用 world 方法,任何人有所有权限:

创建节点/abc,赋值20190825,默认具有world全部权限

修改(设置)权限:setAcl <path> world:anyone:<acl>

修改节点/abc权限,从cdrwa改为drwa,创建子节点失败(正常创建节点时会打印Created,如上图)



IP 方案

<ip>:可以是具体IP也可以是IP/bit格式,即IP转换为二进制,匹配前bit位,如192.168.0.0/16匹配192.168.*.*
设置方式:setAcl <path> ip:<ip>:<acl>

每种权限模式也支持在节点创建时直接指定,这样就不是默认的world模式。

初始化设置方式:create node data ip:<ip>:<acl>



auth 方案
设置方式

addauth digest <user>:<password> #添加认证用户,可以是新用户或老用户,老用户密码表示鉴权,新用户密码组合表示添加及鉴权,一个用户名支持匹配多个密码,一个用户加一个密码组成一对认证信息
setAcl <path> auth:<user>:<acl>

最后getAcl查询到的密码为SHA62加密过的密码

 

一个用户支持多个密码



digest 方案
设置方式

setAcl <path> digest:<user>:<password>:<acl>

这里的密码是经过SHA1及BASE64处理的密文,这也是digest和auth两种权限模式的区别,auth为传入明文自动生成秘文,无需用户自己生成,直接设置即可。

在SHELL中可以通过以下命令计算:

echo -n <user>:<password> | openssl dgst -binary -sha1 | openssl base64
先来算一个密文密码:

echo -n admin:admin | openssl dgst -binary -sha1 | openssl base64
x1nq8J5GOJVPY6zgzhtTtA9izLc=


注意了!使用 rmr 删除节点没有权限时,竟然可以使用 delete

待补充:删除目录,删除节点,创建不含value的节点,同一个节点既是目录又有数据,无法创建节点,无报错

原文链接:https://blog.csdn.net/feixiang2039/article/details/79810102

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值