欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

為zookeeper配置相應(yīng)的acl權(quán)限

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

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

每個(gè)ZNode的ACL是獨(dú)立的,且子節(jié)點(diǎn)不會(huì)繼承父節(jié)點(diǎn)的ACL。例如:Znode /app對(duì)于ip為172.16.16.1只有只讀權(quán)限,而/app/status是world可讀,那么任何人都可以獲取/app/status;所以在Zookeeper中權(quán)限是沒有繼承和傳遞關(guān)系的,每個(gè)Znode的權(quán)限都是獨(dú)立存在的。

Zookeeper支持可插拔的權(quán)限認(rèn)證方案,分為三個(gè)維度:scheme,user,permission。通常表示為scheme:id,permissions,其中Scheme表示使用何種方式來進(jìn)行訪問控制,Id代表用戶,Permission表示有什么權(quán)限。下面分別說說這三個(gè)維度:

ZooKeeper支持如下權(quán)限(permissions):

  · CREATE:可以創(chuàng)建子節(jié)點(diǎn)

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

  · WRITE:可以寫數(shù)據(jù)到該節(jié)點(diǎn)。

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

   ·ADMIN:可以在該節(jié)點(diǎn)中設(shè)置權(quán)限。

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

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

內(nèi)置的ACL Schemes:

world: 只有一個(gè)id:anyone,world:anyone表示任何人都有訪問權(quán)限,Zookeeper把任何人都有權(quán)限的節(jié)點(diǎn)都?xì)w屬于world:anyone

auth:不需要任何id, 只要是通過auth的user都有權(quán)限

digest: 使用用戶名/密碼的方式驗(yàn)證,采用username:BASE64(SHA1(password))的字符串作為ACL的ID

ip: 使用客戶端的IP地址作為ACL的ID,設(shè)置的時(shí)候可以設(shè)置一個(gè)ip段,比如ip:192.168.1.0/16, 表示匹配前16個(gè)bit的IP段

sasl:sasl的對(duì)應(yīng)的id,是一個(gè)通過sasl authentication用戶的id,zookeeper-3.4.4中的sasl authentication是通過kerberos來實(shí)現(xiàn)的,也就是說用戶只有通過了kerberos認(rèn)證,才能訪問它有權(quán)限的node.

如果需要實(shí)現(xiàn)自己定義的Scheme,可以實(shí)現(xiàn)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);
			// 所有用戶都有權(quán)限
			// Id world = new Id("world", "anyone");
			// ACL worldAcl = new ACL(ZooDefs.Perms.READ, world);
			// acls.add(worldAcl);
			// 10.0.2.76是本機(jī)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("已經(jīng)觸發(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("已經(jīng)觸發(fā)了" + event.getType() + "事件!");
				}
			});
			// 只有寫權(quán)限
			zk.addAuthInfo("digest", "fish:fishpw".getBytes());
			// 只有讀權(quán)限
			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();
		}
	}

 總結(jié)

以上就是本文關(guān)于為zookeeper配置相應(yīng)的acl權(quán)限的全部內(nèi)容,希望對(duì)大家有所幫助。有什么問題可以留言,小編會(huì)及時(shí)回復(fù)大家的,在此也感謝大家對(duì)本站的支持。

相關(guān)文章

  • idea perttier的使用和縮進(jìn)改為4不成功問題及解決

    idea perttier的使用和縮進(jìn)改為4不成功問題及解決

    這篇文章主要介紹了idea perttier的使用和縮進(jìn)改為4不成功問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • 深入理解java中的重載和覆蓋

    深入理解java中的重載和覆蓋

    下面小編就為大家?guī)硪黄钊肜斫鈐ava中的重載和覆蓋。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-06-06
  • JFreeChart動(dòng)態(tài)畫折線圖的方法

    JFreeChart動(dòng)態(tài)畫折線圖的方法

    這篇文章主要為大家詳細(xì)介紹了JFreeChart動(dòng)態(tài)畫折線圖的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • IntelliJ IDEA中查看文件內(nèi)所有已聲明的方法(類似eclipse的outline)

    IntelliJ IDEA中查看文件內(nèi)所有已聲明的方法(類似eclipse的outline)

    今天小編就為大家分享一篇關(guān)于IntelliJ IDEA中查看文件內(nèi)所有已聲明的方法(類似eclipse的outline),小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • 詳解Java基礎(chǔ)知識(shí)——JDBC

    詳解Java基礎(chǔ)知識(shí)——JDBC

    這篇文章主要介紹了Java基礎(chǔ)知識(shí)——JDBC,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • SpringBoot調(diào)整ApplicationContextAware如何實(shí)現(xiàn)類加載順序

    SpringBoot調(diào)整ApplicationContextAware如何實(shí)現(xiàn)類加載順序

    SpringBoot調(diào)整ApplicationContextAware實(shí)現(xiàn)類加載順序問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Java泛型中<?>和<T>的區(qū)別淺析

    Java泛型中<?>和<T>的區(qū)別淺析

    <T>和<?>的區(qū)別 <T>是參數(shù)類型,常常用于泛型類或泛型方法的定義,下面這篇文章主要給大家介紹了關(guān)于Java泛型中<?>和<T>區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • Spring boot打包jar分離lib和resources方法實(shí)例

    Spring boot打包jar分離lib和resources方法實(shí)例

    這篇文章主要介紹了Spring boot打包jar分離lib和resources方法實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Java 圖文并茂講解主方法中的String[] args參數(shù)作用

    Java 圖文并茂講解主方法中的String[] args參數(shù)作用

    很多老鐵不清楚JAVA主方法中main()里面的的參數(shù)是什么意思,以及有什么作用,接下來給大家用最通俗易懂的話來講解,還不清楚的朋友來看看吧
    2022-04-04
  • 關(guān)于MD5算法原理與常用實(shí)現(xiàn)方式

    關(guān)于MD5算法原理與常用實(shí)現(xiàn)方式

    這篇文章主要介紹了關(guān)于MD5算法原理與常用實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08

最新評(píng)論