ubuntu

Zookeeper在Ubuntu上的权限设置

小樊
50
2025-09-19 07:58:48
栏目: 智能运维

1. 用户与组配置:创建专用Zookeeper用户
为提升安全性,需创建专用用户和组运行Zookeeper服务。执行以下命令:

sudo addgroup zookeeper  # 创建zookeeper组
sudo adduser --system --group --no-create-home --home /var/lib/zookeeper zookeeper  # 创建zookeeper用户(无登录权限,归属zookeeper组)

2. 文件与目录权限:限制访问范围
确保Zookeeper关键目录(数据目录、配置目录、日志目录)仅能被专用用户访问:

# 数据目录(默认/var/lib/zookeeper)
sudo chown -R zookeeper:zookeeper /var/lib/zookeeper  # 更改所有者
sudo chmod -R 750 /var/lib/zookeeper  # 设置权限(所有者可读写执行,组可读执行,其他无权限)

# 配置目录(默认/etc/zookeeper/conf)
sudo chown zookeeper:zookeeper /etc/zookeeper/conf/zoo.cfg  # 更改配置文件所有者
sudo chmod 640 /etc/zookeeper/conf/zoo.cfg  # 设置配置文件权限(所有者可读写,组可读,其他无权限)

# 日志目录(默认/var/log/zookeeper,若未创建需手动创建)
sudo mkdir -p /var/log/zookeeper
sudo chown -R zookeeper:zookeeper /var/log/zookeeper
sudo chmod -R 750 /var/log/zookeeper

3. 基础配置文件:设置zoo.cfg参数
编辑/etc/zookeeper/conf/zoo.cfg,确保核心配置正确(如数据目录、客户端端口):

tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
# 可选:集群配置(若为集群需添加server.x参数)

4. ACL权限管理:控制节点访问
Zookeeper通过**ACL(访问控制列表)**实现细粒度权限控制,支持world(任何人)、auth(已认证用户)、digest(用户名/密码)、ip(IP白名单)等机制。

4.1 启用ACL认证(Digest模式)
编辑zoo.cfg,添加以下配置启用Digest认证:

authProvider.1=org.apache.zookeeper.server.auth.DigestAuthenticationProvider
requireClientAuthScheme=sasl  # 要求客户端使用SASL认证(Digest属于SASL的一种)

4.2 添加认证用户
使用addauth命令添加用户(密码需加密,可通过echo -n "username:password" | openssl dgst -sha1 -hmac "secret"生成签名,但Zookeeper会自动处理):

# 连接到Zookeeper客户端
/path/to/zookeeper/bin/zkCli.sh -server localhost:2181
# 添加用户(如用户名"admin",密码"admin123")
addauth digest admin:admin123

4.3 设置节点ACL
为特定节点设置权限(如/secure_node节点仅允许admin用户读写):

# 连接到客户端后,设置ACL(digest模式需用"username:password"的哈希值,此处简化为直接使用)
setAcl /secure_node digest:admin:admin123:cdrwa  # 授予创建、读、写、删除、管理权限
# 验证ACL
getAcl /secure_node

5. 防火墙配置:允许客户端访问
若Zookeeper需要对外提供服务,需开放默认端口(2181):

sudo ufw allow 2181/tcp  # 允许TCP协议的2181端口
sudo ufw status  # 检查防火墙状态(确认规则已添加)

6. 验证权限设置
通过客户端操作验证权限是否生效:

# 连接到客户端
/path/to/zookeeper/bin/zkCli.sh -server localhost:2181
# 认证用户(需与addauth一致)
addauth digest admin:admin123
# 尝试创建节点(应成功)
create /secure_node "test_data"
# 尝试未认证用户创建节点(应失败,提示"Authentication failed")
quit  # 退出客户端
/path/to/zookeeper/bin/zkCli.sh -server localhost:2181
create /secure_node "test_data"  # 未认证,操作失败

注意事项

0
看了该问题的人还看了