Zookeeper 内建ACL访问控制权限代码

这里我只用了基于用户名密码的digest 模式,还有world  auth  ip 三种模式

ZooKeeper有下列内建模式:

  • world  有独立id,anyone,代表任何用户。
  • auth 不使用任何id,代表任何已经认证过的用户
  • digest 之前使用了格式为username:pathasowrd的字符串来生成一个MD5哈希表作为ACL ID标识。在空文档中发送username:password来完成认证。现在的ACL表达式格式为username:base64, 用SHA1编码密码。
  • ip 用客户端的ip作为ACL ID标识。ACL表达式的格式为addr/bits,addr中最有效的位匹配上主机ip最有效的位。

可以根据自己的需要自己进行选择使用

@Test
	public void test() throws IOException, InterruptedException, KeeperException, NoSuchAlgorithmException {

		/**
		 * 连接zookeeper
		 */
			zk = new ZooKeeper("localhost:2182", 5000, new Watcher() {
				public void process(WatchedEvent event) {
					if (event.getType() == EventType.NodeChildrenChanged && ("/" + groupNode).equals(event.getPath())) {
						try {
							System.out.println("此处监听");
						} catch (Exception e) {
							e.printStackTrace();
						}
					}
				}
			});
			while(zk.getState() != ZooKeeper.States.CONNECTED ){
				Thread.sleep(3000);
			}
			//zk链接的用户
			zk.addAuthInfo("digest", "admin:admin123".getBytes());
			//创建开放节点,允许任意操作
			zk.create("/xxx", "xxx".getBytes("utf-8"), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
			//创建只读节点
			zk.create("/yyy", "yyy".getBytes("utf-8"), Ids.READ_ACL_UNSAFE, CreateMode.PERSISTENT);
			//创建者全部权限
			zk.create("/zzzs", "zzz".getBytes("utf-8"), Ids.CREATOR_ALL_ACL, CreateMode.PERSISTENT);

			//设置访问权限列表
			List<ACL> lists = new ArrayList<ACL>();
			Id id1 = new Id("digest", DigestAuthenticationProvider.generateDigest("admin:admin123"));
			Id id3 = new Id("digest", DigestAuthenticationProvider.generateDigest("readadmin:admin123"));
			lists.add(new ACL(ZooDefs.Perms.CREATE,id1));  //创建权限
			lists.add(new ACL(ZooDefs.Perms.READ,id3));	   //只读权限
			//testa 节点将根据权限列表进行acl
			zk.create("/testa", "testacl".getBytes("utf-8"), lists, CreateMode.PERSISTENT);

			byte[] value = zk.getData("/testa", null, new Stat());
			System.out.println(value);

	}
时间: 2024-10-09 15:25:55

Zookeeper 内建ACL访问控制权限代码的相关文章

mongodb 内建角色与权限

整理了一下mongodb常用的几个内建角色, roleaction read(every) readWrite (every) dbAdmin(every) userAdmin(every) dbOwner(every) backup(admin) restore(admin) changeCustomData ? ? ? √ √ ? ? changePassword ? ? ? √ √ ? ? createRole ? ? ? √ √ ? ? createUser ? ? ? √ √ ? ?

运维ACL访问控制简单配置

问题 沿用练习三,编写并应用ACL策略,实现以下要求: 允许网段192.168.4.0/24在周一到周五的09:30至18:00通过代理访问外网 IP地址是192.168.4.205的主机在任何时间都不可以通过代理访问外网 4.2 方案 通过acl指令定义ACL访问控制权限. 通过http_access应用ACL访问控制列表. http_access策略及规则顺序: http_access根据访问控制列表允许或禁止某一类用户访问代理服务器: http_access规则按照它们的排列顺序进行匹配检

linux文件权限管理与ACL访问控制列表

一.文件属性 1.文件属性: 文件属性操作 chown : change owner  ,设置文件所有者 chgrp : change group  ,设置文件的属组 文件属主修改: chown 格式:chown [OPTION]- [OWNER][:[GROUP]] FILE- 用法: OWNER OWNER:GROUPNAME    (同时修改属主.属组) :GROUPNAME                (默认属主,修改属组) ( 命令中的冒号可用.替换:) chown  –refere

linux用户权限 -&gt; ACL访问控制

UGO设置基本权限: 只能一个用户,一个组和其他人 ACL设置基本权限: r.w.x 设定acl只能是root管理员用户. 相关命令: getfacl , setfacl facl权限 简介 facl的权限是针对某一类用户设置的.如果希望对某个指定的用户进行单独的权限控制就需要用到文件的访问控制列表acl.设定acl只能是root管理员用户. 使用方法 查看权限 在没有设定acl时,看到的权限是相同的,下面的结果是默认权限 [[email protected] ~]# getfacl /tmp

linux 特殊权限chattr(文件系统级别的权限) Attr 权限和 ACL访问控制列表 ...

Attr 权限 和 ACL 访问控制列表 Attr 权限里的 "a" 权限和 "i" 权限 a :全名append only 只允许追加数据,不允许任何用户改动文件(超级用户也不行) 甚至不能正常的删除文件 只能读取文件内容,只能用 "echo" 追加内容 chattr +a xxx #增加 a 权限 chattr -a xxx #取消 a 权限 lsattr #查看权限 [[email protected] /test]# touch abc

Squid-4.1 ACL访问控制、日志分析和反向代理

Squid-4.1ACL访问控制.日志分析和反向代理 ACL访问控制 Squid提供了强大的代理控制机制,通过结合设置ACL(Access Control List,访问控制列表)并进行限制,可以针对源地址.目标地址.访问的URL路径.访问时间等各种条件进行过滤. 在配置文件squid.conf中,ACL访问控制通过以下两个步骤实现:其一,使用acl配置项定义需要控制的条件:其二,通过http_access配置项对已定义的列表做"allow"或者"deny"访问控制

ASP基础教程:ASP内建对象Response

在上一篇中作者给大家详细介绍了 ASP 内建对象之一 Request 的使用方法,相信各位通过一系列的实践已经能够熟练掌握,本篇将继续给大家介绍 ASP 的另一个内建对象 Response. 最近,有很多朋友来“妹儿”催我加快 ASP 篇一文的写作速度,并急切地询问哪里有关于 ASP 的教材.我深深地被大家的学习热情所打动,因此决定将自己平时所搜集的一些 ASP 信息资料拿出来和大家共享,也希望所有的朋友能慷慨地将自己搜集的有关 ASP 的资料告诉作者,谢谢.由于目前国内有关 ASP 的中文教材

Squid的ACL访问控制及反向代理

Squid提供了强大的代理控制机制,通过合理的设置ACL,并进行限制,可以针对源地址.目标地址.访问的URL路径.访问的时间等条件进行过滤. 在配置文章squid.conf中,ACL访问控制通过以下两个步骤来实现:1:使用acl配置项定义需要控制的条件2:通过http_access 配置对已定义的列表做出"允许" 或者 "拒绝" 访问的控制 定义控制列表: acl 列表名 列表类型 列表内容 允许访问权限: http_access allow 列表名 拒绝访问权限:

squid缓存服务器 ACL访问控制 传统代理 透明代理 squid日志分析 反向代理

缓存代理概述 Squid提供了强大的代理控制机制,通过合理的设置ACL,并进行限制,可以针对源地址.目标地址.访问的URL路径.访问的时间等条件进行过滤.作为应用层的代理服务器软件,Sqiod主要提供了缓存加速和引用层过滤控制能力 代理的工作机制 当客户机通过代理来请求 Web 页面时,指定的代理服务器,会先检查自己的缓存如果缓存中已经有客户机需要访问的页面,则直接将缓存中的页面内容反馈给客户机:如果缓存中没有客户机需要访问的页面,则用代理服务器向Internet 发送访问请求. 由于客户机的W