Zookeeper ACL权限控制

Zookeeper 节点权限控制ACL详解 Zookeeper可以使用ACL(access control list)访问控制列表来对节点的权限进行控制 阅读详情

Zookeeper使用ACL来控制访问Znode,ACL的实现和UNIX的实现非常相似:它采用权限位来控制那些操作被允许,那些操作被禁止。但是和标准的UNIX权限不同的是,Znode没有限制用户(user,即文件的所有者),组(group)和其他(world)。Zookeepr是没有所有者的概念的。

每个ZNode的ACL是独立的,且子节点不会继承父节点的ACL。例如:Znode /app对于ip为172.16.16.1只有只读权限,而/app/status是world可读,那么任何人都可以获取/app/status;所以在Zookeeper中权限是没有继承和传递关系的,每个Znode的权限都是独立存在的。

Zookeeper支持可插拔的权限认证方案,分为三个维度:scheme,user,permission。通常表示为scheme:id,permissions,其中Scheme表示使用何种方式来进行访问控制,Id代表用户,Permission表示有什么权限。下面分别说说这三个维度:

ZooKeeper支持如下权限(permissions):
    CREATE:可以创建子节点
    READ:可以获取该节点的数据,也可以读取该节点所有的子节点。
    WRITE:可以写数据到该节点。
    DELETE:可以删除子节点。
    ADMIN:可以在该节点中设置权限。

 

内置的ACL Schemes:

world: 只有一个id:anyone,world:anyone表示任何人都有访问权限,Zookeeper把任何人都有权限的节点都归属于world:anyone
auth:不需要任何id, 只要是通过auth的user都有权限
digest: 使用用户名/密码的方式验证,采用username:BASE64(SHA1(password))的字符串作为ACL的ID
ip: 使用客户端的IP地址作为ACL的ID,设置的时候可以设置一个ip段,比如ip:192.168.1.0/16, 表示匹配前16个bit的IP段
sasl:sasl的对应的id,是一个通过sasl authentication用户的id,zookeeper-3.4.4中的sasl authentication是通过kerberos来实现的,也就是说用户只有通过了kerberos认证,才能访问它有权限的node.

如果需要实现自己定义的Scheme,可以实现org.apache.zookeeper.server.auth.AuthenticationProvider接口。

 

示例:

 

        @Test
	public void testAclServer() {
		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);

			// 所有用户都有权限
			// Id world = new Id("world", "anyone");
			// ACL worldAcl = new ACL(ZooDefs.Perms.READ, world);
			// acls.add(worldAcl);

			// 10.0.2.76是本机IP
			// Id id3 = new Id("ip", "10.0.2.76");
			// ACL acl3 = new ACL(ZooDefs.Perms.WRITE, id3);
			// acls.add(acl3);
		} 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();
		}
	}

	@Test
	public void testAclClient() {
		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", "fish:fishpw".getBytes());
			// 只有读权限
			zk.addAuthInfo("digest", "qsd:qsdpw".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();
		}
	}

 

 

 

 

ZooKeeper通过Auth和ACL完成节点的权限控制。 Auth表示某种认证,由于一个ZooKeeper集群可能被多个项目使用,各个项目属于不同的项目组,他们在进行开发时肯定不想其他项目访问与自己相关的节点,这时可以通过为每个项目组分配一个Auth,然后每个项目组先通过Auth认证以后再继续相关的操作,这样甲Auth认证的用户就不能操作其他Auth认证后创建的节点,从而实现各个项目之间的隔离。ZooKeeper提供了如下方法完成认证,如下所示: Vo 阅读详情

相关推荐

【zookeeper】zookeeper的ACL权限控制

1.概述 ACL:Access Control List 访问控制列表 关联文章:【zookeeper】ZooKeeper 权限管理与Curator增加权限验证 关联文章:【kafka】kerberos client is being asked for a password not available to garner authentication informa 1.1 简介 ACL 权限控制,使用:scheme:id:perm 来标识,主要涵盖 3 个方面:   权限模式(Scheme):授权的

九师兄 2764

HCIA-Big Data V3.0 华为认证大数据工程师在线课程章节测试题汇总

本文为HCIA-Big Data V3.0华为认证大数据工程师在线课程的章节习题及答案

gaogao0305的博客 5063

深入RK3588嵌入式Linux开发:uboot源码定制化移植实战

本文详细介绍了RK3588嵌入式Linux开发中,如何绕过庞大的官方SDK,从官方仓库获取纯净U-Boot源码并进行定制化移植的完整实战流程。内容包括编译环境搭建、交叉工具链配置、源码结构解析、设备树(Device Tree)修改、环境变量定制、编译脚本编写以及常见问题调试技巧,旨在帮助开发者深入理解系统引导过程,掌握为定制硬件适配U-Boot的核心技能。

weixin_29169505的博客 423

Zookeeper节点ACL权限设置(四)

原文地址,转载请注明出处:&amp;nbsp;https://blog.youkuaiyun.com/qq_34021712/article/details/82871976&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;©王赛超&amp;nbsp; 官网地址 http://zookeeper.apache.org/doc/current/zookeeperProgrammers.html#sc_ZooKeeperAcce...

