Kafka配置SASL认证

Kafka加密

Kafka认证方式

img

在本博客中我们使用SASL/PLAIN的方式来进行Kafka加密

环境准备

  • Kafka集群环境 请参考之前的Kafka集群搭建
    • kafka-broker1
    • kafka-broker2

集群配置SASL/PLAIN认证

用户校验

修改server.properties 让其支持Kafka的认证(每一个broker节点都需要修改这些配置)

修改server.properties配置
# 备份server.properties
cp /opt/module/kafka/config/server.properties /opt/module/kafka/config/server.properties.bak
vim /opt/module/kafka/config/server.properties#添加如下内容
########## Kafka SASL认证
###注意:如果外网也要支持SASL advertised也要同步修改
listeners=SASL_PLAINTEXT://:9092
advertised.listeners=SASL_PLAINTEXT://kafka-broker1:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN
添加SASL认证配置
vim /opt/module/kafka/config/kafka_server_jaas.conf
# 增加如下配置
KafkaServer {org.apache.kafka.common.security.plain.PlainLoginModule requiredusername="admin"password="123456"user_admin="123456"user_user2="123456";};#分发文件到不同的机器节点xsync kafka_server_jaas.conf

解释:

此配置定义了两个用户(admin和user2)。KafkaServer中的username、password配置的用户和密码,是用来broker和broker连接认证。在本例中,admin是代理broker间通信的用户。user_userName配置为连接到broker的所有用户定义密码,broker使用这些验证所有客户端连接,包括来自其他broker的连接。

请注意,username是服务端连接的账号,password为密码,其中下面的user_admin就是为了集群间通信时候使用的

将JAAS配置文件位置作为JVM参数传递给每个Kafka broker

修改kafka-run-class.sh

在这里插入图片描述

#修改kafka-run-class.sh
KAFKA_OPTS="-Djava.security.auth.login.config=/opt/module/kafka/config/kafka_server_jaas.conf"#分发到其他机器节点
cd/opt/module/kafka/bin
xsync kafka-run-class.sh
启动集群服务
./cluster.sh start
验证权限

在这里插入图片描述

集群权限已经启动 所以这个命令是没有任何效果的

为了满足我们的权限列表 我们需要把用户user2作为我们的配置添加进去

  • 执行以下脚本
vim /root/user2.conf
# 输入如下内容
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="user2" password="123456";

其中的用户名必须是admin 123456 或者是 user2 123456

这个时候,我们已经可以看到 权限是认证通过的
在这里插入图片描述

测试消费端和生产端(添加配置 验证成功)

在这里插入图片描述

权限校验

admin是超级用户
user2是普通用户
我们现在编写权限校验的目的是
1:user2可以自己新建/修改/删除topic
2:只用于user2操作某一个topic 其他topic不允许操作

修改server.properties配置
# 修改server.properties 增加如下配置
authorizer.class.name=kafka.security.authorizer.AclAuthorizer
super.users=User:admin

使用权限配置并且超级用户是admin,这个用户和我们在上面配置的列表中的admin用户相互映射

每个机器都进行配置

重启所有的节点,这个时候已经开启了权限

# 配置用户认证文件信息
vim /root/admin.conf
# 输入如下内容
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="123456";
修改kafka-acls.sh

此脚本主要用户给指定的用户配置权限

参数/选项描述
--add增加权限
--remove删除权限
--allow-host允许操作的主机
--deny-host拒绝的主机
--allow-principal允许操作的用户(通常为User:ClientID)
--deny-principal拒绝的用户(通常为User:ClientID)
--bootstrap-serverKafka集群地址,用于连接到Kafka集群
--command-config认证文件信息,如JAAS配置文件的路径
--group可以消费特定topic的消费者组
--list查询所有权限
--operation指定操作权限,可能的值包括:Describe, DescribeConfigs, Alter, Read, Delete, Create, All, Write, AlterConfigs
--topic指定要操作的topic
基本命令
  • 查询topic的所有权限

    kafka-acls.sh --bootstrap-server kafka-broker1:9092 --list --command-config /root/admin.conf
    在这里插入图片描述

