最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

為zookeeper配置相應的acl權限

 更新時間:2017年09月21日 15:22:10   作者:qianshanding0708  
這篇文章主要介紹了為zookeeper配置相應的acl權限的相關實例,具有一定參考價值,需要的朋友可以了解下。

Zookeeper使用ACL來控制訪問Znode,ACL的實現和UNIX的實現非常相似:它采用權限位來控制那些操作被允許,那些操作被禁止。但是和標準的UNIX權限不同的是,Znode沒有限制用戶(user,即文件的所有者),組(group)和其他(world)。Zookeepr是沒有所有者的概念的。

每個ZNode的ACL是獨立的,且子節(jié)點不會繼承父節(jié)點的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:可以創(chuàng)建子節(jié)點

  · READ:可以獲取該節(jié)點的數據,也可以讀取該節(jié)點所有的子節(jié)點。

  · WRITE:可以寫數據到該節(jié)點。

  · DELETE:可以刪除子節(jié)點。

   ·ADMIN:可以在該節(jié)點中設置權限。

簡單來說,zookeeper的這5種操作權限,CREATE、READ、WRITE、DELETE、ADMIN 也就是 增、刪、改、查、管理權限,這5種權限簡寫為crwda(即:每個單詞的首字符縮寫)

注:這5種權限中,delete是指對子節(jié)點的刪除權限,其它4種權限指對自身節(jié)點的操作權限

內置的ACL Schemes:

world: 只有一個id:anyone,world:anyone表示任何人都有訪問權限,Zookeeper把任何人都有權限的節(jié)點都歸屬于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() {
				// 監(jiān)控所有被觸發(fā)的事件
				public void process(WatchedEvent event) {
					System.out.println("已經觸發(fā)了" + 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() {
				// 監(jiān)控所有被觸發(fā)的事件
				public void process(WatchedEvent event) {
					System.out.println("已經觸發(fā)了" + 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配置相應的acl權限的全部內容,希望對大家有所幫助。有什么問題可以留言,小編會及時回復大家的,在此也感謝大家對本站的支持。

相關文章

  • 淺談java定時器的發(fā)展歷程

    淺談java定時器的發(fā)展歷程

    這篇文章主要介紹了淺談java定時器的發(fā)展歷程,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • 利用Java實現簡單的猜數字小游戲

    利用Java實現簡單的猜數字小游戲

    這篇文章主要為大家詳細介紹了如何利用java語言實現猜數字小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • mybatis連接MySQL8出現的問題解決方法

    mybatis連接MySQL8出現的問題解決方法

    這篇文章主要介紹了mybatis連接MySQL8出現的問題解決方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • SpringBoot自動裝配之@Enable深入講解

    SpringBoot自動裝配之@Enable深入講解

    這篇文章主要介紹了SpringBoot自動裝配之@Enable,SpringBoot中提供了很多Enable開頭的注解,這些注解都是用于動態(tài)啟用某些功能的。而其底層原理是使用@Import注?解導入一些配置類,實現Bean的動態(tài)加載
    2023-01-01
  • 詳解JVM的分代模型

    詳解JVM的分代模型

    這篇文章主要介紹了JVM的分代模型的相關資料,幫助大家更好的理解和學習Java虛擬機相關知識,感興趣的朋友可以了解下
    2020-10-10
  • 詳解Java中的封裝、繼承、多態(tài)

    詳解Java中的封裝、繼承、多態(tài)

    本文主要介紹了Java中的封裝、繼承、多態(tài)的相關知識,具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • 教你怎么使用Optional處理null

    教你怎么使用Optional處理null

    今天教各位小伙伴怎么使用Optional處理null,文中有非常詳細的代碼示例,對正在學習java的小伙伴們有很大的幫助,需要的朋友可以參考下
    2021-05-05
  • Java concurrency之AtomicLongFieldUpdater原子類_動力節(jié)點Java學院整理

    Java concurrency之AtomicLongFieldUpdater原子類_動力節(jié)點Java學院整理

    AtomicLongFieldUpdater可以對指定"類的 'volatile long'類型的成員"進行原子更新。它是基于反射原理實現的。下面通過本文給大家分享Java concurrency之AtomicLongFieldUpdater原子類的相關知識,感興趣的朋友一起看看吧
    2017-06-06
  • 圖解JVM內存模型

    圖解JVM內存模型

    這篇文章主要介紹了JVM內存模型的相關資料,幫助大家更好的理解和學習Java虛擬機,感興趣的朋友可以了解詳細
    2020-10-10
  • java異步寫日志到文件中實現代碼

    java異步寫日志到文件中實現代碼

    這篇文章主要介紹了java異步寫日志到文件中實現代碼的相關資料,需要的朋友可以參考下
    2017-04-04

最新評論

嘉义县| 曲松县| 正阳县| 安顺市| 博罗县| 友谊县| 嘉善县| 桑日县| 临江市| 昆明市| 资中县| 武安市| 洛浦县| 四子王旗| 上林县| 朔州市| 镇江市| 和平县| 布拖县| 浦县| 察隅县| 蕲春县| 贵港市| 永兴县| 来凤县| 遂平县| 武功县| 宜黄县| 皋兰县| 会同县| 新泰市| 鄂伦春自治旗| 皮山县| 石棉县| 清丰县| 新密市| 丰县| 玉树县| 屯昌县| 韶山市| 宝坻区|