Ubuntu Zookeeper权限设置指南
导读:Ubuntu Zookeeper权限设置指南 1. 前置准备:安装Zookeeper 确保Ubuntu系统已安装Zookeeper(推荐版本≥3.5.0)。若未安装,可通过以下命令完成: sudo apt update sudo apt i...
Ubuntu Zookeeper权限设置指南
1. 前置准备:安装Zookeeper
确保Ubuntu系统已安装Zookeeper(推荐版本≥3.5.0)。若未安装,可通过以下命令完成:
sudo apt update
sudo apt install zookeeper zookeeperd -y
安装完成后,服务默认以zookeeper用户身份运行(后续需确认用户权限)。
2. 系统级权限配置
2.1 创建专用Zookeeper用户/组
为隔离权限,创建专用用户和组,并设置数据目录归属:
# 创建组和用户(--system表示系统用户,--no-create-home不创建家目录)
sudo addgroup zookeeper
sudo adduser --system --group --no-create-home --home /var/lib/zookeeper zookeeper
# 设置数据目录所有权(ZooKeeper数据默认存放在/var/lib/zookeeper)
sudo chown -R zookeeper:zookeeper /var/lib/zookeeper
# 设置数据目录权限(所有者可读写执行,组和其他用户无权限)
sudo chmod -R 750 /var/lib/zookeeper
2.2 配置文件权限
ZooKeeper主配置文件(/etc/zookeeper/conf/zoo.cfg)需限制为root和zookeeper用户访问:
sudo chown zookeeper:zookeeper /etc/zookeeper/conf/zoo.cfg
sudo chmod 640 /etc/zookeeper/conf/zoo.cfg
2.3 防火墙设置
若需远程访问,开放ZooKeeper默认端口(2181/tcp):
sudo ufw allow 2181/tcp
sudo ufw enable # 启用防火墙(若未启用)
3. ZooKeeper ACL权限配置
ACL(访问控制列表)是Zookeeper权限管理的核心,支持world(全局)、auth(认证用户)、digest(用户名:密码)、ip(IP地址)等认证方式。
3.1 启用SASL认证(推荐)
编辑zoo.cfg,配置SASL作为认证提供者:
# 打开zoo.cfg文件
sudo nano /etc/zookeeper/conf/zoo.cfg
# 添加以下配置(启用SASL认证)
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
jaasLoginRenew=3600000 # JAAS配置刷新间隔(毫秒)
3.2 配置JAAS文件
创建JAAS配置文件(/etc/zookeeper/conf/jaas.conf),定义用户凭据:
sudo nano /etc/zookeeper/conf/jaas.conf
# 添加以下内容(替换为实际用户名和密码)
Server {
org.apache.zookeeper.server.auth.DigestLoginModule required
user_super="super_secret" # 用户super的密码
user_admin="admin_secret";
# 用户admin的密码
}
;
3.3 关联JAAS配置
通过JVM参数指定JAAS文件路径,编辑/etc/default/zookeeper:
sudo nano /etc/default/zookeeper
# 在文件末尾添加(指向JAAS配置文件)
ZOOKEEPER_OPTS="-Djava.security.auth.login.config=/etc/zookeeper/conf/jaas.conf"
4. 用户与权限管理
4.1 重启Zookeeper服务
使配置生效:
sudo systemctl restart zookeeper
sudo systemctl enable zookeeper # 设置开机自启
4.2 使用zkCli.sh创建用户并设置ACL
连接到Zookeeper客户端,执行以下命令:
# 连接到本地Zookeeper服务器
zkCli.sh -server localhost:2181
# 添加认证用户(如super)
addauth digest super:super_secret
# 创建节点并设置ACL(示例:创建/test节点,仅super用户可读写)
create /test "initial data"
setAcl /test digest:super:super_secret:cdrwa # cdrwa=创建、读、写、删除、管理
# 验证ACL(查看/test节点的权限)
getAcl /test
4.3 常见ACL示例
- 允许所有用户读取节点:
setAcl /public_node world:anyone:r - 允许特定IP访问节点:
setAcl /ip_restricted_node ip:192.168.1.100:cdrwa - 创建角色并授权(需先定义角色,再绑定用户):
# 定义角色(如dev_role)并授权 createRole dev_role "user_dev" grant dev_role "read,write" /dev_node
5. 权限验证
5.1 测试认证用户权限
使用super用户连接并操作受保护节点:
zkCli.sh -server localhost:2181
addauth digest super:super_secret
create /test/new_child "child data" # 应成功(super有cdrwa权限)
5.2 测试未授权用户权限
使用未授权用户(如guest)连接,尝试操作受保护节点:
zkCli.sh -server localhost:2181
create /test/new_child "child data" # 应失败(提示"Authentication failed")
注意事项
- 生产环境建议:使用强密码(避免明文存储),定期更换密码;启用SSL/TLS加密客户端与服务器通信;限制ZooKeeper端口仅允许可信IP访问。
- ACL优先级:
auth(认证用户)权限高于world(全局),digest(用户名:密码)权限高于ip(IP地址)。 - 备份配置:修改配置文件前,备份原文件(如
cp /etc/zookeeper/conf/zoo.cfg /etc/zookeeper/conf/zoo.cfg.bak)。
通过以上步骤,可在Ubuntu系统上实现Zookeeper的精细化权限管理,保障数据安全。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Zookeeper权限设置指南
本文地址: https://pptw.com/jishu/738263.html
