Loading

Zookeeper:acl权限控制

1.概述

acl:access control list 访问控制列表,使用scheme:id:permission来表示

scheme:权限模式

id:授权对象

permission:授予的权限

其特性如下:

Zookeeper的权限控制是基于每个znode节点的,需要对每个节点设置权限。

每个znode支持多种权限控制方案和多个权限

子节点不会继承父节点的权限,客户端无权访问某个节点,但可以访问它的子节点

2.授权模式

world    只有一个用户:anyone,代表登陆zookeeper所有人(默认)

ip           对客户端使用ip地址认证

auth      使用已添加认证的用户认证

digest   使用“用户名:密码”方式认证

3.授权对象

给谁授予权限

授权对象ID是指,权限赋予的尸体,例如:IP地址或用户。

4.授予的权限

权限 ACL简写 描述
create c 可以创建子节点
delete d 可以删除子节点(仅下一级节点)
read r 可以读取节点数据及显示子节点列表
write w 可以设置节点数据
admin a 可以设置节点访问控制列表权限

 

 

 

 

 

 

 

 

5.相关命令

1
2
3
getAcl path  #读取acl权限
setAcl path acl  #设置acl权限
addauth scheme auth   #添加认证用户

6.详细命令

world模式:

1
setAcl <path> world:anyone:<acl>

ip模式:

1
setAcl <path> ip:<ip>:<acl>

auth模式:

先添加认证用户:

1
addauth digest <user>:<password>
1
setAcl <path> auth:<user>:<acl>

digest模式:  

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

 这里的面面是经过SHA1及BASE64处理的密文,在shell中可以通过一下命令计算:

1
echo -n <user>:<password> | openssl dgst -binary -sha1 | openssl base64

多种模式授权:

同一个节点可以使用多种模式授权,用逗号分隔

1
setAcl <path> ip:<ip>:<acl>,auth:<user>:<password>:<acl>,digest:<user>:<password>:<acl>

7.acl超级管理员

zookeeper的权限管理模式有一种叫做super,超管可以访问任何权限的节点。

假如超管是super:admin,首先生成密码的密文

1
echo -n super:admin | openssl dgst -binary -sha1 | openssl base64

 编辑zookeeper的服务器脚本文件zkServer.sh:

找到该行

 

 加入如下命令:其中super为超管的名字,后面为密码

1
"-Dzookeeper.DigestAuthenticationProvider.superDigest=super:xQJmxLMiHGwaqBvst5y6rkB6HQs="

 

 然后重启zookeeper服务,配置即可生效。

1
addauth digest super:admin #添加超级管理员用户 
posted @   秋风飒飒吹  阅读(306)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示