【zookeeper】ACL super 超級管理員

zk的權限管理表有一種ACL的模式叫做super,該模式的作用是方便管理節點。一旦我們爲某一個節點設置了acl,那麼其餘的未授權的節點是無法訪問或者操作該節點的,那麼系統用久了以後,假如忘記了某一個節點的密碼,那麼就無法再操作這個節點了,所以需要這個super超級管理員用戶權限,其作用還是很大的。

下面看下如何加入一個超級管理員。

添加方式:

只能在啓動服務器的時候添加。

假設這個超管是:super:admin,通過代碼得到其哈希值:

String m = DigestAuthenticationProvider.generateDigest(“super:admin”);

m是:

super:xQJmxLMiHGwaqBvst5y6rkB6HQs=

那麼打開zk目錄下的/bin/zkServer.sh服務器腳本文件,找到如下一行:

nohup JAVA"Dzookeeper.log.dir=JAVA "-Dzookeeper.log.dir={ZOO_LOG_DIR}" “-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}”

這就是腳本中啓動zk的命令,默認只有以上兩個配置項,我們需要加一個超管的配置項:

“-Dzookeeper.DigestAuthenticationProvider.superDigest=super:xQJmxLMiHGwaqBvst5y6rkB6HQs=”

第一個等號之後的就是剛纔用戶名密碼的哈希值。

那麼修改以後這條完整命令變成了:

nohup $JAVA "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" "-Dzookeeper.DigestAuthenticationProvider.superDigest=super:xQJmxLMiHGwaqBvst5y6rkB6HQs="\
    -cp "$CLASSPATH" $JVMFLAGS $ZOOMAIN "$ZOOCFG" > "$_ZOO_DAEMON_OUT" 2>&1 < /dev/null &

之後啓動zk集羣。

輸入如下命令添加權限:

addauth digest super:admin

我的zk有一個節點/test,acl爲:

有一個digest的cr權限。

正常情況下,這次登陸如果不用那個digest授權是不能訪問/test的數據的。但是由於我們配置了超管,所以這次還是可以訪問到的。

需要說明的是,這個超管只是在這次服務器啓動期間管用,如果關閉了服務器,並修改了服務器腳本,取消了超管配置,那麼下一次啓動就沒有這個超管了。


作者:絕世好阿狸
來源:CSDN
原文:https://blog.csdn.net/u010900754/article/details/78498291
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章