Kafka的认证

2023-10-26

Kafka支持基于SSL和基于SASL的安全认证机制。

基于SSL的认证主要是指Broker和客户端的双路认证。即客户端认证broker的证书,broker也认证客户端的证书。

Kafka还支持通过SASL做客户端认证。SASL是提供认证和数据安全服务的框架。Kafka支持的SASL机制有5种:
1.GSSAPI:也就是 Kerberos 使用的安全接口。
2.PLAIN:是使用简单的 用户名/密码 认证的机制。(不能动态的增减kafka用户,必须重启 Kafka 集群才能令变更生效,因为认证用户信息全部保存在静态文件中)
3.SCRAM:主要用于解决PLAIN机制安全问题的新机制。
4.OAUTHBEARER:是基于 OAuth2 认证框架的新机制。
5.Delegation Token:补充现有SASL机制的轻量级认证机制。



KAFKA认证步骤:

SASL/SCRAM-SHA-256 配置实例

创建用户:

./kafka-configs.sh --bootstrap-server 192.168.1.10:9192 --alter --add-config 'SCRAM-SHA-256=[password=admin],SCRAM-SHA-512=[password=admin]' --entity-type users --entity-name admin

./kafka-configs.sh --bootstrap-server 192.168.1.10:9192 --alter --add-config 'SCRAM-SHA-256=[password=reader],SCRAM-SHA-512=[password=reader]' --entity-type users --entity-name reader

./kafka-configs.sh --bootstrap-server 192.168.1.10:9192 --alter --add-config 'SCRAM-SHA-256=[password=write],SCRAM-SHA-512=[password=write]' --entity-type users --entity-name write


查看创建的用户:

bin/kafka-configs.sh --zookeeper 192.168.1.10:2181 --describe --entity-type users  --entity-name write


创建JAAS文件:(为每个broker都需要创建)

KafkaServer {
    org.apache.kafka.common.security.scram.ScramLoginModule required
    username="admin"
    password="admin";
};
KafkaClient {
    org.apache.kafka.common.security.scram.ScramLoginModule required
    username="admin"
    password="admin";
};

修改server.properties 文件

sasl.enabled.mechanisms=SCRAM-SHA-256
sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256
security.inter.broker.protocol=SASL_PLAINTEXT
listeners=SASL_PLAINTEXT://192.168.1.10:9092


启动kafka:
修改kafka-run-class.sh (大致219行)

if [ -z "$KAFKA_OPTS" ]; then
  KAFKA_OPTS="-Djava.security.auth.login.config=/zb/kafka/kafka_2.12-2.7.2-test1/broker.jaas"
fi

启动:
nohup bin/kafka-server-start.sh config/server.properties &


测试:


发送消息:
创建一个producer.conf配置文件:

security.protocol=SASL_PLAINTEXT
sasl.mechanism=SCRAM-SHA-256
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="writer" password="writer";

启动生产者:

bin/kafka-console-producer.sh --broker-list 192.168.1.10:9192,192.168.1.10:9292,192.168.1.10:9392 --topic kl-test1 --producer.config /zb/kafka/kafka_2.12-2.7.2-test1/producer.conf

消费消息:
创建一个consumer.conf 的脚本

security.protocol=SASL_PLAINTEXT
sasl.mechanism=SCRAM-SHA-256
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="reader" password="reader";

启动消费者:

bin/kafka-console-consumer.sh --bootstrap-server 192.168.1.10:9192,192.168.1.10:9292,192.168.1.10:9392 --topic kl-test1 --from-beginning --consumer.config /zb/kafka/kafka_2.12-2.7.2-test1/consumer.conf 


查看topic,创建管理者认证:
创建一个admin配置文件:

security.protocol=SASL_PLAINTEXT
sasl.mechanism=SCRAM-SHA-256
./bin/kafka-topics.sh --bootstrap-server 192.168.1.10:9192 --command-config /zb/kafka/kafka_2.12-2.7.2-test1/admin_sals.conf --list

动态增减用户:

删除用户

bin/kafka-configs.sh --zookeeper 192.168.1.10:2181 --alter --delete-config 'SCRAM-SHA-256' --entity-type users --entity-name writer
bin/kafka-configs.sh --zookeeper 192.168.1.10:2181 --alter --delete-config 'SCRAM-SHA-512' --entity-type users --entity-name writer

