Zookeeper权限设置 ACL

zookeeper默认提供的开放式操作权限,在实际部署中需要对节点的访问进行限制,这是就用到了zookeeper提供的ACL权限控制功能。

一.zookeeper的权限类型

  • c: 创建节点权限

  • r: 读取数据权限

  • w: 写入数据权限

  • d: 删除节点权限

  • a: 节点授权权限

二.zookeeper的授权类型

  • world:默认权限,开放式访问

  • auth:对当前已经登录用户授予权限

  • digest:指定用户名密码进行授权

  • ip: 指定ip地址进行授权

  • super: 超级管理员权限

三.zookeeper权限设置示例

查看节点权限

getAcl /test

登录用户

addauth digest <用户名>:<密码>

登录用户会将用户名注册到上下文中,在访问auth/digest授权的节点时,会根据上下文中存在的用户名进行权限校验

world授权

setAcl /test world:anyone:crwda

auth授权

setAcl /test auth::crwda

auth授权不需要指定用户,它会对当前上下文中已经登录的用户进行授权

digest授权

setAcl /test digest:<用户名>:<用户名:密码的密文>:crwda

digest是对指定用户进行授权,其中密码需要使用SHA1+BASE64密文,linux下可以使用如下命令对密码加密

echo -n <用户名>:<密码> | openssl dgst -binary -sha1 | openssl base64

ip授权

setAcl /test ip:127.0.0.1:crwda

多个授权使用逗号分隔

 setAcl /test ip:127.0.0.1:crwda,auth::crwda

四.超级管理员权限

zookeeper是提供超级管理员权限的,它需要在每次服务启动是进行指定,在使用中如果检测到超级管理员的认证即可获得所有节点的访问权限

超级管理员设置方式

首先定义超级管理员的用户名密码,并获取SHA1+BASE64密文

echo -n root:123456 | openssl dgst -binary -sha1 | openssl base64

然后将用户名:密文配置到zookeeper的启动脚本zkServer.sh中,找到nohup启动命令,添加Dzookeeper.DigestAuthenticationProvider.superDigest启动参数

nohup "$JAVA" "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" "-Dzookeeper.DigestAuthenticationProvider.superDigest=root:u53OoA8hprX59uwFsvQBS3QuI00="

最后重启服务,使用addauth登录超级管理员用户

 addauth digest root:123456

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值