zookeeper搭建以及acl权限访问控制

搭建zookeeper环境

1. 搭建zookeeper环境
  • 官网下载文件,解压至服务器
  • cp zoo.cfg.template zoo.cfg
  • 基本没有要修改的配置,默认配置就可以启动
1. 启动zookeeper
./bin/zkServer.sh start

启动成功

2. 通过zk客户端连接刚才启动的zk服务
./bin/zkCli.sh

在这里插入图片描述

3. 创建一个节点测试一下有没有问题
create /test mytest
ls /test
get /test

在这里插入图片描述
启动成功,并成功创建、访问节点。

zk访问权限控制

ACL(Access Control Lists):zookeeper中定义了五种控制权限:

  • CREATE:创建当前节点的子节点
  • READ:获取节点数据和子节点列表
  • WRITE:更新节点数据
  • DELETE:删除子节点的权限
  • ADMIN:设置节点ACL的权限。
    其中CREATE和DELETE这两种权限都是针对子节点的权限控制。

ZooKeeper提供了如下几种验证模式(scheme):

  • digest:Client端由用户名和密码验证,譬如user:password,digest的密码生成方式是Sha1摘要的base64形式
  • auth:不使用任何id,代表任何已确认用户。
  • ip:Client端由IP地址验证,譬如172.2.0.0/24
  • world:固定用户为anyone,为所有Client端开放权限(默认)
  • super:在这种scheme情况下,对应的id拥有超级权限,可以做任何事情(cdrwa)
现在,我们的zk节点需要进行权限设置
  1. workd 刚刚创建的test节点,我们来看一下test节点的权限是什么样的
getAcl /test

在这里插入图片描述
节点权限是world,也就是默认权限,为所有client端开放,这样肯定是不安全的,我们先基于auth模式进行权限的控制

  1. auth 模式进行权限控制
3. auth加密形式(还是依赖以上创建的test节点进行权限控制)
4. 为节点创建auth权限认证方式(drawc为上述具体操作权限)
setAcl /test auth:user:123:drawc
5. 登陆解密流程
	1. 创建用户上下文
	addauth digest user:123
	2. 设置登陆
	setAcl /test auth:user:123:drawc
6. 现在看一下是否能访问得了该节点,发现是没有问题的,因为现在权限上下文中是包含user:123 的信息的
ls /test
7. 现在看一下/test节点的权限信息
getAcl /test

在这里插入图片描述
现在,成功的为节点设置了访问权限,清除一下上下文,再次进行访问,或者直接退出当前客户端重新登陆一下,访问/test节点,会发生什么

退出客户端
quit
重新连接客户端
./zkCli.sh
ls /test

在这里插入图片描述
会发现没有权限进行访问,此时进行登陆、授权访问该节点

8. 设置权限上下文
addauth digest user:123
9. 设置节点访问权限
setAcl /test auth:user:123:drawc
10. 访问test节点
get /test 

在这里插入图片描述
会发现,可以正常进行访问,这就是auth权限的控制流程,接下来我们来说一下digest的访问控制

digest加密形式

digest加密模式相对于auth来说要稍微麻烦一些,需要对要设置的密码进行BASE64(SHA1(password))的处理
搞起

  1. 首先,先把之前创建的测试节点干掉把,在创建一个没有权限控制的测试节点
delete /test
create /test mytest
get /test
  1. 生成一个符合degist的密码(设置的密码是password哟)
echo -n user:password | openssl dgst -binary -sha1 | openssl base64

在这里插入图片描述
3. 为节点设置degist权限(这回不需要设置上下文)

password替换为生成的base64的编码
setAcl /test digest:user:tpUq/4Pn5A64fVZyQ0gOJ8ZWqkY=:drawc

在这里插入图片描述

查看节点权限后访问一下,发现是访问不了的
getAcl /test
get /test
接下来设置一下权限再访问
addauth digest user:password

在这里插入图片描述
发现是可以正常访问的,没毛病老铁,这是digest模式的权限设置方式,接下来介绍一下ip的权限模式

ip权限模式

还是刚才的test节点,删除后重新创建一个测试节点

delete /test
create /test mytest
get /test

设置节点访问权限为ip模式,现在有个小问题是在设置ip模式的时候呢,localhost是没办法设置的,所以本地要设置成127.0.0.1,所以我们在客户端连接zksercer的时候呢,要连接成127.0.0.1
在这里插入图片描述
连接上之后,命令行的前面可以看到,当前连接的ip是127.0.0.1

接下来对节点设置ip访问
setAcl /test ip:127.0.0.1:drawc,ip:192.168.1.2:drawc

在这里插入图片描述
这个ip如果设置的不是本地或者你的ip,是访问不到的,例如:
在这里插入图片描述
是不是没毛病。

最近每天晚上都两点睡,连续好几个月了,身体有点吃不消了,在这个经济下行的时代,想做点什么,想给有想法的大佬做舔狗

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值