【发布时间】:2019-11-18 02:27:21
【问题描述】:
我需要为访问 Zookeeper 服务器内部数据的客户端设置用户:密码身份验证。我正在尝试使用 zkCli 和 Curator Framework 来弄清楚它是如何工作的,出于某种原因,从 Curator Framework 执行的代码会绕过所有安全设置,并且在它不应该拥有它们时表现得像它具有完全访问权限一样。
我一直在关注这些问题的答案:
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