【zookeeper】ACL super 超级管理员

zk的权限管理表有一种ACL的模式叫做super,该模式的作用是方便管理节点。一旦我们为某一个节点设置了acl,那么其余的未授权的节点是无法访问或者操作该节点的,那么系统用久了以后,假如忘记了某一个节点的密码,那么就无法再操作这个节点了,所以需要这个super超级管理员用户权限,其作用还是很大的。

下面看下如何加入一个超级管理员。

添加方式:

只能在启动服务器的时候添加。

假设这个超管是:super:admin,通过代码得到其哈希值:

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

m是:

super:xQJmxLMiHGwaqBvst5y6rkB6HQs=

那么打开zk目录下的/bin/zkServer.sh服务器脚本文件,找到如下一行:

nohup J A V A " D z o o k e e p e r . l o g . d i r = 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
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/pf1234321/article/details/85472272