博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Zookeeper的ACL权限控制
阅读量:6935 次
发布时间:2019-06-27

本文共 2306 字,大约阅读时间需要 7 分钟。

hot3.png

权限测试

创建目录

[zk: localhost:2181(CONNECTED) 1] create /dlw "dlw"Created /dlw

检查目录权限

[zk: localhost:2181(CONNECTED) 3] getAcl /dlw'world,'anyone: cdrwa

修改目录ACL权限,表示为/dlw目录添加accumulo用户,密码的MD5哈希码为SkvnZlrIQ19GNd7eLDXGKg0Esgw=,r表示只读

[zk: localhost:2181(CONNECTED) 5] setAcl /dlw digest:accumulo:SkvnZlrIQ19GNd7eLDXGKg0Esgw=:rcZxid = 0x30000003fctime = Mon Feb 05 16:47:14 CHOT 2018mZxid = 0x30000003fmtime = Mon Feb 05 16:47:14 CHOT 2018pZxid = 0x30000003fcversion = 0dataVersion = 0aclVersion = 1ephemeralOwner = 0x0dataLength = 5numChildren = 0

再检查目录权限

[zk: localhost:2181(CONNECTED) 6] getAcl /dlw'digest,'accumulo:SkvnZlrIQ19GNd7eLDXGKg0Esgw=: r

发现此时该目录已经因为权限不足无法访问

[zk: localhost:2181(CONNECTED) 7] ls /dlwAuthentication is not valid : /dlw

突然发现虽然知道accumulo用户密码的MD5值,但是并不知道密码是多少,然后对/dlw目录就无法访问了

这时可以使用zookeeper的acl超级管理员进行操作

Zookeeper的ACL超级管理员

修改zookeeper的启动脚本

$ cd $ZOOKEEPER_HOME/bin$ vi zkServer.sh

添加一行

SUPER_ACL="-Dzookeeper.DigestAuthenticationProvider.superDigest=super:xQJmxLMiHGwaqBvst5y6rkB6HQs="super:xQJmxLMiHGwaqBvst5y6rkB6HQs=表示super:admin

修改启动命令,找到nohup,把SUPER_ACL添加到启动命令中

nohup $JAVA $ZOO_DATADIR_AUTOCREATE "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" \    "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" "${SUPER_ACL}" \    -cp "$CLASSPATH" $JVMFLAGS $ZOOMAIN "$ZOOCFG" > "$_ZOO_DAEMON_OUT" 2>&1 < /dev/null &

分发zkServer.sh到其它zookeeper节点,重启zookeeper服务

再登录zkCli.sh,连接超级管理员super,就可以对/dlw进行操作

[zk: localhost:2181(CONNECTED) 14] addauth digest super:admin[zk: localhost:2181(CONNECTED) 15] ls /dlw[]

把/dlw目录的Acl修改为初始默认的

[zk: localhost:2181(CONNECTED) 23] setAcl /dlw world:anyone:crwdacZxid = 0x30000003fctime = Mon Feb 05 16:47:14 CHOT 2018mZxid = 0x30000003fmtime = Mon Feb 05 16:47:14 CHOT 2018pZxid = 0x30000003fcversion = 0dataVersion = 0aclVersion = 2ephemeralOwner = 0x0dataLength = 5numChildren = 0[zk: localhost:2181(CONNECTED) 24] getAcl /dlw'world,'anyone: cdrwa

Zookeeper的认证方式

digest:Client端由用户名和密码验证,譬如user:password,digest的密码生成方式是Sha1摘要的base64形式

auth:不使用任何id,代表任何已确认用户。

ip:Client端由IP地址验证,譬如172.2.0.0/24

world:固定用户为anyone,为所有Client端开放权限

super:在这种scheme情况下,对应的id拥有超级权限,可以做任何事情(cdrwa)

节点的权限(perms)主要有以下几种:

Create 允许对子节点Create操作

Read 允许对本节点GetChildren和GetData操作

Write 允许对本节点SetData操作

Delete 允许对子节点Delete操作

Admin 允许对本节点setAcl操作

ACL权限设置时分别用cdrwa简写表示

转载于:https://my.oschina.net/xiaozhublog/blog/1618691

你可能感兴趣的文章
Unix/Linux shell脚本中 “set -e” 的作用
查看>>
802.1x------2
查看>>
如何实现1像素的表格
查看>>
Namenode主备切换或报 IPC Server handler 23 on 8020
查看>>
路由协议OSPF知识点汇总
查看>>
如何定制视频业务- ramdisk 内存文件系统
查看>>
git
查看>>
<Power Shell>02 认识powershell
查看>>
jQuery用于请求服务器的函数
查看>>
windows server 2008虚拟化技术一览
查看>>
图案研究2--九格定义
查看>>
通过串口关闭Linux服务器
查看>>
RHEL 5服务篇—使用Apache搭建web服务(四)部署AWStats网站分析系统
查看>>
部署Nagios监控系统(一)
查看>>
JAVA 和.NET在安全功能的比较
查看>>
jps could not synchronize with target
查看>>
Android系统在新进程中启动自定义服务过程(startService)的原理分析 (下)
查看>>
理解Kubernetes(2): 应用的各种访问方式
查看>>
2018年『web』开发者不得不知的技术趋势
查看>>
Flask入门学习---Hello,Flask!
查看>>