1. 程式人生 > >ZooKeeper學習之zookeeper的ACL(AUTH)

ZooKeeper學習之zookeeper的ACL(AUTH)

zookeeper的ACL(AUTH)
ACL(Access Control List),Zookeeper作為一個分散式協調框架,其內部儲存的都是一些關於分散式
系統執行時狀態的元資料,尤其是設計到一些分散式鎖,Master選舉和協調等應用場景。我們需要有
效地保障Zookeeper中的資料安全,Zookeeper提供了三種模式。許可權模式,授權物件,許可權。
許可權模式:Scheme,開發人員最多使用的如下四種許可權模式:
    IP:ip模式通過ip地址粒度進行許可權控制模式,例如配置了:192.168.110.135即表示許可權控
           制都是針對這個ip地址的,同時也支援按網段分配,比如:192.168.110.*
    Digest:digest是最常用的許可權控制模式,也更符合我們對許可權控制的認識,其類似於
               "username:password"形式的許可權標識進行許可權配置。ZK會對形成的許可權標識先後進
                行兩次編碼處理,粉筆是SHA-1加密演算法和Base64編碼。
        World:World是一直最開放的許可權控制模式。這種模式可以看做為特殊的Digest,他僅僅是
               一個標識而已。
        Super:超級使用者模式,在超級使用者模式下可以對ZK任意進行操作。
 
許可權物件:值得是許可權賦予的使用者或者是一個指定的實體,例如ip地址或機器等。在不同的模式下,
授權物件是不同的。這種模式和許可權物件一一對應。
 
許可權:許可權就是指那些通過許可權檢測後可以被允許執行的操作,在ZK中,對資料的操作許可權分為以下
五大類:create,delete,read,write,admin

設定訪問控制:

方式一:(推薦)
1)增加一個認證使用者
addauth digest 使用者名稱:密碼明文
eg. addauth digest user1:password1
2)設定許可權
setAcl /path auth:使用者名稱:密碼明文:許可權
eg. setAcl /test auth:user1:password1:cdrwa
3)檢視Acl設定
getAcl /path

方式二:
setAcl /path digest:使用者名稱:密碼密文:許可權

注:這裡的加密規則是SHA1加密,然後base64編碼。  加密程式碼

DigestAuthenticationProvider.generateDigest("xmr:123456")