Zookeeper集群部署后怎样管理各个客户端服务的读写创建删除权限,采用ACL(Access Control List)访问控制表,可以针对节点设置相关读写等权限,保障数据安全性。
ACL构成
zookeeper 的 acl 通过 [scheme:id:permissions] 来构成权限列表。
- scheme:授权的模式,代表采用的某种权限机制,包括 world、auth、digest、ip、super 几种。
- id:授权对象,代表允许访问的用户。如果我们选择采用 IP 方式,使用的授权对象可以是一个 IP 地址或 IP 地址段;而如果使用 Digest 或 Super 方式,则对应于一个用户名。如果是 World 模式,是授权系统中所有的用户。
- permissions:授权的权限,权限组合字符串,由 cdrwa 组成,其中每个字母代表支持不同权限, 创建权限 create(c)、删除权限 delete(d)、读权限 read(r)、写权限 write(w)、管理权限admin(a)。
模式
描述
world
授权对象只有一个anyone,代表登录到服务器的所有客户端都能对该节点执行某种权限
ip
对连接的客户端使用IP地址认证方式进行认证
auth
使用以添加认证的用户进行认证
digest
使用 用户:密码方式验证
ACL权限介绍
权限类型
ACL简写
描述
read
r
读取节点及显示子节点列表的权限
write
w
设置节点数据的权限
create
c
创建子节点的权限
delete
d
删除子节点的权限
admin
a
设置该节点ACL权限的权限
授权命令介绍
授权命令
用法
描述
getAcl
getAcl path
读取节点的ACL
setAcl
setAcl path acl
设置节点的ACL
create
create path data acl
创建节点时设置acl
addAuth
addAuth scheme auth
添加认证用户,类似于登录操作
ACL实战
1、取消子节点ACL权限
取消节点的读权限后,读取/name节点没有权限
取消节点删除子节点的权限
2、auth授权模式
创建用户
addauth digest fox:123456
设置权限
setAcl /name auth:fox:123456:cdrwa
# 加密
echo -n fox:123456 | openssl dgst -binary -sha1 | openssl base64
setAcl /name auth:fox:ZsWwgmtnTnx1usRF1voHFJAYGQU=:cdrwa
退出客户端,重新连接之后获取/name会没权限,需要添加授权用户。
3、digest授权模式
#设置权限
setAcl /tuling/fox digest:fox:ZsWwgmtnTnx1usRF1voHFJAYGQU=:cdrwa
4、IP授权模式
setAcl /node-ip ip:192.168.109.128:cdwra
create /node-ip data ip:192.168.109.128:cdwra
多个指定IP可以通过逗号分隔, 如 setAcl /node-ip ip:IP1:rw,ip:IP2:a
5、Super 超级管理员模式
这是一种特殊的Digest模式, 在Super模式下超级管理员用户可以对Zookeeper上的节点进行任何的操作。
需要在启动脚本上通过添加JVM 参数开启:
DigestAuthenticationProvider中定义
-Dzookeeper.DigestAuthenticationProvider.superDigest=admin:<base64encoded(SHA1(123456))
版权归原作者 30岁老阿姨 所有, 如有侵权,请联系我们删除。