Zookeeper在Linux中主要通過ACL(訪問控制列表)和認證機制實現權限管理,核心要點如下:
ACL(訪問控制列表)
world
:默認模式,所有用戶可訪問。ip
:基于IP地址限制訪問,如ip:192.168.1.0/24:rw
。auth
:用戶名+密碼認證(需先通過addauth
添加用戶)。digest
:加密的用戶名+密碼認證(推薦,使用SHA-1加密)。super
:超級管理員模式,擁有所有權限。c
(創建子節點)、d
(刪除子節點)、r
(讀取數據/子節點列表)、w
(寫入數據)、a
(管理ACL)。認證機制
zoo.cfg
中指定認證方式,如authProvider.1=org.apache.zookeeper.server.auth.DigestAuthenticationProvider
。addauth
命令添加認證用戶(如addauth digest user1:password
)。getAcl /path/to/node
。setAcl /path/to/node <scheme>:<ID>:<權限>
,例如:
setAcl /node1 digest:user1:rw
(設置用戶user1的讀寫權限)。setAcl /node2 ip:192.168.1.100:r
(允許特定IP讀?。?。addauth <scheme> <auth>
,如addauth digest zkadmin:admin123
。在zoo.cfg
中配置認證和ACL相關參數:
authProvider.1=org.apache.zookeeper.server.auth.DigestAuthenticationProvider
。zookeeper.DigestAuthenticationProvider.superDigest=base64encoded(SHA1(password))
。digest
或kerberos/sasl
認證,避免明文密碼;定期更新ACL權限。/var/lib/zookeeper
)和日志目錄權限正確,通常設置為750
,所有者為zookeeper
用戶。sudo setenforce 0
)。參考來源: