Zk学习笔记——权限控制

摘要:
参考:从Paxos到Zookeeper分布式一致性原理和实践使用的zk依赖是cdh5.16.2的3.4.5˂!

参考:从Paxos到Zookeeper分布式一致性原理和实践

使用的zk依赖是cdh5.16.2的3.4.5

<!-- zookeeper -->
<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.4.5-cdh5.16.2</version>
</dependency>

Zookeeper提供了多种权限控制模式,分别是world,auth,digest,ip和super。

下面介绍模式scheme中的digest

使用如下语句对zk session添加权限,其中的username:password是账号密码

zk1.addAuthInfo("digest", "username:password".getBytes());

如果操作zk节点没有权限的话,会抛出NoAuthException

Exception in thread "main" org.apache.zookeeper.KeeperException$NoAuthException: KeeperErrorCode = NoAuth for /app6

代码

package com.bigdata.zookeeper;

import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.ZooDefs;
import org.apache.zookeeper.ZooKeeper;

public class AuthExample {

    private static ZooKeeper zk1;
    private static ZooKeeper zk2;

    public static void main(String[] args) throws Exception {
        // zk1 session
        zk1 = new ZooKeeper("master:2181", 5000, null);
        zk1.addAuthInfo("digest", "username:password".getBytes());
        // 创建一个节点
        String path = "/app6";
        zk1.create(path, "123".getBytes(), ZooDefs.Ids.CREATOR_ALL_ACL, CreateMode.EPHEMERAL);

        // zk2 session无权限
        zk2 = new ZooKeeper("master:2181", 5000, null);
//        System.out.println(new String(zk2.getData(path, false, null)));

        // zk2 session有权限
        zk2.addAuthInfo("digest", "username:password".getBytes());
        System.out.println(new String(zk2.getData(path, false, null)));
    }

}

没有权限的话,zkui也会报错

Zk学习笔记——权限控制第1张

使用zookeeper-client访问

lintong@master:/opt/cloudera/parcels/CDH/bin$ ./zookeeper-client
Connecting to localhost:2181

查看,仍然没有权限

[zk: localhost:2181(CONNECTED) 0] ls /
[cluster, controller, brokers, zookeeper, admin, isr_change_notification, log_dir_event_notification, ngdata, controller_epoch, kafka-manager, solr, app6, consumers, hive_zookeeper_namespace_hive, latest_producer_id_block, app2, config, app1, hbase, app4, app3]
[zk: localhost:2181(CONNECTED) 1] ls /app6
Authentication is not valid : /app6

设置密码并查看

[zk: localhost:2181(CONNECTED) 3] addauth digest username:password

[zk: localhost:2181(CONNECTED) 7] get /app6
123
cZxid = 0x139e88
ctime = Sun Aug 02 23:38:30 CST 2020
mZxid = 0x139e88
mtime = Sun Aug 02 23:38:30 CST 2020
pZxid = 0x139e88
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0

免责声明:文章转载自《Zk学习笔记——权限控制》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇kvm网络管理Canvas干货总结下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Zookeeper权限控制

Zookeeper提供了ACL(Access Control List)权限控制。 使用权限控制,可以控制节点的操作权限,保证安全性。 权限设置:将权限模式、授权对象、权限信息组成一条"scheme:id:permission"格式的ACL请求信息。 权限模式(Scheme):   1)World模式,默认的,任何人可以对zk上任意节点操作   2)IP模...

linux下搭建lamp环境以及安装swoole扩展

一、CentOS 6.5/CentOS 6.9使用yum快速搭建LAMP环境 准备工作:先更新一下yum源  我安装的环境是:apache2.2.15+mysql5.5.60+php5.6.36 输入下面命令: yum -y update 1、安装Apache [root@localhost ~]# yum -y install httpd # 开机自启动...

谷歌浏览器中的自动播放问题

2018年一月份 谷歌开始了以后谷歌浏览器将不会自动播放视频音频文件 笔者猜测可能有一下几点: 1. 禁广告,不能自动播放了一定程度上起到了禁用广告的效果 2. 为用户节省流量,因为视频音频加载时需要缓冲的会耗费用户流量,但是用户不一定会看这个视频或音频 第一次打开不支持自动播放,就给了用户选择的空间,也给用户节省了流量 在HTML5中新增了 <vi...

Ubuntu必备软件之搜狗输入法

1.下载 首先,和Windows下下载搜狗输入法智慧版不同,Ubuntu是Linux操作系统,所以要使用搜狗输入法For Linux,官方下载页面 click here 我下载得到了 sogoupinyin_2.4.0.3469_amd64.deb 这个文件。 2.安装 我们得到了一个 deb 文件,接下来安装搜狗输入法 sudo dpkg -i sog...

【react+antd】前端读取本地文件内容(txt)

场景:xxx血压计测量数据之后,需要将测量的数据直接显示在pc后台管理平台相应的表格中 准备:一台xxx血压计,数据线,相关血压计桌面软件,pc 血压计相关说明:测量时,将数据线和pc连接,打开血压计桌面软件,点击连接设备,连接成功,开始测量,测量完成,桌面软件会显示相应的值:比如 收缩压 舒张压 心率 脉搏等,数据会存到本地的某个文件下,txt文本形式,...

制作在wince系统上的安装程序解决方案

转帖:如何制作安装程序 来自:http://blog.csdn.net/zhl0349/archive/2006/04/25/677284.aspx平台为EVC4.0+sp3,WindowsXP操作系统,WindowsCE4.2,PPC2003用EVC编好的程序怎么制做一个安装程序?我研究了一番,网上也有不少的资料有两种方式,一种就是利用现有的evc工具,...