Zookeeper使用超级用户删除带权限的节点

1.背景

Zookeeper管理员会因为某些客户端对某些节点设置了权限,而导致在紧急的情况下无法修改这些节点感到困扰。在这种情况下,管理员可以通过Zookeeper超级用户模式访问这些节点,一旦设置了超级权限访问节点,后续的操作就不需要check ACL了。
使用超级用户模式,可以通过Zookeeper的zookeeper.DigestAuthenticationProvider.superDigest参数开启。

2.对超级用户的密码加密

使用org.apache.zookeeper.server.auth.DigestAuthenticationProvider生成superDigest:

public void generate() {  
    try {  
       System.out.println(DigestAuthenticationProvider.generateDigest("super:superpw"));  
    } catch (NoSuchAlgorithmException e) {  
        // TODO Auto-generated catch block  
        e.printStackTrace();  
    }  
}  

输出super:superpw对应的加密参数为:
super:g9oN2HttPfn8MMWJZ2r45Np/LIA=

3.超级用户加入到服务端启动参数

在zookeeper服务端的zkEnv.sh环境变量中加入以下参数,开启超级用户,重启zookeeper服务端:

SERVER_JVMFLAGS="-Dzookeeper.DigestAuthenticationProvider.superDigest=super:g9oN2HttPfn8MMWJZ2r45Np/LIA= $SERVER_JVMFLAGS"  

4.在客户端使用超级用户登陆

使用客户端登陆到zookeeper服务端:
zkCli.sh -server zdh-9:12181
然后执行命令切换到超级用户:
addauth digest super:superpw
这样就可以删除带有权限控制的节点了:
deleteall /storm
可以看到/storm节点stormkrb使用sasl创建的

[zk: zdh-9:12181(CONNECTED) 7] getAcl /storm
'sasl,'stormkrb
: cdrwa
'world,'anyone
: cr

5.参考:

http://blog.csdn.net/qianshangding0708/article/details/50128305
http://www.cnblogs.com/fesh/p/5798353.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,323评论 19 139
  • 一、ZooKeeper的背景 1.1 认识ZooKeeper ZooKeeper---译名为“动物园管理员”。动物...
    algernoon阅读 12,987评论 1 106
  • 本文将从系统模型、序列化与协议、客户端工作原理、会话、服务端工作原理以及数据存储等方面来揭示ZooKeeper的技...
    端木轩阅读 9,207评论 0 42
  • 今天晚上的收获依然满满,今晚听了武汉广播电视台的新月分享的《你的声音最美》,还有梁勇分享的《如何制作ppt》,同时...
    藤县069黎献清阅读 2,118评论 0 1
  • 春风和煦,我和老杜郊游,步行有氧运动,追野鸭子,找宝贝,捡到两个大松果,发现了比他身高还高野草,藏猫猫比较好。想想...
    天堂雨_479f阅读 1,690评论 1 4