zookeeper提供了一套完善的acl(access control list)許可權控制機制來保障資料的安全。
zookeeper的acl許可權控制和unix/linux作業系統中的acl有一些區別,可以從三個方面來理解acl機制,分別是:許可權模式(scheme)、授權物件(id)和許可權(permission)、通常使用「scheme:id:permission」來標識乙個有效的acl資訊。
許可權模式:scheme
許可權模式用來確定許可權驗證過程中使用的檢驗策略。在zookeeper中,開發人員使用最多的就是以下四種許可權模式:
ipip模式通過ip位址粒度來進行許可權控制,例如配置了「ip:192.168.0.110」,即表示許可權控制都是針對這個ip位址的。同時,ip模式也支援按照網段的方式進行配置,例如「ip:192.168.0.1/24」表示針對192.168.0.*這個ip段進行許可權控制。
digest
digest是最常用的許可權控制模式,也更符合我們對於許可權控制的認識,其以類似於「username:password」形式的許可權標識來進行許可權配置,便於區分不同應用來進行許可權控制。當我們通過「username:password」形式配置了許可權標識後,zookeeper會對其先後進行兩次編碼處理,分別是sha-1演算法加密和base64編碼,其具體實現由digestauthenticationprovider.generatedigest(string idpassword)函式進行封裝。
world
world是一種最開放的許可權控制模式,從其名字中也可以看出,事實上這種許可權控制方式幾乎沒有任何作用,資料節點的訪問許可權對所有使用者開放,即所有使用者都可以在不進行任何許可權校驗的情況下操作zookeeper上的資料。另外,world模式也可以看作是一種特殊的digest模式,它只有乙個許可權標識,即「world:anyone」。
super
super模式,顧名思義就是超級使用者的意思,也是一種特殊的digest模式。在super模式下,超級使用者可以對任意zookeeper上的資料節點進行任何操作。
授權物件:id
授權物件指的是許可權賦予的使用者或乙個指定實體,例如ip位址或是機器等。在不同的許可權模式下,授權物件是不同的。
ip 通常是乙個ip位址或是ip段,例如「192.168.0.110」 或 「192.168.0.1/24」
digest 自定義,通常是「username:base64(sha-1(password))」,例如 「foo:kwn6ansbjckwp**iv7cg0n24rau=」
world 只有乙個id:"anyone"
super 與digest模式一致
許可權: permission
許可權就是指那些通過許可權檢查後可以被允許執行的操作。在zookeeper中,所有對資料的操作許可權分為以下五大類:
create(c)
delete(d)
read(r)
write(w)
admin(a)
設定acl
1、通過zkcli指令碼登入zookeeper伺服器後,可以通過兩種方式進行acl的設定。一種是在資料節點建立的同時進行acl許可權的設定,命令格式如下:
create [-s] [-e] path data acl
清單:create -e /zk-book init digest:foo:ayar385txr8czbg0+7glqfl3tvq=:cdrwa
2、另一種方式則是使用setacl命令單獨對已經存在的資料節點進行acl設定:
setacl path acl
清單:setacl /zk-book digest:foo:ayar385txr8czbg0+7glqfl3tvq=:cdrwa
注意:子目錄不繼承父目錄acl許可權。舉例:新建zk-book下子目錄/zk-book/test,該子目錄/zk-book/test的許可權預設為:'world':anyone:cdrwa,而不是預設繼承父目錄許可權。
配置zkcli客戶端許可權
當設定乙個目錄許可權後,zkcli在不配置許可權下也無法訪問該目錄,可使用如下命令配置許可權:
addauth digest foo:123456
4 4 zookeeper ACL許可權控制
acl命令列 acl命令列主要有三塊 acl的構成 一 acl的構成 二 scheme acl的構成 三 permissions 許可權字串縮寫 crdwa acl命令列 第一種scheme world acl命令列 第二種scheme auth acl命令列 第三種scheme digest ac...
sql server 2005 使用者許可權怎麼配置
sql server 2005 使用者許可權 要想成功訪問 sql server 資料庫中的資料,我們需要兩個方面的授權 一 獲得准許連線 sql server 伺服器的權利 二 獲得訪問特定資料庫中資料的權利 select,update,delete,create table 假設,我們準備建立乙...
ubuntu給普通使用者配sudo許可權
1.su切換到root使用者下 2.新增sudo檔案的寫許可權,命令是 chmod u w etc sudoers 3.編輯sudoers檔案 vi etc sudoers 找到這行 root all all all,在他下面新增 all all all 這裡的 是你的使用者名稱 ps 這裡說下你可...