zookeeper許可權管理

2021-09-26 11:05:00 字數 2973 閱讀 4456

乙個zookeeper節點中不僅包含了儲存的資料,還有 acl(access control list)。節點建立時,可以給它設定乙個acl,來決定誰可以對節點做哪些操作。

acl 具有以下特點:

1. zookeeper的許可權控制是基於每個znode節點的,需要對每個節點設定許可權

2. 每個znode支援設定多種許可權控制方案和多個許可權

3. 子節點不會繼承父節點的許可權,客戶端無權訪問某節點,但可能可以訪問它的子節點

4. 所以任何乙個客戶端都可以通過exists 操作來獲得任何znode的狀態,從而得知znode是否真的存在。

acl 相關命令命令

語法描述

getacl

getacl path

讀取某個節點acl許可權

setacl

setacl path acllist

設定某個節點acl許可權

addauth

addauth scheme authinfo

新增認證使用者

create

create [-s] [-e] path data acllist

建立節點時指明 acl 許可權

acl permissions

acl 許可權

acl 簡寫

允許的操作

create

c建立子節點

delete

d刪除子節點 (僅下一級節點)

read

r獲取節點的資料和它的子節點

write

w設定節點的資料

admin

a設定 acl 許可權

acl schemes

zookeeper內建了一些許可權控制方案,可以用以下方案為每個節點設定許可權:

方案描述

world

只有乙個使用者:anyone,代表所有人(預設)

ip使用ip位址認證

auth

使用已新增認證的使用者認證

digest

使用「使用者名稱:密碼」方式認證

acl是由鑑權方式(scheme)、該鑑權方式的id(使用者或ip位址)和乙個許可權(permession)的集合組成。例如,我們想通過乙個ip位址為10.0.0.1的客戶端訪問乙個節點。那麼,我們需要為節點設定乙個acl,鑑權方式使用ip鑑權方式,鑑權方式的id為10.0.0.1,只允許讀許可權。那麼 acl 的格式就是:ip:10.0.0.1:w

world 方案

預設情況下使用 world 方法,任何人有所有許可權:

建立節點/abc,賦值20190825,預設具有world全部許可權

修改(設定)許可權:setacl world:anyone:

修改節點/abc許可權,從cdrwa改為drwa,建立子節點失敗(正常建立節點時會列印created,如上圖)

ip 方案

:可以是具體ip也可以是ip/bit格式,即ip轉換為二進位制,匹配前bit位,如192.168.0.0/16匹配192.168.*.*

設定方式:setacl ip::

每種許可權模式也支援在節點建立時直接指定,這樣就不是預設的world模式。

初始化設定方式:create node data ip::

auth 方案

設定方式

addauth digest :#新增認證使用者,可以是新使用者或老使用者,老使用者密碼表示鑑權,新使用者密碼組合表示新增及鑑權,乙個使用者名稱支援匹配多個密碼,乙個使用者加乙個密碼組成一對認證資訊

setacl auth::

最後getacl查詢到的密碼為sha62加密過的密碼

乙個使用者支援多個密碼

digest 方案

設定方式

setacl digest:::

這裡的密碼是經過sha1及base64處理的密文,這也是digest和auth兩種許可權模式的區別,auth為傳入明文自動生成秘文,無需使用者自己生成,直接設定即可。

在shell中可以通過以下命令計算:

echo -n :| openssl dgst -binary -sha1 | openssl base64

先來算乙個密文密碼:

注意了!使用 rmr 刪除節點沒有許可權時,竟然可以使用 delete

待補充:刪除目錄,刪除節點,建立不含value的節點,同乙個節點既是目錄又有資料,無法建立節點,無報錯

ZooKeeper許可權控制

目前在公司內部使用zookeeper的地方越來越多,應用大多喜歡自己部署一套zk集群來使用。考慮到zk的高可用,並且一套zk集群至少3臺機器,那麼每個應用,尤其是一些非核心應用都自己去部署一套的話,對資源利用率很低。另外,隨著zk容災的提出,單套zk集群使用的機器量會更大,運維人員開始 對這個情況擔...

Zookeeper 許可權控制

1.acl access control lists 針對節點設定相關讀寫等許可權,目的為了保障資料的安全性。許可權permissions可以指定不同的許可權範圍以及角色。2.acl命令列 getacl 獲取某個節點的acl許可權資訊。setacl 設定某個節點的acl許可權資訊。addauth 輸...

zookeeper之許可權控制 ACL

1.許可權控制 zookeeper集群中,通常是由乙個統一的zookeeper集群來為若干個應用提供服務。而此時,各應用之間不存在資料的共享操作場景。因此為了避免zookeeper伺服器上的資料資源被其他程序意外操作修改,需要解決不同應用之間的許可權問題 即對zookeeper伺服器上的資料訪問進行...