ZK的權限訪問ACL。由schema:id:permission來定義的。
其中schema包括 world、auth、digest、ip,其中world是默認權限,而且是所有人都可以對節點做任意操作,id的話就是不同schema下的標識,比如。auth、digest則代表用戶名和密碼,ip代表ip地址。permission表示具體具有哪些權限:cdwra分別表示create, delete,write,read, admin。其中admin表示具有對節點設置ACL的權限。
a.auth是使用用戶來對某一節點設置權限。使用auth的schema,首先需要創建一個認證用戶:
addauth digest username:password
setAcl /path auth:username:cdwra
b.digest授權模式。需要一個加密的密碼。我們可以在linux上直接執行該命令獲取
echo -n super:admin | openssl dgst -binary -sha1 | openssl base64 創建一個用戶名爲super,密碼爲admin會生成一個字符串
setAcl /path digest:username:加密後的密碼:crdwa
digest與auth的區別在於。digest不需要先添加認證用戶就能設置節點權限,而auth需要先添加認證用戶。
通過digest設置完節點權限後,如果客戶端需要訪問,那麼我們只需要添加認證用戶即可:
addauth digest username:明文密碼
c.world的schema
d.ip的schema
當前客戶端使用localhost連接的。所以提示沒有權限。使用本機Ip連接就可以了
最後一種比較特殊,就是設置集羣的超級用戶。
vim zk的bin目錄下的zkServer.sh找到標紅的一行,將下列代碼寫入並保存進去
先生產超級管理員的加密密碼,然後將密碼寫入如圖下面的命令中。
"-Dzookeeper.DigestAuthenticationProvider.superDigest=root:qiTlqPLK7XM2ht3HMn02qRpkKIE="
將上面的命令加入到上圖箭頭的位置,並重啓zk集羣。
超級用戶集羣添加失敗,等待大佬指正下問題!!!