一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 為zookeeper配置相應的acl權限

為zookeeper配置相應的acl權限

2021-01-08 11:38qianshanding0708 Java教程

這篇文章主要介紹了為zookeeper配置相應的acl權限的相關實例,具有一定參考價值,需要的朋友可以了解下。

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:可以在該節點中設置權限。

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

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

內置的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接口。

示例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
@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配置相應的acl權限的全部內容,希望對大家有所幫助。有什么問題可以留言,小編會及時回復大家的,在此也感謝大家對本站的支持。

原文鏈接:http://blog.csdn.net/qianshangding0708/article/details/50114671

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 午夜爱爱片 | 天天草人人草 | 国产精品亚欧美一区二区三区 | 久久这里都是精品 | bl放荡受np双性 | 亚洲视频1区 | 十八女下面流水不遮免费 | 日韩久久精品 | 亚洲美女人黄网成人女 | 国产综合亚洲专区在线 | 污小说h| 亚洲精品国产精品精 | 国产高清精品自在久久 | 四虎影视色费永久在线观看 | 国产九九视频在线观看 | kk4444在线影视播放 | 国内精品久久久久香蕉 | 天海翼最新 | 亚洲精品无码不卡在线观看 | 亚洲精品成人456在线播放 | 奇米777四色精品综合影院 | 午夜福利试看120秒体验区 | 艾秋麻豆果冻传媒老狼仙踪林 | 26uuu成人人网图片 | 我与白丝同桌的故事h文 | 青青草原网| 亚洲香蕉网久久综合影院3p | 狠狠澡| 经典三级四虎在线观看 | 国产久热香蕉在线观看 | 五月天精品视频播放在线观看 | 久久91精品国产91 | jizzjizz3d动漫 | 免费看一区二区三区 | 恩不要好大好硬好爽3p | 国产男人搡女人免费视频 | 秋霞午夜伦午夜高清福利片 | 免费理伦片手机在线播放 | 毛片群| 久久久久激情免费观看 | 无删减影视免费观看 |