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

在这里插入图片描述

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

ls /path

ls /test

在这里插入图片描述
5. 客户端登录后,认证用户,可以根据权限进行相关操作
addauth digest 用户名:密码明文

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述
5. 至此超级用户权限添加完成,使用的账号和密码可以根据情况进行调整

5. 参考文档

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/656690.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DolphinScheduler + Amazon EMR Serverless 的集成实践

01 背景 Apache DolphinScheduler 是一个分布式的可视化 DAG 工作流任务调度开源系统,具有简单易用、高可靠、高扩展性、⽀持丰富的使用场景、提供多租户模式等特性。适用于企业级场景,提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方…

【C++】std::variant

上一篇文章讲到了 union,union union存在很多问题,因此C17设计了一个新的variant替代原来的union。 union的问题 无法知道当前使用的类型是什么。而且union无法自动调用底层数据成员的析构函数。 这些使得一般只对一些“基本类型”使用union&#xf…

Redis 安装 redistimeseries.so(时间序列数据类型)教程

配置步骤 1.下载 redistimeseries.so 文件 2.在 redis.conf 中增加配置 loadmodule /home/chenjian/redis-lib/RedisTimeSeries/redistimeseries.so DUPLICATE_POLICY LAST3.重启 Redis 服务 4.连接客户端,测试 RedisTimeSeries 相关命令,下图表明 R…

Java玩转《啊哈算法》排序之快速排序

心无挂碍,无挂碍故,无有恐怖,远离颠倒梦想,究竟涅槃。 地图 引子代码地址快速排序核心代码优劣完整代码演示 课后习题 引子 搭嘎好!本人最近看的《啊哈算法》这本书写的确实不错,生动形象,在保…

安全耐用 一路稳行 极固轮胎3大系列产品重磅上市

临近年关,全国范围内雨雪天气多发,让极端天气环境下的行车安全再次成为热议话题。路面寒冷湿滑,交通事故频发,也让大家开始关注一个话题:如何确保汽车在湿滑路面上的安全系数?或者说,如果遭遇类…

如何让wordpress首页只显示某一篇文章全部内容?在您的主页显示选择

大多数WordPress站点首页默认都是显示最新发布的文章列表,不过有些站点比较特殊,只想显示某一篇文章的全部内容,那么应该怎么设置呢? 其实,WordPress后台 >> 设置 >> 阅读 >> 在“您的主页显示”中…

基于flask的个人博客项目从0到1

项目展示 首页 文章时间线页面 笔记页面 留言页面 关于页面 后台页面-文章管理 后台页面-笔记页面 后台页面-分类 后台管理-新增标签 后台管理-标签页面 后台管理-新增标签 后台管理-关于页面 2.项目详述 该博客开源地址点击跳转,该项目已部署上线,…

《HTML 简易速速上手小册》第8章:HTML 表单高级技术(2024 最新版)

文章目录 8.1 数据收集与处理8.1.1 基础知识8.1.2 案例 1:创建一个注册表单8.1.3 案例 2:创建一个调查问卷表单8.1.4 案例 3:创建一个动态添加输入字段的表单 8.2 定制化表单元素8.2.1 基础知识8.2.2 案例 1:创建一个带有定制选择…

【GAMES101】Lecture 12 阴影 Shadow Mapping

这里是光栅化的最后一部分,讲这个光栅化里面怎么实现这个阴影 实际上阴影就是光源看不到的地方但是是我们能看到的地方,那这个地方就应该有阴影,那具体怎么做呢,这个就叫做Shadow Mapping,分两步做 我们之前说过这个解…

Stable Diffusion系列(四):提示词规则与使用

文章目录 基础规则高级规则插件使用基于相机镜头增强提示词常用提示词总结奇特提示词珍藏 基础规则 所谓提示词,也就是文生图中的文,由连贯的英语单词或句子组成。其最基础的规则是: 不同提示词之间需要用英文逗号分隔,空格和换…

基于大数据的B站数据分析系统的设计与实现

摘要:随着B站(哔哩哔哩网)在国内视频分享平台的崛起,用户规模和数据量不断增加。为了更好地理解和利用这些海量的B站数据,设计并实现了一套基于Python的B站数据分析系统。该系统采用了layui作为前端框架、Flask作为后端…

mfc140.dll找不到了要怎么解决?教你多种修复mfc140.dll的方法

遭遇 mfc140.dll 文件缺失的状况时,首要任务是保持冷静,并深入理解问题所在,随后按照科学的方法来应对这一挑战。本篇文章概述了多种应对策略,从适合新手的基本步骤到针对有技术基础用户的高级方案,各种手段都能有效地…

linux系统查看占用cpu程序

目录 一:top 二: ps 三:perf 四:/proc/stat 五:pidstat 一:top 使用 top 命令:在终端中输入 top 命令,系统会显示当前正在运行的进程和它们的资源占用情况。默认情况下&#…

awk 文本处理工具三剑客

一、什么是awk 1.1 awk 基本概念 awk(语言): 读取一行处理一行 是一个功能强大的编辑工具,逐行读取输入文本,默认以空格或tab键作为分隔符作为分隔,并按模式或者条件执行编辑命令。而awk比较倾向于将一行…

【网络】:网络套接字(UDP)

网络套接字 一.网络字节序二.端口号三.socket1.常见的API2.封装UdpSocket 四.地址转换函数 网络通信的本质就是进程间通信。 一.网络字节序 我们已经知道,内存中的多字节数据相对于内存地址有大端和小端之分, 磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分,网…

UE5.1_常用节点说明(经常忘记怎么用?)(常改)

UE5.1_常用节点说明(经常忘记怎么用?)(常改) 1. Gate——门节点。只有当门是Open状态才会执行Exit后面的代码。 Open开门;Close关门;Toggle开门和关门交替。 2. 关于控制ArmLength即控制相机前…

vite+vue3+ts项目上线docker 配置反向代理API

这次重点的坑是反向代理。 1。项目中配置代理,为了跨域请求数据 项目根目录中新建vite.config.ts文件 在文件中添加配置代理 注意:其中 /api 和target 的地址后面没有 / 2。在项目根目录中新建Httprequest.ts文件,引入axios,并…

Kotlin快速入门系列8

Kotlin的泛型 与Java一样,Kotlin也提供泛型。泛型,即 "参数化类型",将类型参数化,可以用在类,接口,方法上。可以为类型安全提供保证,消除类型强转的烦恼。声明泛型类的格式如下&…

UDP/TCP协议特点

1.前置知识 定义应用层协议 1.确定客户端和服务端要传递哪些信息 2.约定传输格式 网络上传输的一般是二进制数据/字符串 结构化数据转二进制/字符串 称为序列化 反之称之为反序列化 下面就是传输层了 在TCP/IP协议中,我们以 目的端口,目的IP 源端口 源IP 协议号这样一个五…

202413读书笔记|《好好恋爱是件正经事》——希望我们的故事永远崭新得像刚刚开始,永远未完待续

202413读书笔记|《好好恋爱是件正经事》——希望我们的故事永远崭新得像刚刚开始,永远未完待续 明亮的色彩,小红和小绿,哲理又日常治愈的文字,明快的线条,丰富的背景色,星星点点的⭐️斑斓点缀。 是情侣的…