ZooKeeper的ACL权限
ACL控制权限
什么是ACL(Access Control List访问控制列表)
- 针对节点可以设置相关读写等权限, 目的为了保障数据安全性
- 权限permission可以指定不同的权限范围以及角色
ACL命令行
getAcl: 获取某个节点的acl权限信息
[zk: localhost:2181(CONNECTED) 11] getAcl /czk
'world,'anyone
: cdrwa
setAcl: 设置某个节点的acl权限信息
addauth: 输入认证授权信息, 注册时输入明文密码(登录)但是在zk的系统里, 密码是以加密的形式存在的
ACL的构成
zk的acl通过[scheme : id :permissions] 来构成权限列表
- scheme: 代表采用的某种权限机制
- id: 代表允许访问的用户
- permissions: 权限组合字符串
scheme:
world: world下只能有一个id, 即只有一个用户就是anyone 组合的写法就是
world:anyone:[permissions]
auth: 代表认证登录, 需要注册用户有权限就可以, 形式为 auth: user:password:[permissions]
digest: 需要对密码加密才能访问, 组合形式为digest: username:BASE64(SHA1(password)):[permissions]
auth与digest的区别: 前者明文,后者密文
- setAcl /path auth:tom:tom:cdrwa
- setAcl /path digest:tom:BASE64(SHA1(password))cdrwa是等价的
- 在通过addauth digest tom:tom后都能操作指定节点的权限
ip:当设置为ip指定的IP地址, 此时限制ip进行访问,比如ip:192.168.1.1:[permissions]
super: 代表超级管理员, 拥有所有的权限
permissions说明
- crdwa
- Create 创建
- Read 获取节点/子节点
- Write: 设置节点数据
- Delete: 删除子节点
- Admin 设置权限
world:anyone:cdrwa
#创建子节点 /czk/abc
[zk: localhost:2181(CONNECTED) 5] create /czk/abc 123
Created /czk/abc
#查看节点权限 新建节点默认权限都是 world:anyone:cdrwa
[zk: localhost:2181(CONNECTED) 6] getAcl /czk/abc
'world,'anyone
: cdrwa
- 通过setAcl修改节点权限 setAcl 路径 world:anyone:crwa
#设置权限为crwa 去掉了d 删除子节点权限
[zk: localhost:2181(CONNECTED) 7] setAcl /czk/abc world:anyone:crwa
cZxid = 0xb3
ctime = Sun Jan 06 17:46:55 CST 2019
mZxid = 0xb3
mtime = Sun Jan 06 17:46:55 CST 2019
pZxid = 0xb3
cversion = 0
dataVersion = 0
aclVersion = 1
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
#查看权限
[zk: localhost:2181(CONNECTED) 8] getAcl /czk/abc
'world,'anyone
: crwa
#创建新的子节点
[zk: localhost:2181(CONNECTED) 9] create /czk/abc/czk1 123
Created /czk/abc/czk1
#测试能否删除子节点
[zk: localhost:2181(CONNECTED) 11] delete /czk/abc/czk1
Authentication is not valid : /czk/abc/czk1
#子节点依然存在
[zk: localhost:2181(CONNECTED) 12] ls /czk/abc
[czk1]
auth:user:pwd:cdrwa 用auth的方式(密码为明文)处理ACL
addauth digest user:pwd 用户注册 登陆
[zk: lh:2181(CONNECTED) 13] setAcl /czk/abc auth:czk:czk:cdrwa
Acl is not valid : /czk/abc # 没有注册用户
[zk: lh:2181(CONNECTED) 14] addauth digest czk:czk #注册用户
[zk: lh:2181(CONNECTED) 15] setAcl /czk/abc auth:czk:czk:cdrwa
cZxid = 0xb3
ctime = Sun Jan 06 17:46:55 CST 2019
mZxid = 0xb3
mtime = Sun Jan 06 17:46:55 CST 2019
pZxid = 0xb5
cversion = 1
dataVersion = 0
aclVersion = 2
ephemeralOwner = 0x0
dataLength = 3
numChildren = 1
[zk: lh:2181(CONNECTED) 16] getAcl /czk/abc
'digest,'czk:8vob7o7uTPp2jDaiVV3mUesBi7A=
: cdrwa
#退出终端后重新操作
[zk: localhost:2181(CONNECTED) 0] ls /czk
[sec0000000003, dir1, abc, sec0000000002]
[zk: localhost:2181(CONNECTED) 1] ls /czk/abc
Authentication is not valid : /czk/abc #没有查看权限
#登陆后再次查看
[zk: localhost:2181(CONNECTED) 4] addauth digest czk:czk
[zk: localhost:2181(CONNECTED) 5] ls /czk/abc
[xyz]
#修改授权内容 一旦指定了用户名 再次设置 不需要传入用户名密码
[zk: localhost:2181(CONNECTED) 8] setAcl /czk/abc auth::crwa
cZxid = 0xb3
ctime = Sun Jan 06 17:46:55 CST 2019
mZxid = 0xb3
mtime = Sun Jan 06 17:46:55 CST 2019
pZxid = 0xb5
cversion = 1
dataVersion = 0
aclVersion = 3
ephemeralOwner = 0x0
dataLength = 3
numChildren = 1
[zk: localhost:2181(CONNECTED) 9] getAcl /czk/abc
'digest,'czk:8vob7o7uTPp2jDaiVV3mUesBi7A=
: crwadigest:user:BASE64(SHA1(pwd)):cdrwa 用digest(密码为密文)的方式处理ACL
[zk: localhost:2181(CONNECTED) 13] setAcl /czk/test digest:czk:8vob7o7uTPp2jDaiVV3mUesBi7A=:rwa
cZxid = 0xbc
ctime = Sun Jan 06 18:20:23 CST 2019
mZxid = 0xbc
mtime = Sun Jan 06 18:20:23 CST 2019
pZxid = 0xbc
cversion = 0
dataVersion = 0
aclVersion = 1
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
[zk: localhost:2181(CONNECTED) 14] ls /czk/test
[]
[zk: localhost:2181(CONNECTED) 15] getAcl /czk/test
'digest,'czk:8vob7o7uTPp2jDaiVV3mUesBi7A=
: rwa
ip:192.168.1.1:cdrwa 通过ip 控制某些客户端是否有访问的权限
[zk: localhost:2181(CONNECTED) 17] create /czk/test2 123
Created /czk/test2
[zk: localhost:2181(CONNECTED) 18] setAcl /czk/test2 ip:192.168.199.3:crwa
cZxid = 0xbf
ctime = Sun Jan 06 18:24:28 CST 2019
mZxid = 0xbf
mtime = Sun Jan 06 18:24:28 CST 2019
pZxid = 0xbf
cversion = 0
dataVersion = 0
aclVersion = 1
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
[zk: localhost:2181(CONNECTED) 19] getAcl /czk/test2
'ip,'192.168.199.3
: crwa
[zk: localhost:2181(CONNECTED) 20] get /czk/test2
Authentication is not valid : /czk/test2
super管理员
修改 zkServer.sh
nohup $JAVA $ZOO_DATADIR_AUTOCREATE "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" \
"-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \
"-Dzookeeper.DigestAuthenticationProvider.superDigest=czk:8vob7o7uTPp2jDaiVV3mUesBi7A=" \
-cp "$CLASSPATH" $JVMFLAGS $ZOOMAIN "$ZOOCFG" > "$_ZOO_DAEMON_OUT" 2>&1 < /dev/null &重启客户端 登陆
[zk: localhost:2181(CONNECTED) 2] addauth digest czk:czk
[zk: localhost:2181(CONNECTED) 3] ls /czk/test2
[]
[zk: localhost:2181(CONNECTED) 4] getAcl /czk/test2
'ip,'192.168.199.3
: crwa
[zk: localhost:2181(CONNECTED) 5] ls /czk/test2
[]
[zk: localhost:2181(CONNECTED) 6] delete /czk/test2
[zk: localhost:2181(CONNECTED) 7] ls /czk
[sec0000000003, dir1, abc, test, sec0000000002]
ZooKeeper的ACL权限的更多相关文章
- zookeeper的ACL权限控制
ACL:Access Control List 访问控制列表 1. 简介 0.概述 ACL 权限控制,使用:scheme:id:perm 来标识,主要涵盖 3 个方面: 权限模式(Scheme): ...
- ZooKeeper设置ACL权限控制
ZK的节点有5种操作权限:CREATE.READ.WRITE.DELETE.ADMIN 也就是 增.删.改.查.管理权限,这5种权限简写为crwda(即:每个单词的首字符缩写)注:这5种权限中,del ...
- 1.ZooKeeper ACL权限控制
参考:https://blog.csdn.net/liuxiao723846/article/details/79391650 ZK 类似文件系统,Client 可以在上面创建节点.更新节点.删除节点 ...
- zookeeper ACL权限
原文链接:https://www.jianshu.com/p/392248ab27f4 对zookeeper设置ACL属性 我们以zkCli为例,来说明zookeeper对ACL的设置. 使用zkCl ...
- Zookeeper Acl权限 超级用户权限 怎么跳过ACL密码/账户验证
Zookeeper的一个节点不知道什么原因无法删除了,查看日志发现是没有权限, 我们之前使用ACL进行Zookeeper节点的权限管理. 可以解决以下三种但不限于以下三种问题: 1.在设置Acl权限时 ...
- zookeeper 笔记-ACL
zookeeper中,znode的ACL是没有继承关系的,是独立控制的,zookeeper的acl可以从3个维度理解,一是scheme,二是user,三是permission,通常表示为scheme: ...
- 分布式服务管理框架-Zookeeper节点ACL
文章转自:http://blog.csdn.net/xyang81/article/details/53147894 概述 ACL全称为Access Control List(访问控制列表),用于控制 ...
- ZooKeeper的ACL实现源码阅读
什么是ACL(Access Control List) zookeeper在分布式系统中承担中间件的作用,它管理的每一个节点上可能都存储这重要的信息,因为应用可以读取到任意节点,这就可能造成安全问题, ...
- linux ACL权限规划:getfacl,setfacl使用
ACL即Access Control List 主要的目的是提供传统的owner,group,others的read,write,execute权限之外的具体权限设置,ACL可以针对单一用户.单一文件 ...
随机推荐
- 推荐系统系列(五):Deep Crossing理论与实践
背景 特征工程是绕不开的话题,巧妙的特征组合也许能够为模型带来质的提升.但同时,特征工程耗费的资源也是相当可观的,对于后期模型特征的维护.模型线上部署不太友好.2016年,微软提出Deep Cross ...
- Android_(控件)使用自定义控件在屏幕中绘制一条虚线
在Android屏幕中绘制虚线,最通用的是自定义控件DashedLine,再将自定义控件放入xml布局中 运行截图: 程序结构 package com.example.asus.gary_042; i ...
- C++模板的偏特化与全特化
模板的声明 类模板和函数模板的声明方式是一样的,在类定义/模板定义之前声明模板参数列表.例如: // 类模板 template <typename T1, typename T2> cla ...
- leetcode题目2.两数相加(中等)
题目描述: 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来 ...
- ajax 415
ajax 发送post请求是出现415错误,是ajax的格式有问题,如下. $.ajax({ type: 'POST', url: '/login', data: { "username&q ...
- VLC-Qt 入门指南
关于 VLC-Qt VLC-Qt:一个结合了 Qt 应用程序和 libVLC 的免费开源库.它包含了用于媒体播放的核心类,以及用于更快速地进行媒体播放器开发的一些 GUI 类. 官网地址:http ...
- 显示Pl/Sql Developer window list窗口
默认情况下Window List窗口是不显示的,这十分不方便 (一)在菜单项的Tools下的Preference选项中的UserInterface中选择Option,在右边对于的Autosave de ...
- backspace 产生乱码的问题
1.要使用回删键(backspace)时,同时按住ctrl键(一般情况下会有用,如果没用使用下面的方法) 2.设定环境变量 在bash下:$ stty erase ^? 或者把 stty er ...
- 自定义application的全局捕获异常实现
package com.loaderman.global; import android.app.Application; import android.os.Environment; import ...
- 注册 Ironic 裸金属节点并部署裸金属实例
目录 文章目录 目录 前文列表 注册(Enrollment)裸机 创建裸金属实例的 Flavor 部署裸金属实例 日志分析 问题:Failed to create neutron ports for ...