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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式培训机构四个月实训课程笔记(完整版)-Linux ARM平台编程第六天-Linux文件系统(物联技术666)

链接:https://pan.baidu.com/s/1VUc8cGI7bTtXuGepZZY3Ng?pwd1688 提取码:1688 上午:文件系统介绍 下午:文件系统的制作 教学内容: 在linux中文件分为二种: 根文件和普通文件; Linux以树状…

2024河南省公务员报名确认缴费流程

1、抢考点!及时的报名确认以及缴费! 2024年1月31日9∶00至2月40日17∶00前进行上传照片、选择考区和网上缴费。需要提醒各位考生的是,各个城市考点容量有限,需要尽早进行确认缴费选考点。每年都有因为报名确认较晚,未能…

云流量回溯在网络管理中的关键应用

云流量回溯是一种在云计算环境下的网络流量分析技术,它能够追踪和还原网络中的流量,为网络管理和安全监控提供了强大的支持。在本文中,我们将探讨云流量回溯的原理,并探讨其在实际网络管理中的关键应用。 1. 云流量回溯概述 云流量…

Docker数据卷挂载(以容器化Mysql为例)

数据卷 数据卷是一个虚拟目录,是容器内目录与****之间映射的桥梁 在执行docker run命令时,使用**-v 本地目录:容器目录**可以完成本地目录挂载 eg.Mysql容器的数据挂载 1.在根目录root下创建目录mysql及三个子目录: cd ~ pwd m…

嵌入式学习第十一天

1.数组和指针的关系: 1.一维数组和指针的关系: int a[5] {1, 2, 3, 4, 5}; int *p NULL; p &a[0]; p a; 数组的数组名a是指向数组第一个元素的一个指针常量 a &a[0] a 的类型可以理解为 int * 有两种情况除…

常见の算法链表问题

时间复杂度 1.链表逆序 package class04;import java.util.ArrayList; import java.util.List;public class Code01_ReverseList {public static class Node {public int value;public Node next;public Node(int data) {value data;}}public static class DoubleNode {publi…

React16源码: React中commitAllHostEffects内部的commitDeletion的源码实现

commitDeletion 1 )概述 在 react commit 阶段的 commitRoot 第二个while循环中调用了 commitAllHostEffects,这个函数不仅仅处理了新增节点,更新节点最后一个操作,就是删除节点,就需要调用 commitDeletion&#xff0…

行业应用 | Sophon AutoCV推动AI应用从模型生产到高效落地

随着技术市场和应用方向的逐渐成熟,人工智能与各行各业的结合和落地逐渐进入了深水区。 虽然由于行业规模化和应用普及度的限制,人工智能在“传统”行业的落地不如消费互联网行业,但是借助人工智能为“传统”行业的发展注入新能量一直是相关…

大文件传输之以太网UDP传输延迟解决方案

在数字化浪潮席卷全球的今天,数据已成为企业最宝贵的资产之一。随着企业规模的扩大和业务的全球化,大文件传输的需求日益增长,它不仅关系到企业内部数据的高效管理,也是与外部合作伙伴进行有效沟通的关键。然而,大文件…

STM32——创建HAL库工程

第一步 新建工程文件夹 所有文件夹存放的内容: 第二步 拷贝/新建工程相关文件 1、Drivers(创建如下文件夹,除readme.txt) 文件夹存放的内容: 2、Middlewares和output暂时不需要创建(目前用不到&#x…

幻兽帕鲁一键开私服?超简单小白教程一看就会!

如何自建幻兽帕鲁服务器?基于阿里云服务器搭建幻兽帕鲁palworld服务器教程来了,一看就懂系列。本文是利用OOS中幻兽帕鲁扩展程序来一键部署幻兽帕鲁服务器,阿里云服务器网aliyunfuwuqi.com分享官方基于阿里云服务器快速创建幻兽帕鲁服务器教程…

ARM常用汇编指令

文章目录 前言一、处理器内部数据传输指令MOV: 将数据从一个寄存器复制到另一个寄存器。MRS: 将特殊寄存器(CPSR,SPSR)中的数据传给通用寄存器。MSR: 将通用寄存器中的数据传给特殊寄存器(CPSR,SPSR)。 二、存储器访问指令LDR:用于从内存中加…

Shell脚本——函数的使用

一、函数 1.函数的作用 定义较为复杂的但是需要重复使用的内容,以便再次使用可以直接调用函数节约时间,提高效率 在编写脚本时,有些脚本可以反复使用,可以调用函数来解决,语句块定义成函数约等于别名 函数定义&…

51-17 视频理解串讲— MViT 论文精读

继TimeSformer模型之后,咱们再介绍两篇来自Facebook AI的论文,即Multiscale Vision Transformers以及改进版MViTv2: Improved Multiscale Vision Transformers for Classification and Detection。 由于本司大模型组最近组织阅读的论文较多,…

【iOS ARKit】同时开启前后摄像头BlendShapes

在上一节中已经了解了 iOS ARkit 进行BlendShapes的基本操作,这一小节继续实践同时开启前后摄像头进行人脸捕捉和世界追踪。 iOS设备配备了前后两个摄像头,在运行AR 应用时,需要选择使用哪个摄像头作为图像输人。最常见的AR 体验使用设备后置…

Java实现数字化社区网格管理系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、开发背景四、系统展示五、核心源码5.1 查询企事业单位5.2 查询流动人口5.3 查询精准扶贫5.4 查询案件5.5 查询人口 六、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的数字化社区网格管理系统&#xf…

Istio-gateway

一. gateway 在 Kubernetes 环境中,Kubernetes Ingress用于配置需要在集群外部公开的服务。但是在 Istio 服务网格中,更好的方法是使用新的配置模型,即 Istio Gateway,Gateway 允许将 Istio 流量管理的功能应用于进入集群的流量&…

MongoDB日期存储与查询、@Query、嵌套字段查询实战总结

缘由 MongoDB数据库如下: 如上截图,使用MongoDB客户端工具DataGrip,在filter过滤框输入{ profiles.alias: 逆天子, profiles.channel: },即可实现昵称和渠道多个嵌套字段过滤查询。 现有业务需求:用Java代码来查询…

【代码随想录15】110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和

目录 110. 平衡二叉树题目描述参考代码 257. 二叉树的所有路径题目描述参考代码 404.左叶子之和题目描述参考代码 110. 平衡二叉树 题目描述 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树…

微信小程序(十四)分包和分包预加载

注释很详细,直接上代码 上一篇 新增内容: 1.分包的配置 2.分包预加载的写法 先说说为什么需要分包: 小程序追求小而快,主包的大小控制是小程序上线的硬性要求,分包有利于小程序优化加载速度 分包的注意事项&#xff1a…