【zookeeper】ACL super 超级管理员

【zookeeper】ACL super 超级管理员

 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010900754/article/details/78498291

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=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}"
这就是脚本中启动zk的命令,默认只有以上两个配置项,我们需要加一个超管的配置项:

 

 

"-Dzookeeper.DigestAuthenticationProvider.superDigest=super:xQJmxLMiHGwaqBvst5y6rkB6HQs="
第一个等号之后的就是刚才用户名密码的哈希值。

 

那么修改以后这条完整命令变成了:

 

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

 

 

输入如下命令添加权限:

 

addauth digest super:admin

我的zk有一个节点/test,acl为:

 

有一个digest的cr权限。

正常情况下,这次登陆如果不用那个digest授权是不能访问/test的数据的。但是由于我们配置了超管,所以这次还是可以访问到的。

 

需要说明的是,这个超管只是在这次服务器启动期间管用,如果关闭了服务器,并修改了服务器脚本,取消了超管配置,那么下一次启动就没有这个超管了。




 

posted @ 2019-05-24 16:54  主的羊  阅读(938)  评论(0编辑  收藏  举报