linux

Linux环境下Zookeeper的权限设置指南

小樊
53
2025-10-12 04:32:14
栏目: 智能运维

Linux环境下Zookeeper权限设置指南

一、基础环境准备:创建专用用户与目录权限

为提升安全性,建议以非root用户运行ZooKeeper。首先创建专用用户及组,并设置数据/日志目录权限:

  1. 创建用户与组

    sudo groupadd zookeeper
    sudo useradd -g zookeeper zookeeper
    
  2. 创建目录并赋权

    sudo mkdir -p /var/lib/zookeeper  # 数据目录
    sudo mkdir -p /var/log/zookeeper  # 日志目录
    sudo chown -R zookeeper:zookeeper /var/lib/zookeeper
    sudo chown -R zookeeper:zookeeper /var/log/zookeeper
    sudo chmod -R 755 /var/lib/zookeeper /var/log/zookeeper  # 允许用户读写,组及其他用户仅读执行
    
  3. 配置文件权限
    确保ZooKeeper配置文件(如/etc/zookeeper/conf/zoo.cfg)仅能被所属用户修改:

    sudo chown zookeeper:zookeeper /etc/zookeeper/conf/zoo.cfg
    sudo chmod 644 /etc/zookeeper/conf/zoo.cfg
    

二、SELinux/AppArmor配置(可选但推荐)

若系统启用SELinux或AppArmor,需调整策略以允许ZooKeeper访问资源:

三、ZooKeeper服务用户绑定

修改ZooKeeper服务文件(如/etc/systemd/system/zookeeper.service),指定运行用户:

[Service]
User=zookeeper
Group=zookeeper

重载systemd配置并重启服务:

sudo systemctl daemon-reload
sudo systemctl restart zookeeper

四、ZooKeeper ACL权限配置(核心安全机制)

ZooKeeper通过**ACL(访问控制列表)**控制对znode(节点)的访问,支持digest(用户名/密码)、ip(IP地址)、world(所有人)等认证方式。

1. 启用SASL认证(可选但推荐)

编辑zoo.cfg,添加以下配置以启用SASL认证:

authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
jaasLoginRenew=3600000  # JAAS配置刷新间隔(毫秒)

2. 创建JAAS配置文件

创建/etc/zookeeper/conf/zookeeper.jaas,定义用户及密码:

Server {
    org.apache.zookeeper.server.auth.DigestLoginModule required
    user_super="super_secret_password"  # 用户名=密码(明文,后续会加密)
    user_admin="admin_secret_password";
};

设置文件权限(仅root可读):

sudo chmod 600 /etc/zookeeper/conf/zookeeper.jaas

3. 启动时加载JAAS配置

通过环境变量指定JAAS文件路径:

export JVMFLAGS="-Djava.security.auth.login.config=/etc/zookeeper/conf/zookeeper.jaas"
bin/zkServer.sh start

4. 设置节点ACL规则

使用zkCli.sh工具创建节点并分配权限:

5. 客户端认证与访问

客户端连接时需提供认证信息:

bin/zkCli.sh -server localhost:2181 -auth digest:super:super_secret_password

认证后,客户端可执行受限操作(如创建/secure_node节点)。

五、防火墙配置

开放ZooKeeper默认端口(2181),允许客户端连接:

sudo firewall-cmd --permanent --zone=public --add-port=2181/tcp
sudo firewall-cmd --reload

六、权限验证

  1. 验证目录权限
    确认/var/lib/zookeeper/var/log/zookeeper的所有者为zookeeper用户。
  2. 验证服务运行用户
    执行ps aux | grep zookeeper,确认进程用户为zookeeper
  3. 验证ACL权限
    使用未认证客户端尝试访问/secure_node,应收到Authentication failed错误;认证后应能正常操作。

通过以上步骤,可在Linux环境下完成ZooKeeper的权限配置,确保数据访问安全。

0
看了该问题的人还看了