带有 ACL 的 rmr zknode

rmr zknode with ACL

我已经使用 acl 创建了一个新的 zknode,如下所示。

[0]addauth digest username:password
[1]create /testnode mydata auth:username:password:crdwa,world:anyone:r

这成功创建了 zknode,然后我退出了 zkCli 会话。

现在,当我再次登录到 zkCli 会话时。如果我不执行 "addauth digest username:password" 作为我的第一个命令,那么我将无法读取和写入 /testnode,这是预期的。但是我可以 运行 rmrdelete 命令

[0]rmr /testnode -> this command deletes the zknode, which I do not want.

您在/testnode 上定义的ACL 限制访问,以便任何人都可以读取znode 中的数据,但只有经过身份验证的用户才能在/testnode 下创建子节点、删除/testnode 下的子节点、将数据写入znode 或管理 znode 权限。此 ACL 对删除 /testnode 没有任何限制,因为实际上那是对父目录的操作:删除 /.

的子目录

ZooKeeper access control using ACLs 上的 Apache 文档更详细地描述了权限设置:

ZooKeeper supports the following permissions:

  • CREATE: you can create a child node
  • READ: you can get data from a node and list its children.
  • WRITE: you can set data for a node
  • DELETE: you can delete a child node
  • ADMIN: you can set permissions

要限制删除子 znode,您需要在其父节点上应用 ACL,并且该 ACL 必须限制 DELETE 访问。