在这里插入图片描述

  • 删除所有权限

    kafka-acls.sh --bootstrap-server kafka-broker1:9092 --topic user2 --remove --command-config /root/admin.conf

    在这里插入图片描述

  • 当前用户没有权限,现在给user用户赋值权限

    kafka-acls.sh --bootstrap-server kafka-broker1:9092 --topic user2 --add --allow-principal User:user2 --operation all --command-config /root/admin.conf

    在这里插入图片描述

  • 回收权限

    kafka-acls.sh --bootstrap-server kafka-broker1:9092 --topic user2 --remove --allow-principal User:user2 --operation all --command-config /root/admin.conf
    在这里插入图片描述

  • 给生产者添加Write权限

    kafka-acls.sh --bootstrap-server kafka-broker1:9092 --topic user2 --add --allow-principal User:user2 --operation Write --command-config /root/admin.conf
    在这里插入图片描述

  • 给消费者添加Read权限

    kafka-acls.sh --bootstrap-server kafka-broker1:9092 --topic user2 --add --allow-principal User:user2 --operation Read --group user2 --command-config /root/admin.conf
    在这里插入图片描述

  • 测试生产者

    kafka-console-producer.sh --bootstrap-server kafka-broker1:9092 --topic user2 --producer.config /root/user2.conf

    在这里插入图片描述

  • 测试消费者

    kafka-console-consumer.sh --bootstrap-server kafka-broker1:9092 --topic user2 --from-beginning --consumer.config /root/user2.conf --group user2
    在这里插入图片描述

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

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

相关文章

python的简单爬取

需要的第三方模块 requests winr打开命令行输入cmd 简单爬取的基本格式(爬取百度logo为例) import requests url"http://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png" resprequests.get(url)#回应 #保存到本地 with open(&…

中国物流信息软件系统(WMS等)行业概览,2027年将达到235.1亿元

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》人俱乐部 完整版文件和更多学习资料,请球友到知识星球【智能仓储物流技术研习社】自行下载 这份文件是《2023年中国物流信息软件系统行…

【Python】下载与安装

目录 一、 下载安装Python 1. 配置环境变量 2. 检查是否配置成功 一、 下载安装Python 在我上传的资源可以免费下载!!! https://download.csdn.net/download/m0_67830223/89536665?spm1001.2014.3001.5501https://download.csdn.net/dow…

浅谈后置处理器之JSON提取器

浅谈后置处理器之JSON提取器 JMeter 的 JSON 提取器(JSON Extractor)是一个强大的后置处理器,它允许用户从HTTP响应、数据库查询或其他类型的响应中提取JSON数据,并将这些数据存储为变量,以便在后续的请求中重用。这对…

【Redis】哨兵(sentinel)

文章目录 一、哨兵是什么?二、 哨兵sentinel文件参数三、 模仿主机redis宕机四、哨兵运行流程和选举原理SDOWN主观下线ODOWN客观下线 五、 使用建议 以下是本篇文章正文内容 一、哨兵是什么? 哨兵巡查监控后台master主机是否故障,如果故障了…

nx上darknet的使用-目标检测-自定义训练与制作预训练模型

目录 1 训练yolov4-tiny 1.1 文件准备 1.1.1 Annotations 1.1.2 JPEGImages 1.1.3 labels 1.1.4 trained_models 1.1.5 classes.name 1.1.6 create_labels_txt.py 1.1.7 custom_training.data 1.1.8 get_labels.py 1.1.9 get_train_val.py 1.1.10 train…

python制作甘特图的基本知识(附Demo)

目录 前言1. matplotlib2. plotly 前言 甘特图是一种常见的项目管理工具,用于表示项目任务的时间进度 直观地看到项目的各个任务在时间上的分布和进度 常用的绘制甘特图的工具是 matplotlib 和 plotly 主要以Demo的形式展示 1. matplotlib 功能强大的绘图库&a…

内网对抗-基石框架篇单域架构域内应用控制成员组成用户策略信息收集环境搭建

知识点: 1、基石框架篇-单域架构-权限控制-用户和网络 2、基石框架篇-单域架构-环境搭建-准备和加入 3、基石框架篇-单域架构-信息收集-手工和工具1、工作组(局域网) 将不同的计算机按照功能分别列入不同的工作组。想要访问某个部门的资源,只要在“网络…

