Zookeeper超级用户
来源:互联网 发布:ncbi数据库下载 编辑:程序博客网 时间:2024/06/06 02:23
Zookeeper管理员会因为某些客户端对某些节点设置了权限,而导致在紧急的情况下无法修改这些节点感到困扰。在这种情况下,管理员可以通过Zookeeper超级用户模式访问这些节点,一旦设置了超级权限访问节点,后续的操作就不需要check ACL了。
使用超级用户模式,可以通过Zookeeper的zookeeper.DigestAuthenticationProvider.superDigest参数开启。
使用org.apache.zookeeper.server.auth.DigestAuthenticationProvider生成superDigest:
@Testpublic void generate() {try {System.out.println(DigestAuthenticationProvider.generateDigest("super:superpw"));} catch (NoSuchAlgorithmException e) {// TODO Auto-generated catch blocke.printStackTrace();}}输出
super:g9oN2HttPfn8MMWJZ2r45Np/LIA=
在${ZOOKEEPER_HOME}/bin/zkServer.sh配置启动参数:
我使用的是zookeeper-3.4.6,修改zkServer.sh文件的第109行:
nohup "$JAVA" "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" "-Dzookeeper.DigestAuthenticationProvider.superDigest=super:g9oN2HttPfn8MMWJZ2r45Np/LIA=" \
超级权限是通过DigestAuthenticationProvider实现的,示例:
@Testpublic void testSuperServer() {List<ACL> acls = new ArrayList<ACL>(2);try {Id id1 = new Id("digest", DigestAuthenticationProvider.generateDigest("fish:fishpw"));ACL acl1 = new ACL(ZooDefs.Perms.WRITE, id1);Id id2 = new Id("digest", DigestAuthenticationProvider.generateDigest("qsd:qsdpw"));ACL acl2 = new ACL(ZooDefs.Perms.READ, id2);acls.add(acl1);acls.add(acl2);} catch (NoSuchAlgorithmException e1) {e1.printStackTrace();}ZooKeeper zk = null;try {zk = new ZooKeeper("10.0.1.75:2181,10.0.1.76:2181,10.0.1.77:2181", 300000, new Watcher() {// 监控所有被触发的事件public void process(WatchedEvent event) {System.out.println("已经触发了" + event.getType() + "事件!");}});if (zk.exists("/test", true) == null) {System.out.println(zk.create("/test", "ACL测试".getBytes(), acls, CreateMode.PERSISTENT));}} catch (IOException e) {e.printStackTrace();} catch (KeeperException e1) {e1.printStackTrace();} catch (InterruptedException e1) {e1.printStackTrace();}}@Testpublic void testSuperClient() {try {ZooKeeper zk = new ZooKeeper("10.0.1.75:2181,10.0.1.76:2181,10.0.1.77:2181", 300000, new Watcher() {// 监控所有被触发的事件public void process(WatchedEvent event) {System.out.println("已经触发了" + event.getType() + "事件!");}});zk.addAuthInfo("digest", "super:superpw".getBytes());System.out.println(new String(zk.getData("/test", null, null)));zk.setData("/test", "I change!".getBytes(), -1);} catch (KeeperException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}示例先使用digest对Znode /test 设置读写权限,然后通过super:superpw的超级用户去访问。
0 0
- Zookeeper超级用户
- Zookeeper acl超级用户
- 关于超级用户
- Android 超级用户工具箱
- mac 添加超级用户
- django 创建超级用户
- oracle超级用户connection
- mysql 创建超级用户
- vertica-创建超级用户
- linux 超级用户切换
- Django 创建超级用户
- 手工建立超级隐藏用户
- 建立隐藏的超级用户
- 命令行建立隐藏超级用户
- 3.1 关于超级用户root
- Linux 超级用户的权利
- root 超级用户无法登录
- Ubuntu 切换到超级用户
- DDlog日志输出
- POJ2377 Bad Cowtractors
- 【JAVA大作业开发记录(七)】
- HDU 1004 (字典树||map)
- 【LeetCode】217Contains Duplicate
- Zookeeper超级用户
- Slim Span
- 问题之~SecureCRT终端只能输出无法输入
- Github上的600多个iOS开源类库
- 递归查询所有子级
- 数根
- 异步处理框架样例代码
- 企业总机技术架构
- 如何在xcode7上免开发者账号进行ios程序真机测试