作者介绍:简历上没有一个精通的运维工程师,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
前面我们介绍介绍了几个常用的代理服务器,本章节我们讲来讲解Zookeeper这个中间件。
前面的操作无论是控制台也好,还是通过SDK的方式去链接(后面案例讲解),实际上都是没有认证的。在目前很多环境都有类似弱密码或者无密码的扫描,所以针对ZooKeeper 也需要进行权限管控,也是安全需要。
ZooKeeper 的权限管控通过ACL(Access Control List,访问控制列表)实现,用于控制客户端对 znode(数据节点)的访问权限。以下是关于 ZooKeeper ACL 的详细说明:
ACL 是 ZooKeeper 权限控制的核心机制,用于定义哪些客户端可以访问特定的 znode,以及它们可以执行哪些操作。ACL 的实现类似于 UNIX 文件系统的权限控制,但它更加灵活。
模式 | 描述 | 示例 |
---|---|---|
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 |
权限 | 缩写 | 描述 |
---|---|---|
CREATE | c | 允许创建子节点。 |
READ | r | 允许读取节点数据及子节点列表。 |
WRITE | w | 允许修改节点数据。 |
DELETE | d | 允许删除子节点(仅对子节点有效)。 |
ADMIN | a | 允许设置节点的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服务器,再进入就不需要密码
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有