Electron运行报错:Error Cannot find module ‘node_moduleselectroncli.js‘

Electron运行报错:Error: Cannot find module ‘node_modules\electron\cli.js’ 顾名思义,命令行执行Electron .时候,会优先从项目目录查找对应依赖,如果是报错显示是找不到项目目录下的依赖,我们可以从安装在全局的…

DAMA学习笔记(五)-数据存储和操作

1.引言 数据存储与操作包括对存储数据的设计、实施和支持,最大化实现数据资源的价值,贯穿于数据创建/获取到处置的整个生命周期。 数据存储与操作包含两个子活动(图6-1)。 图6-1 语境关系图:数据存储与操作 (1) 数据库…

记录vite项目中Cornerstone的兼容问题(持续更新)

🔎 在vite项目中打包提示错误 ESM integration proposal for Wasm" is not supported currently. ⛳️ 问题描述 Error: Could not load /home/xxx/xxx/node_modules/icr/polyseg-wasm/dist/ICRPolySeg.wasm (imported by node_modules/icr/polyseg-wasm/di…

【代码随想录】【算法训练营】【第66天】 [卡码95]城市间货物运输II [卡码96]城市间货物运输III

前言 思路及算法思维,指路 代码随想录。 题目来自 卡码网。 day 66,周五,ding ding~ [卡码95] 城市间货物运输II 题目描述 卡码95 城市间货物运输II 解题思路 前提: 思路: 重点: 代码实现 C语言 …

数据结构(Java):队列Queue集合力扣面试OJ题

1、队列 1.1 队列的概念 队列是一个特殊的线性表,只允许在一端(队尾)进行插入数据操作,在另一端(对头)进行删除数据。队列具有先进先出FIFO(First In First Out)的特性。 入队:数据只能从队尾…

有奖竞猜!斗牛士军团与法兰西骑士的终极之战,谁将笑傲欧洲之巅?

痛快看球,畅玩游戏,AGON爱攻带你进入酣畅淋漓的足球世界! 7月15日,绿茵赛场硝烟再起,两支身披荣光的王者之师,一路过关斩将,最终会师决赛。一场万众瞩目的巅峰对决即将拉开帷幕,究竟…

LabVIEW前面板占满整个屏幕(转)

希望在运行一个LabVIEW程序时,它的前面板能够占据整个屏幕,且不显示Windows的任务栏或其他任何的LabVIEW菜单选项。怎样才能实现这一功能? 您可以通过手动配置或编程的方式实现该功能。 手动配置VI属性 您可以通过以下操作,将…

导入项目,JAVA文件是咖啡杯图标

问题 从图中可以看到,JAVA文件是咖啡杯图标 原因 项目没有识别为MAVEN项目 解决办法 进入pom.xml文件,右键点击Add as Maven Project即可

Spring MVC入门3

看完这篇博客你能学到什么 理解JSON的使用理解注解PathVariable理解解注解RequestPart理解cookie和Session的基本概念理解cookie和Session的区别 如果想真正掌握,还需要自己勤加练习。 正文 JSON JSON概念 JSON:JavaScript Object Notation 【JavaS…

【YOLOv8】 用YOLOv8实现数字式工业仪表智能读数(一)

上一篇圆形表盘指针式仪表的项目受到很多人的关注,咱们一鼓作气,把数字式工业仪表的智能读数也研究一下。本篇主要讲如何用YOLOV8实现数字式工业仪表的自动读数,并将读数结果进行输出,若需要完整数据集和源代码可以私信。 目录 &…

gin源码分析

一、高性能 使用sync.pool解决频繁创建的context对象,在百万并发的场景下能大大提供访问性能和减少GC // ServeHTTP conforms to the http.Handler interface. // 每次的http请求都会从sync.pool中获取context,用完之后归还到pool中 func (engine *Engin…

c语言位操作符相关题目之交换两个数的值

文章目录 一、题目二、方法11,思路2,代码实现 三、方法21,思路2,代码实现 四、方法31,思路2,代码实现 总结 提示:以下是本篇文章正文内容,下面案例可供参考 一、题目 实现两个变量的…