ACL權限控制
- 針對節點可以設置相關讀寫等權限,目的爲了保障數據安全性
- 權限permissions可以指定不同的權限範圍以及角色
ACL命令行
- getAcl:獲取某個節點的acl權限信息
- setAcl:設置某個節點的acl權限信息
- addauth:輸入認證授權信息,註冊時輸入明文密碼(登陸)但是在zk的系統裏,密碼是以加密的形式存在的
- zk的acl通過[scheme?permissions]來構成權限列表
scheme:代表採用的某種權限機制
id:代表允許訪問的用戶
permissions:權限組合字符串 - scheme
1.world:它下面只有一個id, 叫anyone, world:anyone代表任何人,zookeeper中對所有人有權限的結點就是屬於world:anyone的 world:anyone:[permissions]
2.auth:代表認證登陸,需要註冊用戶有權限就可以,形式爲auth:user:password:[permissions]
3.digest:需要對密碼加密才能訪問,組合形式爲digest:username:BASE64(SHA1(password)):[permissions]
4.ip:當設置爲ip指定的ip地址,此時限制ip進行訪問,比如ip:192.168.1.1:[permissions]
5.super:代表超級管理員,擁有所有的權限 - premissions
world
1.權限字符串縮寫crdwa
CREATE:創建子節點;
DELETE:刪除子節點;
READ:獲取節點/子節點;
WRITE:設置節點數據;
ADMIN:設置權限
設置權限
setAcl /bushro world:anyone:crwa
再刪除就提示沒有權限了
auth授權方式
addauth digest bushro:bushro
添加對應的授權認證
setAcl /bushro auth:bushro:bushro:cdrwa
設置權限
digest授權方式
密碼是加密過後的
認證
addauth digest bushro:bushro
ip
super
增加超級管理員,編輯zkServer.sh
添加如下,後面的是賬號和加密的密碼,密碼是BASE64(SHA1(password))加密過後的
-Dzookeeper.DigestAuthenticationProvider.superDigest=bushro:TtxWlRxmb4NPYUXbhYgJZWoOxiY=
重新啓動zookeeper./zkServer.sh restart
ACL常用使用場景
- 開發/測試環境分離,開發者無權限操作測試庫的節點,只能看
- 生成環境上控制指定ip的服務可以訪問相關節點,防止混亂
zk四字命令Four Letter Words
- zk可以通過它自身提供的簡寫命令來和服務器進行交互
- 需要使用到nc命令,安裝:yum install nc
- echo [commond] | nc [ip] [port]
- [stat] 查看zk的狀態信息,以及是否mode(集羣還是單例模式)
- [ruok]查看當前zkserver是否啓動,返回imok
- [dump] 列出未經處理的會話和臨時節點
- [conf] 查看服務器配置
- [cons] 展示連接到服務器的客戶端信息
- [envi] 環境變量
- [mntr] 監控zk健康信息
- [wchs] 展示watch的信息
- [wchc] 與[wchp]session與watch及path與watch信息
編輯conf下的配置文件,最後一行加上
4lw.commands.whitelist=*