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:设置权限

如何登录进去zookeeper zookeeper用户名密码登陆客户端_acl


设置权限

setAcl /bushro world:anyone:crwa

如何登录进去zookeeper zookeeper用户名密码登陆客户端_zookeeper_02


再删除就提示没有权限了

如何登录进去zookeeper zookeeper用户名密码登陆客户端_如何登录进去zookeeper_03

auth授权方式

addauth digest bushro:bushro添加对应的授权认证

setAcl /bushro auth:bushro:bushro:cdrwa设置权限

如何登录进去zookeeper zookeeper用户名密码登陆客户端_如何登录进去zookeeper_04

digest授权方式

密码是加密过后的

如何登录进去zookeeper zookeeper用户名密码登陆客户端_字符串_05


认证

addauth digest bushro:bushro

ip

如何登录进去zookeeper zookeeper用户名密码登陆客户端_字符串_06

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=*