1. 用户认证与权限管理
setAcl命令为每个znode精准定义权限,支持world(全局)、ip(IP地址)、auth(认证用户)、digest(用户名密码)等模式。例如,zkCli.sh setAcl /path/to/node world:anyone:r赋予所有用户只读权限,zkCli.sh setAcl /path/to/node user1:password:rw为user1分配读写权限。Digest认证(需配置JAAS文件)、IP地址过滤(通过zoo.cfg的allow/deny参数限制访问源)、Kerberos认证(适用于企业级高安全场景)。例如,配置authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider启用SASL认证。2. 数据传输加密
zoo.cfg启用安全端口(如secureClientPort 2281),并设置密钥库(ssl.keystore.location)与信任库(ssl.truststore.location)参数,加密客户端与服务器间的通信。需提前使用OpenSSL生成证书并导入Java KeyStore(JKS)。3. 网络访问控制
iptables或ufw限制仅允许特定IP地址访问ZooKeeper默认端口(2181)或其他自定义端口。例如,sudo ufw allow from 192.168.1.0/24 to any port 2181仅允许192.168.1.0/24网段访问。zoo.cfg中的clientPort(如改为2182),降低被恶意扫描的风险。4. 审计与监控
log4j.properties配置日志级别(如DEBUG),记录用户操作轨迹(如节点创建、删除、权限修改),便于事后追溯。5. 系统与服务加固
zookeeper)和组,将ZooKeeper的数据目录(/var/lib/zookeeper)、日志目录(/var/log/zookeeper)及配置文件(/etc/zookeeper/conf/zoo.cfg)的所有权归属该用户,限制其他用户访问。chcon命令修改ZooKeeper目录的安全上下文(如chcon -Rt zookeeper_var_lib_t /var/lib/zookeeper);若使用AppArmor,编辑对应配置文件(如/etc/apparmor.d/usr.sbin.zookeeper)允许ZooKeeper访问必要资源。zkSnapShot.sh工具),防止数据丢失。6. 其他安全措施