在Ubuntu上安装Zookeeper是权限管理的基础。若未安装,可通过以下命令完成:
sudo apt update
sudo apt install zookeeper zookeeperd -y
安装完成后,启动Zookeeper服务并设置开机自启:
sudo systemctl start zookeeper
sudo systemctl enable zookeeper
权限管理的核心是通过**ACL(访问控制列表)**实现,需修改Zookeeper配置文件并启用认证机制。
zoo.cfg配置文件编辑Zookeeper主配置文件(通常位于/etc/zookeeper/conf/zoo.cfg),添加以下内容以启用SASL认证:
authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider
requireClientAuthScheme=sasl
jaasLoginRenew=3600000 # JAAS配置刷新间隔(毫秒)
保存并退出。
JAAS(Java Authentication and Authorization Service)用于定义用户认证信息。创建配置文件(如/etc/zookeeper/conf/zookeeper_jaas.conf),内容如下:
Server {
org.apache.zookeeper.server.auth.DigestLoginModule required
user_super="super_secret_password" # 超级管理员账号及密码
user_admin="admin_secret"; # 管理员账号及密码
};
注:密码需使用明文存储,但Zookeeper会通过Digest算法加密后存储,无需担心明文泄露。
编辑zoo.cfg,添加JAAS配置文件路径:
jaasLoginContextName=zookeeper_jaas # 与JAAS文件中的Server名称一致
权限管理需通过**ZooKeeper命令行工具(zkCli.sh)**完成,步骤如下:
/opt/zookeeper/bin/zkCli.sh -server localhost:2181
(若Zookeeper安装在非默认路径,需替换为实际路径)
使用addauth命令为用户添加认证信息(以super用户为例):
addauth digest super:super_secret_password
创建节点时,可通过-s参数创建持久节点,-e参数创建临时节点,并通过acl参数设置权限。例如:
create -s /secure_node "secure_data" digest:super:super_secret_password:cdrwa
digest:super:super_secret_password:使用Digest认证方式,指定用户名和加密后的密码(Zookeeper会自动加密);cdrwa:权限组合(c=创建、d=删除、r=读取、w=写入、a=管理ACL)。使用getAcl命令查看节点的权限设置:
getAcl /secure_node
输出示例:
'digest,'super:base64_encoded_password
: cdrwa
通过不同用户身份验证权限是否生效:
super用户操作addauth digest super:super_secret_password
create /secure_node/child "child_data" # 应成功
delete /secure_node # 应成功
addauth digest unauthorized:wrong_password
create /secure_node/child "child_data" # 应返回"Authentication failed"错误
ufw)限制Zookeeper端口(默认2181)的访问范围:sudo ufw allow from 192.168.1.0/24 to any port 2181
zoo.cfg和JAAS文件,避免配置丢失。通过以上步骤,即可在Ubuntu上完成Zookeeper的权限管理,确保数据访问的安全性。