【问题标题】:ZooKeeper delete permissions enforcement understandingZooKeeper删除权限强制理解
【发布时间】:2018-07-30 22:15:13
【问题描述】:
[zk: 9] addauth digest user:defaultPassword
[zk: 32] create /test
Created /test
[zk:  33] create /test/can-delete null digest:user:xMNYqfrT373RREgAzmYepA2oLxY=:cdrw
Created /test/can-delete
[zk: 34] getAcl /test/can-delete
'digest,'user:xMNYqfrT373RREgAzmYepA2oLxY=:cdrw
[zk: 35] create /test/cant-delete null digest:user:xMNYqfrT373RREgAzmYepA2oMHb=:cdrw
Created /test/cant-delete
[zk: 37] delete /test/can-delete
[zk: 38] delete /test/cant-delete

(localhost:2181(CONNECTED)从上面的每一行中删除,以提高可读性)

  • 设置有 1 个服务器和 1 个客户端。
  • 首先我在命令 9 中验证自己。
  • 我在32中创建了一个test节点
  • 我在其中创建了一个具有正确 ACL 的 can-delete 节点。
  • 在同一个 test 文件夹中,我创建了另一个具有不正确 ACL 权限的 cant-delete 节点(如果您看到摘要密码的“=”之前的最后 3 个字符,与命令 34 中的 on 相比,我在命令 35 中更改了它们)。
  • 我尝试删除两个节点(可以删除和无法删除)。我成功了。

我无法理解为什么以及如何允许我删除 cant-delete,因为 ACL 与经过身份验证的 ID:PASSWORD 不匹配。我期待这会向我抛出 NoAuthException

请帮忙,谢谢。

【问题讨论】:

  • 我认为 ACL 是为了安全。所以你的意思是在删除它时只检查用户名是否相同。它根本不检查密码吗?我尝试阅读,但没有得到 NoAuth 的响应。

标签: java permissions apache-zookeeper acl


【解决方案1】:

ZooKeeper documentation 说:

ZooKeeper 支持以下权限:

CREATE:可以创建子节点

READ:您可以从节点获取数据并列出其子节点。

WRITE:您可以为节点设置数据

DELETE:可以删除子节点

管理员:您可以设置权限

请注意,DELETE 权限适用于 节点,而不是节点本身。

这意味着要防止删除节点,您需要在您尝试保护的节点的 parent 上设置 ACL(没有“d”DELETE 权限)(即您需要在您的示例中在 /test 节点上设置 ACL)

【讨论】:

    猜你喜欢
    • 2018-11-05
    • 2017-06-27
    • 1970-01-01
    • 1970-01-01
    • 2013-10-27
    • 1970-01-01
    • 1970-01-01
    • 2011-03-22
    • 2016-01-05
    相关资源
    最近更新 更多