Ⅳ:zookeeper的acl权限控制
2021最新zookeeper系列
?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??
Ⅰ:zookeeper的單機安裝 - 詳細教程:https://blog.csdn.net/Kevinnsm/article/details/116134397?spm=1001.2014.3001.5501
Ⅱ:zookeeper的相關shell命令:https://blog.csdn.net/Kevinnsm/article/details/116137602?spm=1001.2014.3001.5501
Ⅲ:zookeeper之查看節點的狀態信息:https://blog.csdn.net/Kevinnsm/article/details/116143218?spm=1001.2014.3001.5501
Ⅳ:zookeeper的acl權限控制:https://blog.csdn.net/Kevinnsm/article/details/116167394?spm=1001.2014.3001.5501
Ⅴ:zookeeper的相關Java Api:https://blog.csdn.net/Kevinnsm/article/details/116462557?spm=1001.2014.3001.5501
Ⅵ:zookeeper的Watcher事件監聽機制:https://blog.csdn.net/Kevinnsm/article/details/116501842?spm=1001.2014.3001.5501
Ⅶ:教你一招利用zookeeper作為服務的配置中心:https://blog.csdn.net/Kevinnsm/article/details/116542974?spm=1001.2014.3001.5501
?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??
文章目錄
- 1、如何理解acl的權限控制
- 2、權限模式
- 3、授權的對象
- 4、授予的權限
- 5、授權的相關命令
- 6、授權模式
- Ⅰ、word授權模式
- Ⅱ、IP授權模式
- Ⅱ.Ⅰ、單ip授權模式
- Ⅱ.Ⅱ、多ip授權模式
 
- Ⅲ、auth授權模式
- Ⅳ、digest授權模式
- Ⅴ、多模式授權
 
- 7、ACL超級管理員
1、如何理解acl的權限控制
根據名稱acl可以得出全稱Access Controller List,無非就是訪問控制列表,簡單了說就是對zookeeper的節點做訪問權限控制
2、權限模式
| ip | 對客戶端使用ip地址認證 | 
| auth | 使用已經添加認證的用戶認證 | 
| digest | 使用用戶名,密碼認證 | 
3、授權的對象
授權對象指的是權限賦予的實體
4、授予的權限
| create | c | 可以創建子節點 | 
| delete | d | 可以刪除子節點 | 
| read | r | 可以讀取節點數據并顯示子節點列表 | 
| write | w | 可以設置節點數據 | 
| admin | a | 可以設置節點訪問權限控制列表權限 | 
5、授權的相關命令
| getAcl | getAcl /path | 查看節點的權限 | 
| setAcl | setAcl /path [anyone] [權限] | 為節點設置權限 | 
| addauth | r | 可以讀取節點數據并顯示子節點列表 | 
6、授權模式
Ⅰ、word授權模式
setAcl /path world:anyone:權限(cdraw) 設置權限
getAcl /path 獲取節點權限
get /path 查看節點的權限
 
setAcl /unity/node1 world:anyone:drwa 意思是為node1節點設置world模式授權方式,對于anyone用戶都有drwa權限
 
 由于我沒有設置create權限,所以無法在node1節點下創建子節點。
 
為/unity設置rwa權限,嘗試刪除/unity的子節點node2
 
 很明顯因為/unity沒有delete權限,所有無法刪除子節點
注意這些都是為父節點設置權限,操作子節點
注意如果設置權限為空,由于沒有admin權限,則管理該節點的權限都沒了
Ⅱ、IP授權模式
演示IP授權模式需要使用兩臺云服務器,為此我準備了兩個
 
 第二臺需要安裝jdk和zookeeper,第一章已經演示過就不再多說
第一章:zookeeper的單機安裝 - 詳細教程:https://blog.csdn.net/Kevinnsm/article/details/116134397?spm=1001.2014.3001.5501
?? 此處默認已經配置好 ??
注意記得將第一臺云服務器的2181端口對外開放
 云服務器端口對外開放詳解:https://blog.csdn.net/Kevinnsm/article/details/116199190?spm=1001.2014.3001.5501
開啟第一臺云服務器的zookeeper服務
./zkServer.sh start
將第二臺服務器cd到zookeeper的bin目錄下,連接第一臺服務器的zookeeper客戶端,執行以下命令
.zkCli.sh -server IP地址
在第一個窗口創建一個父節點和兩個子節點
 
在第二個窗口查看權限模式
 
Ⅱ.Ⅰ、單ip授權模式
在窗口1設置ip授權模式
 setAcl /unity ip:窗口2的ip地址:cdrwa
 
在窗口2查看情況
 
此時由于設置了/unity節點的授權模式為ip模式:ip地址為
 8.140.37.103;所以端口號為123.57.252.59的窗口1就不能訪問
Ⅱ.Ⅱ、多ip授權模式
窗口1設置,查看權限(多ip中間用,隔開即可)
 
 窗口2查看權限
 
Ⅲ、auth授權模式
 上圖中的密碼是經過加密的
由于已經登錄過,所以有權限訪問訪問
 
 當我退出重新登錄連接客戶端訪問該節點時,就會無權限
 重新認證之后再訪問就可以了
 
Ⅳ、digest授權模式
setAcl /path digest:用戶名:密碼:權限
 注意這里的密碼是經過SHA1和BASE64處理的密文
 可以通過以下生成
 echo -n super:user | openssl dgst -binary -sha1 | openssl base64
 
 此處的super是用戶名,user是密碼
認證:
addauth digest 用戶名:密碼(這里的密碼是明文)
Ⅴ、多模式授權
setAcl /test ip:123.57.252.59:cdrwa,auth:user:cdrwa
7、ACL超級管理員
有時可能某個節點經過我們設置權限之后,可能任何用戶都不能訪問(包括本身),所以需要一個超級管理員來進行最終操作
打開zookeeper目錄下的/bin/zkServer.sh 腳本文件
vim zkServer.sh
找到如下這一行
 
 加入以下
 
這是腳本中啟動zookeeper的命令,默認只有兩個配置項,我們可以手動添加一個超級管理員配置項
"-Dzookeeper.DigestAuthenticationProvider.superDigest=super:GR9f4mKrV2reacyCyiukMpZl5qc=“
“GR9f4mKrV2reacyCyiukMpZl5qc=”這一串是加密后的密碼
之后重啟服務,重新連接客戶端即可
./zkServer.sh restart
 ./zkCli.sh -server 你的ip地址
創建一個node節點,然后設置ip授權模式,使得除了這個ip其他用戶都無法訪問node節點
 
 
 本章結束~ ??
總結
以上是生活随笔為你收集整理的Ⅳ:zookeeper的acl权限控制的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Ⅲ:zookeeper之查看节点的状态及
- 下一篇: 云服务器Linux jdk安装详解(ce