添加新用户 

bin/kafka-configs.sh --bootstrap-server 192.168.1.10:9192 --alter --add-config 'SCRAM-SHA-256=[iterations=8192,password=new_writer]' --entity-type users --entity-name new_writer


 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kafka的认证 的相关文章

  • 在java中轮询Http服务器(重复发送http get请求)

    当对其进行 REST 调用时 我的 Web 服务器会发送一些信息 我想不断轮询该服务器 间隔5秒后重复发送HTTP GET请求 以检查返回的信息是否有任何变化 做到这一点最有效的方法是什么 您能提供一些代码示例吗 请注意 我只想开发客户端代
  • 如何在由子控件组成的 SWT 复合材料上跟踪鼠标?

    我创建了自己的控件 我想跟踪鼠标并添加一个MouseTrackListener 很遗憾MouseEnter and MouseLeave当鼠标移动到我的合成部分 即标签和按钮 上时 也会生成事件 Mouse enter mouse ente
  • Android:文本淡入和淡出

    我已阅读此 stackoverflow 问题和答案 并尝试实现文本淡入和淡出 Android中如何让文字淡入淡出 https stackoverflow com questions 8627211 how to make text fade
  • Android studio - 如何保存先前活动中选择的数据

    这是我的代码片段 这Textview充当按钮并具有Onclicklistner在他们 当cpu1000时Textview单击它会导致cpu g1000其代码如下所示的类 public class Game 1000 extends AppC
  • 在 Java 中如何找出哪个对象打开了文件?

    我需要找出答案哪个对象在我的 Java 应用程序中打开了一个文件 这是为了调试 因此欢迎使用工具或实用程序 如果发现哪个对象太具体了 这class也会很有帮助 这可能很棘手 您可以从使用分析器开始 例如VisualVM http visua
  • 如何检查某个元素是否存在于一组项目中?

    In an ifJava中的语句如何检查一个对象是否存在于一组项目中 例如 在这种情况下 我需要验证水果是苹果 橙子还是香蕉 if fruitname in APPLE ORANGES GRAPES Do something 这是一件非常微
  • Java 中如何将 char 转换为 int? [复制]

    这个问题在这里已经有答案了 我是Java编程新手 我有例如 char x 9 我需要得到撇号中的数字 即数字 9 本身 我尝试执行以下操作 char x 9 int y int x 但没有成功 那么我应该怎么做才能得到撇号中的数字呢 ASC
  • 如何仅从 Firestore 获取最新更新的数据?

    在 Firestore 上发现任何更改时始终获取整个文档 如何只获取最近更新的数据 这是我的数据 我需要在第一次加载时在聊天中按对象顺序 例如 2018 09 17 30 40 msg和sendby 并且如果数据更新则仅获取新的msg和se
  • 如何在 ant 中为 junit 测试设置 file.encoding?

    我还没有完全完成file encoding 和 ant https stackoverflow com questions 1339352 how do i set dfile encoding within ants build xml
  • 从jar中获取资源

    我有包含文件的 jar myJar res endingRule txt myJar wordcalculator merger Marge class 在 Marge java 中我有代码 private static final Str
  • 如何使用 JMagick 转换色彩空间?

    如何使用 JMagick API 转换色彩空间 例如 CMYK gt RGB 和 RGB gt CMYK None
  • 如何在.NET中使用java.util.zip.Deflater解压缩放气流?

    之后我有一个转储java util zip Deflater 可以确认它是有效的 因为 Java 的Inflater打开它很好 并且需要在 NET中打开它 byte content ReadSample sampleName var inp
  • 蓝牙发送和接收文本数据

    我是 Android 开发新手 我想制作一个使用蓝牙发送和接收文本的应用程序 我得到了有关发送文本的所有内容逻辑工作 但是当我尝试在手机中测试它时 我看不到界面 这是Main Activity Code import android sup
  • 不可变的最终变量应该始终是静态的吗? [复制]

    这个问题在这里已经有答案了 在java中 如果一个变量是不可变的并且是final的 那么它应该是一个静态类变量吗 我问这个问题是因为每次类的实例使用它时创建一个新对象似乎很浪费 因为无论如何它总是相同的 Example 每次调用方法时都会创
  • 将 JScrollPane 添加到 JFrame

    我有一个关于向 Java 框架添加组件的问题 我有一个带有两个按钮的 JPanel 和一个添加了 JTable 的 JScrollPane 我想将这两个添加到 JFrame 中 我可以将 JPanel 添加到 JFrame 或将 JScro
  • Hibernate 本机查询 - char(3) 列

    我在 Oracle 中有一个表 其中列 SC CUR CODE 是 CHAR 3 当我做 Query q2 em createNativeQuery select sc cur code sc amount from sector cost
  • java 中的蓝牙 (J2SE)

    我是蓝牙新手 这就是我想做的事情 我想获取连接到我的电脑上的蓝牙的设备信息并将该信息写入文件中 我应该使用哪个 api 以及如何实现 我遇到了 bluecove 但经过几次搜索 我发现 bluecove 不能在 64 位电脑上运行 我现在应
  • Java 正则表达式中的逻辑 AND

    是否可以在 Java Regex 中实现逻辑 AND 如果答案是肯定的 那么如何实现呢 正则表达式中的逻辑 AND 由一系列堆叠的先行断言组成 例如 foo bar glarch 将匹配包含所有三个 foo bar 和 glarch 的任何
  • MiniDFSCluster UnsatisfiedLinkError org.apache.hadoop.io.nativeio.NativeIO$Windows.access0

    做时 new MiniDFSCluster Builder config build 我得到这个异常 java lang UnsatisfiedLinkError org apache hadoop io nativeio NativeIO
  • Java 和/C++ 在多线程方面的差异

    我读过一些提示 多线程实现很大程度上取决于您正在使用的目标操作系统 操作系统最终提供了多线程能力 比如Linux有POSIX标准实现 而windows32有另一种方式 但我想知道编程语言水平的主要不同 C似乎为同步提供了更多选择 例如互斥锁

