持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第10天,点击查看活动详情
acl权限模式
acl权限模式有3种:
- world:授权任何登录zookeeper的人
- ip:对客户端指定ip授权
- auth:对已添加的认证用户进行授权
- digest:使用用户名:密码进行授权
授权方式:
scheme:id:permission
其中scheme表示指定授权的策略 id表示指定授权的对象 permission指定授予的权限
特性
- zooKeeper的权限控制是基于每个znode节点进行授权的,所以需要对每个节点进行设置权限
- 每个znode可以支持设置多种权限控制方案,也可以授予多个权限
- 子节点不会继承父节点的权限,客户端无权访问某节点,但可能可以访问它的子节点
权限列表
对节点授予的权限主要包含5种:增、删、改、查、管理
增:可以创建子节点,acl简写为c 删:可以删除子节点(仅下一级节点) 改:可以设置节点数据 查:可以读取节点数据及显示子节点列表 管理:可以设置节点访问控制列表权限
授权相关命令
-
getAcl:读取acl权限信息 用法:
getAcl path -
setAcl:设置ACL权限 用法:
setAcl <path> world:anyone:<acl> -
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的密码