kerberos+kafka(2.13)认证(单节点ubuntu)

一:搭建kerberos。

1. 运行安装命令

apt-get install krb5-admin-server krb5-kdc krb5-user krb5-config

2. 检查服务是否启动。

systemctl status krb5-admin-server
systemctl status krb5-kdc
systemctl start krb5-admin-server
systemctl startkrb5-kdc

3. 修改配置

vi /etc/krb5.conf
在这里插入图片描述
查看服务器名称
在这里插入图片描述
在这里插入图片描述

default_realm = CECGW.CN
# The following krb5.conf variables are only for MIT Kerberos.kdc_timesync = 1ccache_type = 4forwardable = trueproxiable = true[realms]CECGW.CN = {kdc = ubuntuadmin_server = ubuntu}

4. 创建数据库和principal,使用kdb5_util创建数据库,存放principal相关的信息。

创建数据库

cd /etc/krb5kdc
kdb5_util create -r CECGW.CN -s
输入俩次数据库密码

创建用户principal

kadmin.local
add_principal oneandonly/kerberos@CECGW.CN
输入俩次密码 oneandonly/kerberos@CECGW.CN

导出文件

xst -k oneandonly.keytab -norandkey oneandonly/kerberos@CECGW.CN

验证登录,使用密钥登录.

root@ubuntu:/opt/kafka/kafka_2.13-3.6.1# kinit -kt oneandonly.keytab oneandonly/kerberos
root@ubuntu:/opt/kafka/kafka_2.13-3.6.1# klist

在这里插入图片描述
退出登录

root@ubuntu:/opt/kafka/kafka_2.13-3.6.1# kdestroy
root@ubuntu:/opt/kafka/kafka_2.13-3.6.1# klist

在这里插入图片描述

二:配置kafka认证

1. 注册用户principal,导出密钥文件。

kadmin.local
kadmin.local:  add_principal -randkey kafka-server/ubuntu@CECGW.CN
kadmin.local:  add_principal -randkey kafka-client@CECGW.CN
kadmin.local:  xst -k /root/kafka-server.keytab kafka-server/ubuntu@CECGW.CN
kadmin.local:  xst -k /root/kafka-client.keytab kafka-client@CECGW.CN

2. Kerberos 相关配置

2.1.拷贝 krb5.conf 及 keytab 文件到所有安装 Kafka 的机器,把文件都放到 Kafka 的 config/kerberos 目录下(kerberos 目录需新建)。

在这里插入图片描述

3. kafka服务端配置。

3.1 复制 config/server.properties(复制动作能帮助我们在 认证/非认证 模式自由切换)重命名为 config/server-sasl.properties,增加如下配置:

listeners=SASL_PLAINTEXT://ubuntu:9092
advertised.listeners=SASL_PLAINTEXT://ubuntu:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=GSSAPI
sasl.enabled.mechanisms=GSSAPI
sasl.kerberos.service.name=kafka-server

3.2新建 kafka-server-jaas.conf 文件,该文件也放到 Kafka 的 config/kerberos 目录下:

KafkaServer {com.sun.security.auth.module.Krb5LoginModule requireduseKeyTab=truekeyTab="/opt/kafka/kafka_2.13-3.6.1/config/kerberos/kafka-server.keytab"storeKey=trueuseTicketCache=falseprincipal="kafka-server/ubuntu@CECGW.CN";
};

3.3 修改启动命令。

复制 bin/kafka-server-start.sh 脚本重命名为 bin/kafka-server-start-sasl.sh,倒数第二行增加如下配置

export KAFKA_OPTS="-Dzookeeper.sasl.client=false -Dzookeeper.sasl.client.username=zk-server -Djava.security.krb5.conf=/opt/kafka/kafka_2.13-3.6.1/config/kerberos/krb5.conf -Djava.security.auth.login.config=/opt/kafka/kafka_2.13-3.6.1/config/kerberos/kafka-server-jaas.conf"

在这里插入图片描述

4.Kafka 客户端配置

.新建 kafka-client-jaas.conf 文件,该文件也放到 Kafka 的 config/kerberos 目录下。

4.1 新建 client.properties 文件,该文件也放到 Kafka 的 config/kerberos 目录下。

security.protocol=SASL_PLAINTEXT
sasl.mechanism=GSSAPI
sasl.kerberos.service.name=kafka-server

4.2 新建 kafka-client-jaas.conf 文件,该文件也放到 Kafka 的 config/kerberos 目录下

KafkaClient {com.sun.security.auth.module.Krb5LoginModule requireduseKeyTab=truekeyTab="/opt/kafka/kafka_2.13-3.6.1/config/kerberos/kafka-client.keytab"storeKey=trueuseTicketCache=falseprincipal="kafka-client@CECGW.CN";
};

4.3 复制 bin/kafka-topics.sh、kafka-console-producer.sh、bin/kafka-console-consumer.sh 脚本,分别重命名为 bin/kafka-topics-sasl.sh、kafka-console-producer-sasl.sh、bin/kafka-console-consumer-sasl.sh,倒数第二行增加如下配置

export KAFKA_OPTS="-Djava.security.krb5.conf=/opt/kafka/kafka_2.13-3.6.1/config/kerberos/krb5.conf -Djava.security.auth.login.config=/opt/kafka/kafka_2.13-3.6.1/config/kerberos/kafka-client-jaas.conf"