随机推荐

  • 点击标题滚动到对应的 section, 滚动到对应的section 对应的标题高亮

  • java中注解的学习

    java 注解 从名字上看是注释 解释 但功能却不仅仅是注释那么简单 注解 Annotation 为我们在代码中添加信息提供了一种形式化的方法 是我们可以在稍后 某个时刻方便地使用这些数据 通过 解析注解 来使用这些数据 常见的作用有以下几
  • js中事件处理函数的总结

    1 HTML事件处理 直接添加到HTML结构中 不过这样的不利于保证HTML页面和JS的分离 不推介 demo 2 DOM 0级事件处理函数 把一个函数赋值给事件处理程序属性 js与页面分离的方法 但是不能够进行叠加 也就是对同一个Elem
  • nginx输出php错误日志,【问题解决】Nginx下开启php-fpm 输出php错误日志的设置

    最近在本地搭建的LNMP的开发环境 为了开发的时候不影响前端的正常开发就屏蔽的PHP里面php ini中的一些错误提示 但是这样一来 就影响到了后端开发的一些问题比如不能及时调试开发中的一些问题 nginx与apache不一样 在apach
  • 十八、搜索引擎

    搜索引擎ElasticSearch Lucene
  • 【bug】ImportError: cannot import name ‘_DataLoaderIter‘ from ‘torch.utils.data.dataloader‘

    pytorch版本的问题 架构本身的版本与实际的cuda环境以及想要跑通的代码不兼容 我遇到的问题是将pytorch版本降低 降到torch 1 0版本 对应的cuda环境也比较低 需要去网上对应着查一下cuda版本以及对应的pytorch
  • 基于JavaWeb三层架构的OA管理系统

    本系统是一个类似于培训学校的一个管理系统 系统角色有员工 学生 首页 它的左侧是后台管理系统的功能界面 右侧是前面的通过数据库查询的一个月或者是一年的统计信息 下面柱状图个折线图采用的是echarts架包通过数据库的信息实现的 都可以动态的
  • 全国计算机等级考试题库二级C操作题100套(第84套)

    第84套 函数fun的功能是 从三个形参a b c中找出中间的那个数 作为函数值返 回 例如 当a 3 b 5 c 4时 中数为4 请在程序的下划线处填入正确的内容并把下划线删除 使程序得出正确的结果 注意 源程序存放在考生文件夹下的BLA
  • 软件工程使用软件和软件所能画的图

    迅捷 业务流程图 软件结构图 功能框图 数据字典 序列图 用例图 Visio 业务流程图 软件结构图 功能框图 数据流图 数据字典 序列图 uml 用例图 类图 序列图 活动图 数据流图 Rose 用例图 包图 活动图 序列图 协作图 带有
  • 【测试开发】自动化测试 selenium 篇

    目录 一 什么是自动化测试 二 selenium 1 selenium的工作原理 2 selenium Java的环境搭建 Chrome浏览器 三 selenium中常用的API 1 定位元素 findElement 1 1 css选择语法
  • redis之mq实现发布订阅模式

    示例代码 github 概述 Redis不仅可作为缓存服务器 还可用作消息队列 本示例演示如何使用redis实现发布 订阅消息队列 在Redis中 发布者没有将消息发送给特定订阅者的程序 相反 发布的消息被描述为通道 而不知道 如果有的话
  • 分享Figma一些非常快速、省时、省力的功能和小技巧

    众所周知 越来越多的大工厂正在使用它figma了 那你的figma它是如何使用的 您是否遇到过一些问题或操作不方便的事情 今天 我想和大家分享Figma一些非常快速 省时 省力的功能和小技巧 因为文章属于直译 所以良心哥在编辑时帮你整理知识
  • [系统安全] 五十一.恶意家族分类 (2)基于API序列和深度学习的恶意家族分类实例详解

    您可能之前看到过我写的类似文章 为什么还要重复撰写呢 只是想更好地帮助初学者了解病毒逆向分析和系统安全 更加成体系且不破坏之前的系列 因此 我重新开设了这个专栏 准备系统整理和深入学习系统安全 逆向分析和恶意代码检测 系统安全 系列文章会更
  • 反馈及运放基础了解

    在电子电路中 将输出量 输出电压或输出电流 的一部分或全部通过一定的电路形式作用于输入回路 用来影响其输入量 放电电路的输入电压或输入电流 的措施称为反馈 基本放大电路的输入信号称为净输入量 它不但决定于输入信号 输入量 还与反馈信号 反馈
  • 将linux上的项目传到github上

    在网友的帮助下 终于学会了这一招 1 首先要确定你的linux上有安装了git 2 到你的网页github上新建一个仓库 将其clone到linux上 3 将你的项目放进这个空的仓库 文件夹 3 1 执行命令 git add 4 执行命令
  • 日语动作变形

    动1动词 动2动词 动3动词 基本型 可以作为连体形 行 買 帰 飲 呼 書 食 起 寝 変 準 変 変 来 连用形 行 買 帰 飲 呼 書 食 起 寝 変 準 変 変 来 体 也就是连用形 词尾由 段变为 段加 行
  • 这一年,谢谢自己

    兜兜转转间 这个开局有些艰难的2020就已经过半了 这些日子 你过得还好吗 不管是努力抵抗病痛 还是奋力工作生活 其实一直以来 我们都在路上 摸爬滚打 艰难前行 我们总是在追寻 在求索 为了所爱的人 而默默付出努力 却仍时时觉得对不起他们
  • 基于R语言tidyverse包的数据分析实践

    目录 1 tidyverse包基础 1 0 下载使用tidyverse 1 1 数据清洗 1 1 1 提取数据 1 1 2 数据整理与采样 1 1 3 缺省值处理 1 1 4 重复值处理 1 1 5 异常值处理 1 2 数据预处理 1 2
  • 【bug】ClassCastException 同一个类为什么还会类转换异常?

    错误日志 2021 11 11 20 51 18 304 maomao 3896 nio 8081 exec 2 ERROR c maomao common GlobalExceptionHandler 79 java lang Class
  • Kafka的认证

    Kafka支持基于SSL和基于SASL的安全认证机制 基于SSL的认证主要是指Broker和客户端的双路认证 即客户端认证broker的证书 broker也认证客户端的证书 Kafka还支持通过SASL做客户端认证 SASL是提供认证和数据