首页主机资讯Zookeeper在Linux中的权限管理如何操作

Zookeeper在Linux中的权限管理如何操作

时间2026-01-21 21:29:05发布访客分类主机资讯浏览1216
导读:Zookeeper 在 Linux 中的权限管理实操 一 核心概念与权限模型 权限作用于 znode(节点),每个节点可独立设置 ACL,且子节点不会继承父节点权限。 ACL 由三元组构成:scheme:id:permissions。...

Zookeeper 在 Linux 中的权限管理实操

一 核心概念与权限模型

  • 权限作用于 znode(节点),每个节点可独立设置 ACL,且子节点不会继承父节点权限
  • ACL 由三元组构成:scheme:id:permissions
    • 常用 scheme:world(anyone)、ip(按来源 IP)、auth(当前会话已认证用户)、digest(用户名:密码的摘要)。
    • 常用权限:r(读)、w(写)、c(创建子节点)、d(删除子节点)、a(管理 ACL)。
  • 常用命令:getAcl /pathsetAcl /path aclcreate /path data acladdauth scheme auth
  • 默认情况下,新节点常为 world:anyone:cdrwa,生产环境应改为更严格的策略。

二 快速上手 使用 Digest ACL 的推荐做法

  • 生成摘要身份标识
    • 方式一(OpenSSL):
      echo -n 用户名:密码 | openssl dgst -binary -sha1 | openssl base64
    • 方式二(Zookeeper 自带工具):
      java -cp $ZK_HOME/zookeeper.jar:lib/*:conf org.apache.zookeeper.server.auth.DigestAuthenticationProvider 用户名:密码
      输出形如:用户名:BASE64(SHA1(用户名:密码)),在 ACL 中使用该字符串作为 id。
  • 在 zkCli 中设置 ACL
    1. 连接:zkCli.sh -server localhost:2181
    2. 方案 A(直接写摘要):
      setAcl /app digest:alice:BASE64SHA1:cdrwa
    3. 方案 B(先登录再设置,便于当前会话操作):
      addauth digest alice:password
      setAcl /app digest:alice:BASE64SHA1:cdrwa
  • 验证
    • 未认证会话执行 getAcl /app 或 get /app,应提示 Insufficient permission
    • 使用 addauth 登录后再访问,应成功。

三 常见场景与命令示例

  • 仅本机访问
    setAcl /app ip:127.0.0.1:cdrwa
  • 网段白名单
    setAcl /app ip:192.168.1.0/24:cdrwa
  • 多主体组合(IP + 用户)
    setAcl /app ip:192.168.1.10:r, digest:bob:BASE64SHA1:cdrwa
  • 创建节点时同时设置 ACL
    create /app “data” digest:alice:BASE64SHA1:cdrwa
  • 移除 world 权限需谨慎(避免把自己锁在外面)
    setAcl /app world:anyone:(生产慎用)
  • 重要提示
    • setAcl 会覆盖节点原有 ACL;
    • 子节点不继承父节点 ACL,需逐层设置或借助脚本批量设置;
    • 修改前先备份现有 ACL:getAcl /app > acl.bak。

四 进阶 启用 SASL Kerberos 或 JAAS 认证

  • 服务端配置(zoo.cfg)
    authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
    jaasLoginRenew=3600000
  • JAAS 配置(示例:/etc/zookeeper/conf/zookeeper_jaas.conf)
    Server {
    com.sun.security.auth.module.Krb5LoginModule required
    useKeyTab=true
    keyTab=“/etc/krb5.keytab”
    principal=“zookeeper/hostname@REALM.COM”;
    } ;
  • 客户端连接
    zkCli.sh -server zk1:2181 -auth SASL/PLAIN zkuser@REALM.COM
  • 适用场景:跨机房、多租户、强合规环境。配置完成后需重启服务使 SASL 生效。

五 运维与安全注意事项

  • 操作系统层权限
    • 确保数据/日志目录属主正确:
      chown -R zookeeper:zookeeper /var/lib/zookeeper
      chmod -R 750 /var/lib/zookeeper
  • 防火墙与端口
    • 放行客户端端口(默认 2181/tcp):
      firewall-cmd --permanent --zone=public --add-port=2181/tcp & & firewall-cmd --reload
  • SELinux
    • 如遇访问受限,可临时 setenforce 0 排查,生产环境请使用正确的 SELinux 策略。
  • 客户端与服务端一致性
    • 使用 digest 时,客户端连接需携带相同 用户名:密码 或摘要身份;
    • 使用 SASL/Kerberos 时,客户端需配置 JAAS 并指定正确的 principal。
  • 变更流程
    • 先在测试环境验证 ACL 与业务兼容性;
    • 变更窗口内保留回滚方案(如备份 znode 数据与 ACL);
    • 避免移除 a(admin) 权限导致无法再次修改 ACL。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Zookeeper在Linux中的权限管理如何操作
本文地址: https://pptw.com/jishu/789119.html
Linux Zookeeper日志文件如何查看 Linux与PyTorch兼容性问题大吗

游客 回复需填写必要信息