ZK鉴权设计以及相关探讨

文章目录

  • 1. zk的鉴权设计
  • 2. zk鉴权应用范围
  • 3. zk鉴权的常用方法
  • 4. 推荐配置
  • 5. 参考文档

鉴权,分别由组成

  • : 表示身份认证,认证相关用户是否存在以及相关的用户名和密码是否一致
  • : 完成身份的后,还需要判断用户是否有相关操作的权限。

因此对于某一个用户来说,通常情况下,需要完成才能够满足一个完整的业务场景,因此通常将鉴权放在一起考量。本文探讨zk的鉴权常用的鉴权方式以及相关鉴权设计方式。


1. zk的鉴权设计

: 身份认证

身份的认证有4种方式:

  • world:默认方式,相当于全世界都能访问
  • auth:代表已经认证通过的用户(cli中可以通过addauth digest user:pwd 来添加当前上下文中的授权用户)
  • digest:即用户名:密码这种方式认证,这也是业务系统中最常用的
  • ip:使用Ip地址认证。

: 操作权限
5种操作权限:
CREATE、READ、WRITE、DELETE、ADMIN 也就是 增、删、改、查、管理权限,这5种权限简写为crwda(即:每个单词的首字符缩写)
注:这5种权限中,delete是指对子节点的删除权限,其它4种权限指对自身节点的操作权限。

2. zk鉴权应用范围

zk的数据模型,呈现树形,类似linux的文件目录系统。在这里插入图片描述

zk的鉴权作用范围是针对节点,子节点没有影响,如针对/kafka设置了鉴权,但是/kafka的子目录(/kafka/brokers)无影响,除非针对子目录单独设置了鉴权。

3. zk鉴权的常用方法

给目录创建权限的操作如下

  1. 增加一个认证用户
    addauth digest 用户名:密码明文
# 当前会话,进行身份认证
addauth digest user1:password1
  1. 设置权限

setAcl /path auth:用户名:密码明文:权限

setAcl /test auth:user1:password1:cdrwa
  1. 查看Acl设置

getAcl /path

getAcl /test

ZK鉴权设计以及相关探讨_第1张图片

  1. 客户端登录后,不认证用户,无法查看

ls /path

ls /test

ZK鉴权设计以及相关探讨_第2张图片
5. 客户端登录后,认证用户,可以根据权限进行相关操作
addauth digest 用户名:密码明文

# 当前会话,进行身份认证
addauth digest user1:password1

ZK鉴权设计以及相关探讨_第3张图片

  1. 客户端重新登录后,查看子目录不影响
    addauth digest 用户名:密码明文
ls /test
ls /test/test1

ZK鉴权设计以及相关探讨_第4张图片

4. 推荐配置

为了方便管理,业务方会根据需要进行鉴权设置,但是由于一些监控指标等需要,因此通常需要设置一个管理员权限,能够便于运维和监控的需求。相关的设置方法如下。

  1. 设置需要配置的用户名和密码,本文以super:super123为例
# 设置zk的classpath,相关路径根据实际情况调整
export ZK_CLASSPATH=/usr/local/apache-zookeeper-3.6.4-bin/conf/:/usr/local/apache-zookeeper-3.6.4-bin/lib/*

# 获取用户名和加密密码
java -cp $ZK_CLASSPATH org.apache.zookeeper.server.auth.DigestAuthenticationProvider super:super123
# 获取
super:super123->super:UdxDQl4f9v5oITwcAsO9bmWgHSI=

在这里插入图片描述
2. 配置超级用户和密码

vim zoo.cfg

# 配置
DigestAuthenticationProvider.superDigest=super:UdxDQl4f9v5oITwcAsO9bmWgHSI=
  1. 重启zk集群
./zkServer.sh restart
  1. 登录zk集群并认证super用户
# 当前会话进行认证
addauth digest super:super123

# 查看目录,验证是否有权限
ls /test

ZK鉴权设计以及相关探讨_第5张图片
5. 至此超级用户权限添加完成,使用的账号和密码可以根据情况进行调整

5. 参考文档

  • Zookeeper - Super User Authentication and Authorization
  • ZooKeeper Administrator’s Guide

你可能感兴趣的:(Zookeeper,分布式,中间件,zookeeper,架构,中间件)