三:启动测试

1. 启动zk

cd /opt/kafka/kafka_2.13-3.6.1
nohup bin/zookeeper-server-start.sh config/zookeeper.properties > /dev/null 2>&1 &

2. 运行 bin/kafka-server-start-sasl.s 启动 Kafka 集群:

./bin/kafka-server-start-sasl.sh -daemon config/server-sasl.properties

3. 运行 bin/kafka-topics-sasl.sh 查看 topic 列表信息:

./bin/kafka-topics-sasl.sh --list --bootstrap-server ubuntu:9092 --command-config config/kerberos/client.pr
operties

在这里插入图片描述

4. 创建topic

bin/kafka-topics-sasl.sh --create --bootstrap-server ubuntu:9092 --replication-factor 1 --partitions 1 --topic your_topic_name --command-config config/kerberos/client.properties

5. 运行 kafka-console-producer-sasl.sh 生产消息:

./bin/kafka-console-producer-sasl.sh --broker-list ubuntu:9092 --topic your_topic_name --producer.config config/kerberos/client.properties

在这里插入图片描述

6. 运行 bin/kafka-console-consumer-sasl.sh 消费消息:

./bin/kafka-console-consumer-sasl.sh --bootstrap-server ubuntu:9092 --topic your_topic_name --from-beginning --consumer.config config/kerberos/client.properties

在这里插入图片描述

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

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

相关文章

【大数据安全】大数据安全的挑战与对策基础设施安全

目录 一、大数据安全的挑战与对策 (一)数据加密技术 (二)大数据安全与隐私 (三)大数据安全保障体系 (四)华为大数据安全解决方案 二、基础设施安全 (一&#xff0…

鸿蒙开发-UI-组件-气泡/菜单

鸿蒙开发-UI-组件 鸿蒙开发-UI-组件2 鸿蒙开发-UI-组件3 文章目录 前言 一、气泡提示 1.文本提示气泡 2.带按钮的提示气泡 3.自定义气泡 二、菜单 1.创建默认样式的菜单 2.创建自定义样式的菜单 3.创建支持右键或长按的菜单 总结 前言 上文主要学习了鸿蒙开发UI组件&…

目标检测任务的调研与概述

目标检测任务的调研与概述 0 FQA1 目标检测任务基本知识:1.1 什么是目标检测?1.2 目标检测的损失函数都有那些?1.2.1 类别损失:1.2.2 位置损失: 1.3 目标检测的评价指标都有那些?1.4 目标检测有那些常见的数…

微信小程序制作需要什么软件?

微信小程序自2017年推出以来,因其便捷性和巨大的用户基础,已成为企业和开发者争相布局的新领域。对于想要进入微信小程序这个市场的商家或企业来说,选择合适的制作软件是首要任务。那么微信小程序制作需要什么软件呢? 对于有开发…

【项目日记(六)】第二层: 中心缓存的具体实现(下)

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:项目日记-高并发内存池⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你做项目   🔝🔝 开发环境: Visual Studio 2022 项目日…

pycharm删除的文件怎么恢复找回

目录 1、点击被删除文件的所属上级目录右键; 2、弹出的右键菜单点击Local History,Show History 3、打开本地历史界面后,点击误删除文件; 4、在右侧区域,选中文件,点击右键; 5、在右键菜单…

【ArcGIS微课1000例】0099:土地利用变化分析

本实验讲述在ArcGIS软件中基于两期土地利用数据,做土地利用变化分析。 文章目录 一、实验描述二、实验过程三、注意事项一、实验描述 对城市土地利用情况进行分析时,需要考虑不同时期土地利用图层在空间上的差异性,如农用地转建筑用地的空间变化。而该变化过程表现为各时期…

【Android Studio 启动出错】

Android Studio版本:2022.3.1 出错前操作: 昨晚开着三四个项目,然后太晚了直接关机睡觉,第二天起来开机,启动Android Studio,就出现了这个问题: Internal error. Please refer to https://co…

【Tomcat与网络4】Tomcat的连接器设计

目录 1 如何设计一个灵活可靠的连接器 2 主要组件介绍 在上一篇,我们介绍了Tomcat提供服务的整体结构,本文我们一起来看一下Tomcat的连接器的设计。 在前面我们提到Tomcat主要完成两个功能: 处理 Socket 连接,负责网络字节流与…

开源博客项目Blog .NET Core源码学习(8:EasyCaching使用浅析)

开源博客项目Blog使用EasyCaching模块实现缓存功能,主要是在App.Framwork项目中引用了多类包,包括内存缓存(EasyCaching.InMemory)、Redis缓存(EasyCaching.CSRedis),同时支持多种序列化方式&am…

Python采集学习笔记-读取excel数据

表格格式 方法一:使用xlrd import xlrd 1.读取Excel文件 workbook xlrd.open_workbook(plc.xlsx) 2.读取第一个表 sheet workbook.sheet_by_index(0) 3.获取表格总行数 total_rows sheet.nrows 4.创建列表,存储表格一行中每一列信息 plc_info [] for row in range(1…

中国的茶文化:历史、传统与生活

中国的茶文化:历史、传统与生活 一、引言 茶,这一神奇而古老的饮品,与中国的历史、文化和生活方式紧密相连。中国的茶文化,源远流长,博大精深,是中华文明的重要组成部分。它不仅是一种饮料,更是…