Zookeeper权限控制

摘要:
Zookeeper提供ACL权限控制。通过权限控制,您可以控制节点的操作权限,以确保安全。权限模式:1)世界模式。默认情况下,任何人都可以对zk上的任何节点进行操作。2) IP模式,授予IP或IP段权限。3) 摘要式身份验证。zk使用Digest身份验证,这相当于用户密码。

Zookeeper提供了ACL(Access Control List)权限控制。

使用权限控制,可以控制节点的操作权限,保证安全性。

权限设置:将权限模式、授权对象、权限信息组成一条"scheme:id:permission"格式的ACL请求信息。

权限模式(Scheme):

  1)World模式,默认的,任何人可以对zk上任意节点操作

  2)IP模式,针对ip或者ip段赋予权限。

  3)Digest验证,zk中使用Digest认证,相当于用户密码的方式。

  4)Super权限模式,相当于特殊的Digest认证,具有Super权限的客户端可以对zk的任意数据节点进行操作

授权对象(ID):

  表示的就是将权限赋予谁,在ip模式中就是ip,在Digest或者Super中对应的是用户

权限信息:

  c: create)创建权限,授权对象可以在数据节点下创建子节点;

  w: wirte)更新权限,授权对象可以更新该数据节点;

  r: read)读取权限,授权对象可以读取该节点的内容以及子节点的列表信息;

  d: delete)删除权限,授权对象可以删除该数据节点的子节点;

  a: admin)管理者权限,授权对象可以对该数据节点体进行 ACL 权限设置。

如果认为网络安全程度比较高,不需要权限控制,可以通过系统参数zookeeper.skipACL=yes进行设置

ACL相关命令:

getAcl:获取某个节点的acl权限信息 

setAcl:设置某个节点的acl权限信息 

addauth: 输入认证授权信息,相当于注册用户信息,注册时输入明文密码,zk将以密文的形式存储

生成授权ID的方法:

String sId = DigestAuthenticationProvider.generateDigest("zk:test");

或者使用xshell:

echo -n zk:test | openssl dgst -binary -sha1 | openssl base64   # 输出结果:1LHmdzcxVxY+ZvefFlGjacOZfF8=

设置ACL:

1)创建时直接设置:

[zk: localhost:2181(CONNECTED) 12] create /test aaaaaa digest:zk:1LHmdzcxVxY+ZvefFlGjacOZfF8=:cdrwa

2)先创建后设置

[zk: localhost:2181(CONNECTED) 12] create /test1 xxx
[zk: localhost:2181(CONNECTED) 12] setAcl /test1 digest:zk:1LHmdzcxVxY+ZvefFlGjacOZfF8=:rw

现在直接get节点数据,会返回无权限

  [zk: localhost:2181(CONNECTED) 12] get /test
  org.apache.zookeeper.KeeperException$NoAuthException: KeeperErrorCode = NoAuth for /test

访问前授权:

[zk: localhost:2181(CONNECTED) 13] addauth digest zk:test
[zk: localhost:2181(CONNECTED) 14] get /test
aaaaaa

再看另一种授权方式,使用auth明文授权,其实也是属于用户名+密码的方式,使用之前先注册用户信息,之后再明文授权

[zk: localhost:2181(CONNECTED) 20] delete /testnode
[zk: localhost:2181(CONNECTED) 21] addauth digest test:test
[zk: localhost:2181(CONNECTED) 22] create /testnode aaaaa auth:test:test:cdwra
Created /testnode
[zk: localhost:2181(CONNECTED) 23] get /testnode
aaaaa

IP模式授权:

setAcl /test-node-ip ip:192.168.0.33:cdwra
create /test-node-ip  data  ip:192.168.0.33:cdwra

超级管理员模式,可以对任何节点进行操作,需要配置JVM启动参数:

-Dzookeeper.DigestAuthenticationProvider.superDigest=super:<base64encoded(SHA1(password))

现在用户名指定为super,后面的密码是加密的,现在使用test作为密码:

echo -n super:test | openssl dgst -binary -sha1 | openssl base64
D/InIHSb7yEEbrWz8b9l71RjZJU=

重新启动进行验证,进入客户端

addauth digest super:test

之后可以对任何节点做任何权限的操作。

  

免责声明:文章转载自《Zookeeper权限控制》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇oracle中带子查询的模糊查询案例MySQL性能优化总结下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MySQL-快速入门(11)用户管理

1、权限表 存储用户权限信息表主要有:user、db、host、tables_priv、columns_priv、procs_priv。 1》user表: 记录允许连接到服务器的账号信息,里面的权限是全局级别的。user表有42个字段,这些字段可以分为4类,分别是用户列、权限列、安全列、资源控制列。 2》db和host表 3》tables_priv和col...

vue配置请求转发解决跨域问题

通过nodejs的请求转发到后台,前端地址:http://localhost:8080 后端地址:http://localhost:8081 vue.config.js内容如下: let proxyObj={} proxyObj['/']={ //websocket ws:false, target:'http://localho...

R语言中duplicated函数:去重复,取重复

1、创建测试数据 > test <- c(1,2,3,1,1,2,5) ##创建向量测试数据> test[1] 1 2 3 1 1 2 5> duplicated(test) ## 基本用法,返回逻辑值,非重复为F,重复为T[1] FALSE FALSE FALSE TRUE TRUE TRUE FALSE> 2、对向量去重复...

linux系统统计某一行出现特定字符的次数

1、使用vim编辑器创建测试数据 [root@linuxprobe test]# cat a.txt ewetrte fsdfgf dfghghj dsffgd hgfdwe 2、统计每一行f出现的次数 [root@linuxprobe test]# awk -F "f" '{print NF-1}'a.txt ## -F 设定读入分隔符,NF-1显示每...

IdentityServer4 接口说明

在.net core出来以后很多人使用identityServer做身份验证。 ids4和ids3的token验证组件都是基于微软的oauth2和bearer验证组件。园子里也很多教程,我们通过教程了解到is4有一个discovery endpoint。 顾名思义,Discovery定义了一个服务发现的规范,它定义了一个api( /.well-known/...

saltstack--史上最细致安装攻略!亲测无坑

准备一台虚拟机node1: [root@linux-node1 pillar]# ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.88.137 netmask 255.255.255.0 broadcast 1...