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种操作权限:
CREATE、READ、WRITE、DELETE、ADMIN 也就是增、删、改、查、管理权限,这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权限控制的主要内容,如果未能解决你的问题,请参考以下文章