zookeeper权限管理

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

ACL 具有以下特点:

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

 

ACL 相关命令

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



   
       

 

 

 

ACL Permissions

ACL 权限 ACL 简写 允许的操作
CREATE c 创建子节点
DELETE d  删除子节点 (仅下一级节点)
READ r 获取节点的数据和它的子节点
WRITE w 设置节点的数据
ADMIN a 设置 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全部权限

zookeeper权限管理_第1张图片

修改(设置)权限:setAcl world:anyone:

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

zookeeper权限管理_第2张图片

IP 方案

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

zookeeper权限管理_第3张图片

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

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

zookeeper权限管理_第4张图片

auth 方案
设置方式

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

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

zookeeper权限管理_第5张图片

 

一个用户支持多个密码

zookeeper权限管理_第6张图片

digest 方案
设置方式

setAcl digest:::

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

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

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

echo -n admin:admin | openssl dgst -binary -sha1 | openssl base64
x1nq8J5GOJVPY6zgzhtTtA9izLc=
zookeeper权限管理_第7张图片

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

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

zookeeper权限管理_第8张图片

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

你可能感兴趣的:(zookeeper权限管理)