ACL权限控制
- 针对节点可以设置相关读写等权限,目的为了保障数据安全性
- 权限permissions可以指定不同的权限范围以及角色
ACL命令行
- getAcl:获取某个节点的acl权限信息
- setAcl:设置某个节点的acl权限信息
- addauth:输入认证授权信息,注册时输入明文密码(登陆)但是在zk的系统里,密码是以加密的形式存在的
- zk的acl通过[scheme?permissions]来构成权限列表
scheme:代表采用的某种权限机制
id:代表允许访问的用户
permissions:权限组合字符串 - scheme
1.world:它下面只有一个id, 叫anyone, world:anyone代表任何人,zookeeper中对所有人有权限的结点就是属于world:anyone的 world:anyone:[permissions]
2.auth:代表认证登陆,需要注册用户有权限就可以,形式为auth:user:password:[permissions]
3.digest:需要对密码加密才能访问,组合形式为digest:username:BASE64(SHA1(password)):[permissions]
4.ip:当设置为ip指定的ip地址,此时限制ip进行访问,比如ip:192.168.1.1:[permissions]
5.super:代表超级管理员,拥有所有的权限
- premissions
world
1.权限字符串缩写crdwa
CREATE:创建子节点;
DELETE:删除子节点;
READ:获取节点/子节点;
WRITE:设置节点数据;
ADMIN:设置权限
设置权限
setAcl /bushro world:anyone:crwa
再删除就提示没有权限了
auth授权方式
addauth digest bushro:bushro
添加对应的授权认证
setAcl /bushro auth:bushro:bushro:cdrwa
设置权限
digest授权方式
密码是加密过后的
认证
addauth digest bushro:bushro
ip
super
增加超级管理员,编辑zkServer.sh
添加如下,后面的是账号和加密的密码,密码是BASE64(SHA1(password))加密过后的
-Dzookeeper.DigestAuthenticationProvider.superDigest=bushro:TtxWlRxmb4NPYUXbhYgJZWoOxiY=
重新启动zookeeper./zkServer.sh restart
ACL常用使用场景
- 开发/测试环境分离,开发者无权限操作测试库的节点,只能看
- 生成环境上控制指定ip的服务可以访问相关节点,防止混乱
zk四字命令Four Letter Words
- zk可以通过它自身提供的简写命令来和服务器进行交互
- 需要使用到nc命令,安装:yum install nc
- echo [commond] | nc [ip] [port]
- [stat] 查看zk的状态信息,以及是否mode(集群还是单例模式)
- [ruok]查看当前zkserver是否启动,返回imok
- [dump] 列出未经处理的会话和临时节点
[conf] 查看服务器配置
[cons] 展示连接到服务器的客户端信息
[envi] 环境变量
[mntr] 监控zk健康信息
[wchs] 展示watch的信息
[wchc] 与[wchp]session与watch及path与watch信息
编辑conf下的配置文件,最后一行加上
4lw.commands.whitelist=*