Zookeeper-权限管控(ACL)

作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

图片

前面我们介绍介绍了几个常用的代理服务器,本章节我们讲来讲解Zookeeper这个中间件。

前面的操作无论是控制台也好,还是通过SDK的方式去链接(后面案例讲解),实际上都是没有认证的。在目前很多环境都有类似弱密码或者无密码的扫描,所以针对ZooKeeper 也需要进行权限管控,也是安全需要。

ZooKeeper 的权限管控通过ACL(Access Control List,访问控制列表)实现,用于控制客户端对 znode(数据节点)的访问权限。以下是关于 ZooKeeper ACL 的详细说明:


1.ACL 的基本概念

ACL 是 ZooKeeper 权限控制的核心机制,用于定义哪些客户端可以访问特定的 znode,以及它们可以执行哪些操作。ACL 的实现类似于 UNIX 文件系统的权限控制,但它更加灵活。

2. 支持的权限模式

模式描述示例
world

默认模式,所有用户可访问。ID固定为anyone

world:anyone:cdrwa
auth

使用当前会话中已认证的用户,无需指定ID。需先调用addauth

auth::cdrwa
digest

用户名+密码认证,密码以SHA1哈希存储。需提前调用addauth digest user:pass

digest:user:XDkd2dsEuhj9inqu2qjqQ==:cdrwa
ip

基于客户端IP地址认证。

ip:192.168.1.1:cdrwa
sasl

集成Kerberos等安全协议,适用于企业级认证。

sasl:user@REALM:cdrwa

3. 权限类型

权限缩写描述
CREATEc

允许创建子节点。

READr

允许读取节点数据及子节点列表。

WRITEw

允许修改节点数据。

DELETEd

允许删除子节点(仅对子节点有效)。

ADMINa

允许设置节点的ACL。

4.权限操作

添加或者修改认证,这个认证不具有继承性,当前设置只确保/path有认证,但是/path/1及其他子znode不会有认证。

需要注意就是已经跑上业务的ZooKeeper集群并不是添加密码认证,因为这个涉及到业务端的修改。

4.1 密码生成

这里的密码生成的时候,会把账号也包括进去进行hash计算,所以这里对应的账号密码需要和实际添加acl规则的时候保持一致,否则就会出现认证失败的情况。

[root@localhost ~]# java -cp "/opt/zookeeper1/lib/*" org.apache.zookeeper.server.auth.DigestAuthenticationProvider user1:pass123
14:16:03.407 [main] INFO org.apache.zookeeper.server.auth.DigestAuthenticationProvider - ACL digest algorithm is: SHA1
user1:pass123->user1:3pSOxG2XvEeQTEHYsoM/cfCyoO4=

4.2 添加访问权限
# 未认证时访问被拒绝
get /secure-node
# 输出:Authentication is not valid : /secure-node

# 添加认证后允许访问,这个地方使用明文
addauth digest user:pass123
get /secure-node
4.3 设置权限
#设置修改历史目录权限 
#这里需要使用上面生成的密文 
setAcl /path digest:user:密文:crwda
    setAcl /test1 digest:user:LQIBOXBNEwStXazl6y5HKgpmPjo=:crdwa
      #创建时候带权限,这里也需要使用密文 
      create /myznode mydata digest:user:密文:cdrwa

      图片

      4.4 删除认证​​​​​​​
      #其实就是设置为默认权限 
      setAcl /path world:anyone:crwda
      4.5 忘记密码找回
      #修改配置文件
      zoo.cfg 
      
      
      skipACL=yes 
      #重启zk服务器,再进入就不需要密码
      ​​​​​​​

      运维小路

      一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

      关注微信公众号《运维小路》获取更多内容。

      评论
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

      当前余额3.43前往充值 >
      需支付:10.00
      成就一亿技术人!
      领取后你会自动成为博主和红包主的粉丝 规则
      hope_wisdom
      发出的红包
      实付
      使用余额支付
      点击重新获取
      扫码支付
      钱包余额 0

      抵扣说明:

      1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
      2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

      余额充值