Zookeeper的ACL許可權控制
1.Zookeeper的節點有5種操作許可權
CREATE、READ、WRITE、DELETE、ADMIN
也就是 增、查、改、刪、管理許可權,
這5種許可權簡寫為crwda(即:每個單詞的首字元縮寫)
注意這5種許可權中,
delete是指對子節點的刪除許可權,
其它4種許可權指對自身節點的操作許可權。
2.身份的認證有4種方式
world:預設方式,相當於全世界都能訪問
auth:代表已經認證通過的使用者(cli中可以通過addauth digest user:pwd 來添加當前上下文中的授權使用者)
digest:即使用者名稱:密碼這種方式認證,這也是業務系統中最常用的
ip:使用IP地址認證
3.設定訪問控制
3.1.方法一(推薦)
3.1.1.增加一個認證使用者
addauth digest 使用者名稱:密碼明文
eg. addauth digest user1:password1
3.1.2.設定許可權
setAcl /path auth:使用者名稱:密碼明文:許可權
eg. setAcl /test auth:user1:password1:cdrwa
3.1.3.檢視Acl設定
getAcl /path
3.2.方法二
setAcl /path digest:使用者名稱:密碼密文:許可權
注:這裡的加密規則是SHA1加密,然後base64編碼。
4.使用auth進行身份認證的場景
在zookeeper上面,使用yuwen:zdh1234使用者,
建立/test目錄,進行增刪改查。
4.1.建立目錄
使用zkCli.sh客戶端登陸,建立目錄:
create /test
4.2.檢視目錄許可權
getAcl /test
'world,'anyone : cdrwa
可以看到任何人對/test目錄都有增、刪、改、查、管理許可權。
4.3.增加一個認證使用者
增加的使用者名稱和密碼可以自定義:
addauth digest yuwen:zdh1234
4.4.使用上面的認證使用者設定目錄的許可權
setAcl /test auth:yuwen:zdh1234:cdrwa
4.5.檢視目錄許可權
getAcl /test
'digest,'yuwen:zCY6ODYZ1NC2Ci6hz4bXA3AESFE= : cdrwa
可以看到yuwen對/test目錄有增、刪、改、查、管理許可權,
而不是原來的anyone任何人了。
ls /test
可以看到命令執行成功。
4.6.重新登陸檢視目錄
新開一個zkCli.sh客戶端重新登陸,
檢視/test目錄:
ls /test
KeeperErrorCode = NoAuth for /test
可以看到沒有對/test目錄的檢視許可權。
4.7.使用認證使用者檢視
增加一個認證使用者:
addauth digest yuwen:zdh1234
檢視/test目錄:
ls /test
可以看到命令執行成功。
4.8.一點說明
上面第4.3 步中如果不增加一個認證使用者,
則在設定許可權的時候,直接使用如下命令:
setAcl /path digest:使用者名稱:密碼密文:許可權
setAcl /test digest:yuwen:zCY6ODYZ1NC2Ci6hz4bXA3AESFE=:cdrwa
但是ls /test的時候任然會沒有執行許可權。
5.使用sasl進行身份認證的場景
在zookeeper上面,使用yuwen使用者,
建立/testB目錄,進行增刪改查。
使用zkCli.sh客戶端登陸,
建立/testB目錄,同時設定sasl的ACL,
賦予yuwen對/testB目錄增、刪、改、查、管理許可權:
create /testB sasl:yuwen:zdh1234:cdrwa
create -s /testB data sasl:yuwen:zdh1234:cdrwa
6.使用IP地址進行身份認證的場景
create /testC ip:10.43.159.12:cdrwa