这个名字想了很久 6756

wincc 服务器授权型号,WinCC V7.5 SP1软件安装及授权方法

上篇教程给大家介绍了TIA Portal V16 安装方法,今天分享一下WinCC V7.5 SP1。目前V7.5 SP1是WinCC最新的版本,发布时间2019年11月13日。先放一个官网对WinCC V7.5 的介绍视频,感兴趣的可以先看一下。1、软件下载官网下载链接:https://support.industry.siemens.com/cs/document/109772879五个文件下...

weixin_39956110的博客 1万+

Python | 处理CMIP6 NC数据,以tas为例

各位同学,一般在文章最后一章我们可能会做不同气候情景下变量的未来时空变化特征,类似上图。从cmip6下载的nc数据常需要转换格式、裁剪到研究区和重采样等,本期代码可以解决这类问题。

qq_48539301的博客 1384

初窥ZooKeeper的ACL权限控制

        ACL(Acess Control List),ZooKeeper作为一个分布式协调框架,其内部存储的都是都是一些关乎分布式系统运行状态的元数据,尤其是设计到一些分布式锁、Master选举和协调等应用场景。我们需要有效地保障ZooKeeper中的数据安全,幸好,Zookeeper也提供了一套完善的ACL权限控制机制来保障数据的安全。 1. 概述 传统的文件系统中,ACL分为两个维...

Howinfun的博客 1230

2023年第二十届五一数学建模竞赛C题:“双碳”目标下低碳建筑研究-思路详解与代码答案

2023年第二十届五一数学建模竞赛C题:“双碳”目标下低碳建筑研究-思路详解与代码答案

lichensun的博客 1万+

Apache ZooKeeper权限继承机制:父节点与子节点ACL关系详解

在分布式系统中,权限控制是保障数据安全的核心环节。Apache ZooKeeper(分布式协调服务)通过ACL(Access Control List,访问控制列表)机制实现细粒度的权限管理。本文将深入解析ZooKeeper中父节点与子节点的ACL继承关系,帮助运维人员和开发人员理解权限传递的底层逻辑,解决实际场景中的权限配置难题。 ## 一、ZooKeeper ACL基础概念 ZooKeep...

gitblog_00423的博客 407

Python爬虫实战:实时监控美国SEC官网文件更新,助你第一时间掌握市场动态

在资本市场中,信息就是财富。美国证券交易委员会(SEC)官网公开了大量公司披露文件,涵盖财报、招股说明书、内幕交易等重要信息。对投资者、分析师及法律合规人员来说,实时监控这些公开文件具有重要价值。

2201_76125261的博客 594

Claude Code 100个真实案例 - 用AI搭建LangChain多工具Agent(自主搜索+查询)

本案例展示如何使用 Claude Code 搭建一个 LangChain 多工具 Agent 系统。Agent 能够自主决定调用搜索引擎、数据库查询、天气查询、计算器等工具,像人类助手一样拆解问题并逐步解决。

yueyeguzhuo的专栏 558

Android权限处理看这一篇就够了

Android权限处理

Errol's Blog 1010

SerDes电路的PCB仿真设计规则及策略

SerDes的PCB设计中,重点工作是使用3D 电磁 (EM) 场求解器,进行过孔结构优化,包括 BGA的扇入和扇出区域以及布线的过孔区域,并且,利用连接器供应商提供加密的 3D 模型,进行连接器和 PCB 的级联仿真,最终获取系统级的通道性能参数,如插入损耗、回波损耗、串扰和模式转换、阻抗曲线等,如果发现任何缺陷,再进行进一步优化,这一过程中,推荐进行拆分仿真,以提高设计效率。

一只豌豆象的博客 2191

Zookeeper 权限控制 ACL

《ZooKeeper权限控制(ACL)详解》系统介绍了ZooKeeper的访问控制机制。文章通过门禁类比,解析ACL核心概念:控制谁(Who)能对哪个节点(Where)进行何种操作(What)。详细说明5种权限位(CREATE/READ/WRITE/DELETE/ADMIN)和5种身份认证方案(world/ip/digest/sasl/auth),重点推荐生产环境使用digest方案。提供zkCli命令示例和Java/Curator代码实现,并给出递归设置、权限继承等高级技巧。最后总结了最小权限原则、ACL

likuoelie的博客 1022

机器翻译:一文掌握离线翻译库 Argos Translate 的详细使用

Argos Translate是一个开源的离线翻译库,支持多语言互译。它通过独立的翻译包(.argosmodel文件)实现翻译功能,每个包对应特定语言对的翻译任务。安装简单,只需pip安装argostranslate库,并通过命令行或Python API管理翻译包。支持批量处理和长期运行优化性能。对于不支持的语种,可采用桥接翻译或自行训练模型。该库提供CLI工具和Python API,适合集成到各种应用中,还可用于批量文件翻译。主要局限包括缺乏上下文理解、专业领域翻译不精准等。

数据知道的博客 3523

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

