前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Zookeeper-权限管控(ACL)

Zookeeper-权限管控(ACL)

作者头像
运维小路
发布于 2025-05-17 06:37:30
发布于 2025-05-17 06:37:30
10500
代码可运行
举报
文章被收录于专栏:运维小路运维小路
运行总次数:0
代码可运行

作者介绍:简历上没有一个精通的运维工程师,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

前面我们介绍介绍了几个常用的代理服务器,本章节我们讲来讲解Zookeeper这个中间件

前面的操作无论是控制台也好,还是通过SDK的方式去链接(后面案例讲解),实际上都是没有认证的。在目前很多环境都有类似弱密码或者无密码的扫描,所以针对ZooKeeper 也需要进行权限管控,也是安全需要。

ZooKeeper 的权限管控通过ACL(Access Control List,访问控制列表实现,用于控制客户端对 znode(数据节点)的访问权限。以下是关于 ZooKeeper ACL 的详细说明:

1.ACL 的基本概念

ACL 是 ZooKeeper 权限控制的核心机制,用于定义哪些客户端可以访问特定的 znode,以及它们可以执行哪些操作。ACL 的实现类似于 UNIX 文件系统的权限控制,但它更加灵活。

2. 支持的权限模式

模式

描述

示例

world

默认模式,所有用户可访问。ID固定为anyone。

world:anyone:cdrwa

auth

使用当前会话中已认证的用户,无需指定ID。需先调用addauth。

auth::cdrwa

digest

用户名+密码认证,密码以SHA1哈希存储。需提前调用addauth digest user:pass。

digest:user:XDkd2dsEuhj9inqu2qjqQ==:cdrwa

ip

基于客户端IP地址认证。

ip:192.168.1.1:cdrwa

sasl

集成Kerberos等安全协议,适用于企业级认证。

sasl:user@REALM:cdrwa


3. 权限类型

权限

缩写

描述

CREATE

c

允许创建子节点。

READ

r

允许读取节点数据及子节点列表。

WRITE

w

允许修改节点数据。

DELETE

d

允许删除子节点(仅对子节点有效)。

ADMIN

a

允许设置节点的ACL。

4.权限操作

添加或者修改认证,这个认证不具有继承性,当前设置只确保/path有认证,但是/path/1及其他子znode不会有认证。

需要注意就是已经跑上业务的ZooKeeper集群并不是添加密码认证,因为这个涉及到业务端的修改。

4.1 密码生成

这里的密码生成的时候,会把账号也包括进去进行hash计算,所以这里对应的账号密码需要和实际添加acl规则的时候保持一致,否则就会出现认证失败的情况。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@localhost ~]# java -cp "/opt/zookeeper1/lib/*" org.apache.zookeeper.server.auth.DigestAuthenticationProvider user1:pass123
14:16:03.407 [main] INFO org.apache.zookeeper.server.auth.DigestAuthenticationProvider - ACL digest algorithm is: SHA1
user1:pass123->user1:3pSOxG2XvEeQTEHYsoM/cfCyoO4=

4.2 添加访问权限

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 未认证时访问被拒绝
get /secure-node
# 输出:Authentication is not valid : /secure-node

# 添加认证后允许访问,这个地方使用明文
addauth digest user:pass123
get /secure-node

4.3 设置权限

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#设置修改历史目录权限 
#这里需要使用上面生成的密文 
setAcl /path digest:user:密文:crwda
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
setAcl /test1 digest:user:LQIBOXBNEwStXazl6y5HKgpmPjo=:crdwa
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#创建时候带权限,这里也需要使用密文 
create /myznode mydata digest:user:密文:cdrwa

4.4 删除认证

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#其实就是设置为默认权限 
setAcl /path world:anyone:crwda

4.5 忘记密码找回

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#修改配置文件
zoo.cfg 
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
skipACL=yes 
#重启zk服务器,再进入就不需要密码
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.ACL 的基本概念
  • 2. 支持的权限模式
  • 3. 权限类型
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档