zookeeper-ACL权限相关

164 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第10天,点击查看活动详情

acl权限模式

acl权限模式有3种:

  1. world:授权任何登录zookeeper的人
  2. ip:对客户端指定ip授权
  3. auth:对已添加的认证用户进行授权
  4. digest:使用用户名:密码进行授权

授权方式:

scheme:id:permission

其中scheme表示指定授权的策略 id表示指定授权的对象 permission指定授予的权限

特性

  1. zooKeeper的权限控制是基于每个znode节点进行授权的,所以需要对每个节点进行设置权限
  2. 每个znode可以支持设置多种权限控制方案,也可以授予多个权限
  3. 子节点不会继承父节点的权限,客户端无权访问某节点,但可能可以访问它的子节点

权限列表

对节点授予的权限主要包含5种:增、删、改、查、管理

增:可以创建子节点,acl简写为c 删:可以删除子节点(仅下一级节点) 改:可以设置节点数据 查:可以读取节点数据及显示子节点列表 管理:可以设置节点访问控制列表权限

授权相关命令

  1. getAcl:读取acl权限信息 用法:getAcl path

  2. setAcl:设置ACL权限 用法:setAcl <path> world:anyone:<acl>

  3. addauth:添加认证用户 用法:addauth digest <user>:<password> #添加认证用户 setAcl <path> auth:<user>:<acl>

zookeeper超级管理员

zookeeper的权限管理模式有一种叫做super,该模式提供一个超管可以方便的访问 任何权限的节点。 首先需要添加超管账号,添加方式如下: 第一步:先为超管生成密码的密文,命令:

echo -n 超管账户名:超管密码 | openssl dgst -binary -sha1 | openssl base64

第二步:打开zookeeper目录下的/bin/zkServer.sh服务器脚本文件,找到如下信息:

nohup $JAVA "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" "-
Dzookeeper.root.logger=${ZOO_LOG4J_PROP}"

在这之后加上超管的配置项 第三步:重启zookeeper,输入命令,添加权限用户

addauth digest 超管账户名:超管密码

注意需要输入base64的密码