侧边栏壁纸
博主头像
zyixin

当你觉得为时已晚的时候,恰恰是最早的时候

  • 累计撰写 67 篇文章
  • 累计创建 0 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

Zookeeper基于IP的ACL权限控制

zyixin
2025-07-17 / 0 评论 / 1 点赞 / 29 阅读 / 485 字
温馨提示:
本文最后更新于 2025-07-17,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

基于IP的ACL权限控制(节点级限制)

此方法直接针对ZooKeeper的节点(znode)设置IP白名单,操作步骤如下:

1. 进入ZooKeeper客户端

./zkCli.sh -server localhost:2181

2. 为指定节点设置IP访问规则使用setAcl命令,语法为

setAcl <节点路径> ip:<IP地址>:<权限>
  • 示例

允许192.168.1.100对/节点的完全权限:

setAcl / ip:192.168.1.100:cdrwa  # cdrwa表示所有操作权限

允许多个IP(如192.168.1.101只读、192.168.1.102读写):

setAcl / ip:192.168.1.101:r,ip:192.168.1.102:cdrw

3. 权限说明

  • r:读取节点数据
  • w:写入节点数据
  • c:创建子节点
  • d:删除子节点
  • a:管理ACL权限

注意:
ACL权限不继承,需为每个节点单独设置。
默认权限为world:anyone:cdrwa(所有人可访问),需显式覆盖。

4. 访问测试

允许的IP访问时
image
不允许的IP访问时
image-1752718172898

5. 临时跳过ACL验证(推荐:适用于因为错误配置导致完全无法连接时)

若因ACL错误导致所有客户端均无法连接,需在服务端配置中跳过ACL验证:

1. 修改zoo.cfg配置文件,在文件末尾添加
vi zoo.cfg  # 进入配置文件
skipACL=yes  # 跳过ACL权限验证[9](@ref)
2. 重启ZooKeeper服务
./zkServer.sh restart  # 重启服务使配置生效
3. 重新连接并修复ACL连接后使用setAcl重置权限(如恢复默认)
setAcl / world:anyone:cdrwa  # 开放所有IP访问
4. 恢复ACL验证修复后务必删除skipACL=yes并重启服务,否则会暴露安全风险。

⚠️ 注意:此方法仅作临时恢复,长期跳过ACL会严重威胁集群安全。

1

评论区