02.zookeeper节点的监听与权限设置

zookeeper节点的监听

  • ls -w path : 监听子节点的的变化(增,删)
    / 下有一个/course节点,现在监听这个/course节点
    在这里插入图片描述
    增加一个/course的子节点 /course/Java。
    在这里插入图片描述
    现在删除这个/course/Java节点,看会不会监听到:
    在这里插入图片描述
    可以看到并没有监听到子节点的删除,原因是监听是一次性的,设置对这个节点的监听只能监听一次,想要永久的监听,就要不断的设置监听。

  • get -w path 监听节点数据的变化
    现在/course节点的数据为:课程
    在这里插入图片描述
    对该节点设置监听
    在这里插入图片描述
    修改该节点数据:
    在这里插入图片描述
    同样监听只生效一次。

  • stat -w path 监听节点属性的变化
    该监听也只能监听本节点数据的变化,与get -w path 一样,不能监听到子节点的增加或删除。

  • printwatches on|off 触发监听后,是否打印监听事件(默认on)

acl权限设置

ACL全称为Access Control List(访问控制列表),用于控制资源的访问权限。ZooKeeper使用ACL来控制对其znode的防问。基于scheme : id : permission的方式进行权限控制。scheme表示授权模式、id模式对应值、permission即具体的增删改权限位。

scheme:认证模型

描述 方案
world 开放模式,world表示全世界都可以访问(这是默认设置) id:anyone
ip ip模式,限定客户端IP防问
auth 用户密码认证模式,只有在会话中添加了认证才可以防问
digest 与auth类似,区别在于auth用明文密码,而digest 用sha-1+base64加密后的密码。在实际使用中digest 更常见。

permission权限位

权限位 权限 描述
c CREATE 可以创建子节点
d DELETE 可以删除子节点(仅下一级节点)
r READ 可以读取节点数据及显示子节点列表
w WRITE 可以设置节点数据
a ADMIN 可以设置节点访问控制列表权限

acl 相关命令

命令 使用方式 描述
getAcl getAcl 读取ACL权限
setAcl setAcl 设置ACL权限
addauth addauth 添加认证用户

word权限示例

语法: setAcl world:anyone:<权限位>
当前/course节点的权限为cdrwa.
在这里插入图片描述
修改/course权限为rwa
在这里插入图片描述
现在节点/course对任何用户的权限是可读该节点数据,可写该节点数据,可设置该节点访问权限,不能删除和增加子节点。
尝试增加子节点:
在这里插入图片描述
在这里插入图片描述
· 修改数据成功

digest权限示例:

语法1:setAcl digest :<用户名>:<密钥>:<权限位>
语法2:addauth digest <用户名>:<密码>

  1. 通过sha1与base64组合生成密码,可通过以下命令生成:
echo -n <用户名>:<密码> | openssl dgst -binary -sha1 | openssl base64

定义用户名密码为:zhangsan , 123456,返回密钥
在这里插入图片描述
设置digest权限:
在这里插入图片描述
在这里插入图片描述

设置成功,该节点只没有设置该节点权限的权力,
给当前会话添加权限帐户:addauth digest zhangsan:123456 ,才能操作该节点
增加和删除一个节点,设置和查询数值:
在这里插入图片描述
将权限修改为cdrwa:
在这里插入图片描述

没有权限修改,第一次权限修改最好保留a权限,有a权限可以修改为原来的模式和权限

auth模式示例

语法:

  1. setAcl auth:<用户名>:<密码>:<权限位>
  2. addauth digest <用户名>:<密码>
    auth 与diges模式差不多,只不过auth模式的密码是明文

IP权限示例:

语法: setAcl ip:<ip地址|地址段>:<权限位>

ACL的特殊说明:

权限仅对当前节点有效,不会让子节点继承。如限制了IP防问A节点,但不妨碍该IP防问A的子节点 /A/B。

猜你喜欢

转载自blog.csdn.net/lglglglglgui/article/details/108629810
今日推荐