zookeeper的acl权限控制_zookeeper的ACL权限控制

ACL:Access Control List访问控制列表1. 简介0.概述ACL 权限控制,使用:scheme:id:perm来标识,主要涵盖 3 个方面:权限模式(Scheme):授权的策略授权对象(ID):授权的对象权限(Permission):授予的权限其特性如下:ZooKeeper的权限控制是基于每个znode节点的,需要对每个节点设置权限每个znode支持设置多种权限控制方案和...

weixin_39827304的博客 224

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Zookeeper权限控制ACL详解

概述 Zookeeper类似于unix文件系统,节点类比文件,客户端可以删除节点,创建节点,修改节点。Zookeeper可以使用ACL(access control list)访问控制列表来对节点的权限进行控制。 acl权限控制使用:scheme????permission来标志,主要涵盖三个方面: 权限模式(scheme):授权的策略。 权限对象(id):授权的对象。 权限(permission):授予的权限。 Zookeeper acl的特性: Zookeeper的权限控制是基于znode节点的,

qq_40837310的博客 5461

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Zookeeper——ACL权限控制原理

摘要 数据模型节点、Watch 监控机制等知识。并利用这些知识实现了在分布式环境中经常用到的诸如分布式锁、配置管理等功能。这些功能的本质都在于操作数据节点,而如果作为分布式锁或配置项的数据节点被错误删除或修改,那么对整个分布式系统有很大的影响,甚至会造成严重的生产事故。而作为在分布式领域应用最为广泛的一致性解决框架,ZooKeeper 提供一个很好的解决方案那就是 ACL 权限控制。 说到 ACL 可能你会觉得陌生,但是提到权限控制相信你一定很熟悉。比如 Linux 系统将对文件的使用者分为三种身份,即

庄小焱 1930

ZooKeeper ACL权限控制

ZK 类似文件系统,Client 可以在上面创建节点、更新节点、删除节点等如何做到权限的控制?查阅文档,zk的ack(Access Control List)能够保证权限,但是调研完后发现它不是很好用。 ACL 权限控制,使用:schema:id:permission 来标识,主要涵盖 3 个方面: 权限模式(Schema):鉴权的策略授权对象(ID)权限(Permission) 其

赶路人儿 1万+

Zookeeper的ACL权限控制

目录 一、概述 二、acl权限各部分组成说明 三、授权的相关命令 四、world授权模式 五、IP授权模式 六、Auth授权模式 七、Digest授权模式 八、多种模式授权 九、总结 一、概述 zookeeper类似linux文件系统,客户端可以创建数据节点、更新节点数据、删除节点等,那么我们如何做到节点的权限控制呢?回想一下linux文件的权限文件,由r(读)、w(写)、x(可执行)组成,同理,zookeeper中存在访问控制列表,也可以实现类似的权限控制。 acl 权限控制,使用

weixiaohuai的博客 1112

zookeeper的acl权限控制_ZooKeeper ACL权限设置

ZK的节点有5种操作权限:CREATE、READ、WRITE、DELETE、ADMIN 也就是 增、删、改、查、管理权限,这5种权限简写为crwda(即:每个单词的首字符缩写)注:这5种权限中,delete是指对子节点的删除权限,其它4种权限指对自身节点的操作权限身份的认证有4种方式:world:默认方式,相当于全世界都能访问auth:代表已经认证通过的用户(cli中可以通过addauth dig...

weixin_28783097的博客 1329

zookeeper ACL 权限控制

版本说明: zookeeper:3.4.6 一、概述 zooKeeper使用acl(Access Control List)来控制对其znode(zooKeeper数据树的数据节点)的访问。 不过,zookeeper的acl并不像HDFS系统的acl一样,可以递归控制权限。zookeeper的acl不是递归的,仅适用于特定的znode。比如/app这个znode,设置一些权限,只能某用户可以访...

CREATE_17的博客 3200

zookeeper的ACL权限控制

zookeeper的权限控制ACL类似于linux的权限控制,主要就是控制用户对数据的读写权限的。 用zookeeper客户端连接zookeeper,创建了一个节点后,我们可以用 getAcl /节点目录查看该节点的ACL权限。 如: [zk: localhost:2181(CONNECTED) 20] getAcl /test/xyz 'world,'anyone : cdrwa ...

liulangcheshou的博客 473

zookeeper的acl权限控制_【Zookeeper教程】(五)ACL权限控制

提到权限控制,我们比较熟悉的应该是Linux系统中UGO(User,Group,Others)权限控制。针对文件或者目录,可以对用户,用户所在的组,其他用户分配不同的权限。但是它比较有局限性,比如我想要U1所在的组G1对F1有读权限,另一个所在组G2对F1有写权限,就无法解决。而ACL权限控制,也叫访问控制列表。是一种比较新颖而且更细粒度的权限管理方式。可以针对任意用户和组进行细粒度的权限控制。权...

weixin_39961369的博客 354
上一篇: Zookeeper Watch机制
下一篇: zookeeper数据模型
qianshanding0708
博客等级 码龄11年 425粉丝 96原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值