温馨提示×

Zookeeper安全设置有哪些

小樊
44
2025-12-23 02:59:41
栏目: 大数据

Zookeeper安全设置清单

一 网络与访问控制

  • 限制访问端口与来源:仅开放必要端口(客户端端口2181,集群通信端口如3888),通过防火墙设置IP白名单,仅允许受信任网段/跳板机访问。示例(firewalld):firewall-cmd --permanent --add-rich-rule=‘rule family=“ipv4” source address=“192.168.1.0/24” port port=“2181” protocol=“tcp” accept’ && firewall-cmd --reload。
  • 服务最小化:关闭未使用的端口、管理接口与特性,减少攻击面。
  • 主机与系统加固:为运行 Zookeeper 的系统账号设置最小权限;在 CentOS/RHEL 上按需配置 SELinux 策略,确保数据与日志目录仅对 Zookeeper 运行账号可写。

二 身份与授权

  • SASL 认证(推荐):在服务端启用 SASL,并强制客户端认证。示例(zoo.cfg):authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider;requireClientAuthScheme=sasl;jaasLoginRenew=3600000。提供 JAAS 配置(Digest 示例):Server { org.apache.zookeeper.server.auth.DigestLoginModule required user_admin=“password” user_kafka=“password”; }; 启动参数加入 -Djava.security.auth.login.config=/path/jaas.conf。Java 客户端同样通过 -Djava.security.auth.login.config 指定;全部客户端就绪后,将控制台参数 AuthEnabled=true 打开以强制校验。
  • Kerberos 集成(企业环境):使用 GSSAPI/Kerberos,服务端 JAAS 采用 Krb5LoginModule 并配置 keytab 与服务主体(principal),客户端使用对应主体/keytab 登录,适用于 Hadoop 生态等强认证场景。
  • ACL 细粒度授权:对关键 znode 设置 ACL,语法为 scheme:id:permission。常用 scheme:
    • world:anyone(默认,任何人)
    • ip:192.168.1.0/24(网段)
    • digest:user:BASE64(SHA1(user:pass))(常用,建议)
    • auth(已认证主体)
    • super(超级权限,谨慎使用)
      常用权限:c r w d a(Create、Read、Write、Delete、Admin)。注意:子节点不继承父节点 ACL,需逐节点设置;命令:getAcl、setAcl、addauth。
  • 集中式授权(可选):结合 Apache Ranger 做统一策略管理与审计。

三 加密与传输

  • 传输加密:启用 TLS/SSL 保护客户端与服务端、以及集群节点间通信,防止窃听与篡改。
  • 数据加密:对存储在 Zookeeper 中的敏感数据在客户端侧进行加密,服务器端不负责解密,降低数据泄露风险。

四 审计与监控

  • 审计日志:启用访问与操作审计,记录关键事件(如鉴权成功/失败、ACL 变更、敏感路径读写),便于追溯与合规。
  • 运行监控与告警:监控会话数、延迟、异常连接与错误率,设置阈值告警,及时发现暴力探测或未授权访问尝试。

五 运维与基线

  • 配置与文件权限:保护配置文件(如 zoo.cfg)、JAAS 文件与密钥文件,仅对 Zookeeper 运行账号可读;数据与日志目录权限最小化。
  • 版本与补丁:定期升级 Zookeeper 与依赖组件,修复已知漏洞。
  • 连接与资源限制:在 zoo.cfg 中合理设置 maxClientCnxns 等参数,防止连接耗尽与 DoS。
  • 安全基线核查:定期复核网络白名单、认证启用状态、关键 znode 的 ACL、TLS 证书有效期与吊销状态。

0