【问题标题】:Curator Framework bypasses Zookeeper ACL settingsCurator Framework 绕过 Zookeeper ACL 设置
【发布时间】:2019-11-18 02:27:21
【问题描述】:

我需要为访问 Zookeeper 服务器内部数据的客户端设置用户:密码身份验证。我正在尝试使用 zkCli 和 Curator Framework 来弄清楚它是如何工作的,出于某种原因,从 Curator Framework 执行的代码会绕过所有安全设置,并且在它不应该拥有它们时表现得像它具有完全访问权限一样。

我一直在关注这些问题的答案:

Using ACL with Curator

How to access a protected znode from ZooKeeper using zkCli?

zkCli:

[zk: localhost:7999(CONNECTED) 29] create /testpath contents digest:user:smGaoVKd/cQkjm7b88GyorAUz20=:cdrwa
Created /testpath
[zk: localhost:7999(CONNECTED) 4] getAcl /testpath
'digest,'user:smGaoVKd/cQkjm7b88GyorAUz20=
: cdrwa
[zk: localhost:7999(CONNECTED) 30] rmr /testpath  
Authentication is not valid : /testpath
[zk: localhost:7999(CONNECTED) 31]

上述结果如预期,我们添加了ACL限制,现在我们无法访问创建的节点。但是,当我尝试使用 Curator Framework 访问此节点时,它会删除它,但它不应该这样做。

        String zkConnectString = "hostname:7999";
        RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);

        CuratorFramework client = CuratorFrameworkFactory.builder()
                .connectString(zkConnectString)
                .retryPolicy(retryPolicy)
                .build();
        client.start();
        try {
            client.delete().forPath("/testpath");
        } catch (Exception e) {
            e.printStackTrace();
            System.exit(0);
        }

因此,java Curator Framework 代码成功删除了节点,而不是给出任何身份验证错误。我做错了什么?

产品版本:

策展人框架:2.11.1

动物园管理员服务器:3.4.5

Zookeeper java 客户端:3.4.12

【问题讨论】:

    标签: java apache-zookeeper acl apache-curator


    【解决方案1】:

    在 ZooKeeper CLI 中,您调用 rmr,即 Delete All。您遇到了 ACL 违规,因为 ACL 适用于 /testpath 下的节点,并且您没有权限删除/获取(可能是抱怨的 get)/testpath 下的节点。请注意,如果您在 CLI 中尝试使用 delete /testpath,它可以工作(我自己对此进行了测试),因为节点 /testpath 采用了其父节点的 ACL。 TBH 我永远无法将 ZooKeeper ACL 直接记在脑海中,于是我写了 Curator。因此,简而言之,Curator 正在做正确的事情(与 CLI 所做的事情相同)。

    【讨论】:

    • 真正令人困惑的是 - 是的,虽然 delete /testpath 有效,但其他命令如 getset - 不会。但我想我现在明白了,DELETE 权限是删除节点的第一级子节点的权限,该权限设置在哪里
    猜你喜欢
    • 2019-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多