Zookeeper权限控制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zookeeper权限控制相关的知识,希望对你有一定的参考价值。

参考技术A Zookeeper ACL(Access Control List)一共分为5种权限:

与Linux权限类似,5个权限可以使用int型数字perms的5个二进制位表示,顺序为adcwr,如perms=5对应权限--cwr,perms=31对应权限adcwr。
一般在命令行设置权限时会使用ACL简写,在API调用时会使用perms数字表示权限。

Zookeeper权限验证方式(scheme)如下:

Zookeeper的默认权限为 world: anyone :adcwr ,即任何人拥有所有权限,如果将Zookeeper服务暴露给外网,不进行权限修改非常危险的。

命令行设置权限的格式: setAcl path scheme:id:auth,scheme:id:auth... 可以用逗号分隔

好了,现在每个节点只有拥有对应权限的连接能够进行对应操作了。

可以修改配置文件,跳过ACL检查,把权限设置正确后再打开ACL检查

本文搬自 我的博客 ,欢迎参观!

zookeeper 的权限控制

ZK的节点有5种操作权限:

CREATEREADWRITEDELETEADMIN 也就是增、删、改、查、管理权限,这5种权限简写为crwda(即:每个单词的首字符缩写)
注:这5种权限中,delete是指对子节点的删除权限,其它4种权限指对自身节点的操作权限

身份的认证有4种方式:
world
:默认方式,相当于全世界都能访问
auth
:代表已经认证通过的用户(cli中可以通过addauth digestuser:pwd 来添加当前上下文中的授权用户)
digest
:即用户名:密码这种方式认证,这也是业务系统中最常用的
ip
:使用Ip地址认证

设置访问控制:

方式一:(推荐)
1
)增加一个认证用户
addauth digest
用户名:密码明文
eg. addauth digest user1:password1
2
)设置权限
setAcl /path auth:
用户名:密码明文:权限
eg. setAcl /test auth:user1:password1:cdrwa
3
)查看Acl设置
getAcl /path

方式二:
setAcl /path digest:
用户名:密码密文:权限

注:这里的加密规则是SHA1加密,然后base64编码。

~~~~~~~~~~~~~~~~~~~~~~~~~~~

一、ip scheme

设置可以访问的ip地址(比如127.0.0.1)或ip地址段(比如192.168.1.0/16

10.194.157.58这台机器上创建/test并设置ip访问权限

[zk:10.194.157.58:2181(CONNECTED) 0] create /test "123"

Created /test

[zk:10.194.157.58:2181(CONNECTED) 1] setAcl /test ip:10.194.157.58:crwda

cZxid =0x740021e467

ctime = Wed Dec02 18:09:09 CST 2015

mZxid =0x740021e467

mtime = Wed Dec02 18:09:09 CST 2015

pZxid =0x740021e467

cversion = 0

dataVersion = 0

aclVersion = 1

ephemeralOwner =0x0

dataLength = 5

numChildren = 0

[zk:10.194.157.58:2181(CONNECTED) 2] ls /test

[]

可以看到,本机是可以访问的。

 

10.205.148.152上登陆

[zk:10.194.157.58:2181(CONNECTED) 1] ls /test

Authenticationis not valid : /test

可以看到,连接的ip不在授权中,提示访问错误。

二、设置用户和密码

[zk: localhost:2181(CONNECTED) 4] create /test ‘12345678‘

Created /test

[zk: localhost:2181(CONNECTED) 5] addauth digest user1:123456

[zk: localhost:2181(CONNECTED) 6] setAcl /test auth:user1:123456:r

cZxid = 0x200000003

ctime = Mon Sep 25 18:59:03 CST 2017

mZxid = 0x200000003

mtime = Mon Sep 25 18:59:03 CST 2017

pZxid = 0x200000003

cversion = 0

dataVersion = 0

aclVersion = 1

ephemeralOwner = 0x0

dataLength = 10

numChildren = 0

[zk: localhost:2181(CONNECTED) 7] getAcl /test

‘digest,‘user1:HYGa7IZRm2PUBFiFFu8xY2pPP/s=

: r

[zk: localhost:2181(CONNECTED) 8]


以上是关于Zookeeper权限控制的主要内容,如果未能解决你的问题,请参考以下文章

ZooKeeper系列—— ACL 权限控制

Zookeeper 节点权限控制ACL详解

Zookeeper 节点权限控制ACL详解

Zookeeper 节点权限控制ACL详解

ZooKeeper设置ACL权限控制,删除权限

ZooKeeper设置ACL权限控制,删除权限