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

news2024/9/24 23:28:46

一:搭建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 = 1
        ccache_type = 4
        forwardable = true
        proxiable = true
 [realms]
          CECGW.CN = {
               kdc = ubuntu
               admin_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 required
   useKeyTab=true
   keyTab="/opt/kafka/kafka_2.13-3.6.1/config/kerberos/kafka-server.keytab"
   storeKey=true
   useTicketCache=false
   principal="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 required
   useKeyTab=true
   keyTab="/opt/kafka/kafka_2.13-3.6.1/config/kerberos/kafka-client.keytab"
   storeKey=true
   useTicketCache=false
   principal="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.coloradmin.cn/o/1420583.html

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

相关文章

网络安全知识和华为防火墙

网络安全 网络空间安全 ---Cyberspace 2003年美国提出的网络空间概念 ---一个由信息基础设施组成的互相依赖的网络。 我国官方文件定义:网络空间为继海、陆、空、天以外的第五大人类互动领域。 通信保密阶段 --- 计算机安全阶段 --- 信息系统安全 --- 网络空间安…

校园教学气象站是什么

TH-XQ3在当今社会,气象科学的重要性日益凸显。它不仅关系到农业、交通、航空等多个领域的安全,更对人类的生活产生深远影响。因此,许多学校纷纷开设气象学相关课程,帮助学生了解气象知识,培养他们的科学素养。而在这其…

【数据结构:顺序表】

文章目录 线性表顺序表1.1 顺序表结构的定义1.2 初始化顺序表1.3 检查顺序表空间1.4 打印1.5 尾插1.6 头插1.7 尾删1.8 头删1.9 查找1.10 指定位置插入1.11 删除指定位置数据1.12 销毁顺序表 数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一…

termux 玩法(一)

termux基础 termux基础玩法推荐国光写的手册:Termux 高级终端安装使用配置教程 | 国光 (sqlsec.com) termux安装 个人使用F-Droid安装的termux:Termux | F-Droid - Free and Open Source Android App Repository 基础知识 这些基础知识简单了解一下…

HDFS Federation前世今生

一 背景 熟悉大数据的人应该都知道,HDFS 是一个分布式文件系统,它是基于谷歌的GFS实现的开源系统,设计目的就是提供一个高度容错性和高吞吐量的海量数据存储解决方案。在经典的HDFS架构中有2个NameNode和多个DataNode,如下 从上面…

【C/C++ 02】希尔排序

希尔排序虽然是直接插入排序的升级版本,和插入排序有着相同的特性,即原始数组有序度越高则算法的时间复杂度越低(预排序机制),但是是不稳定排序算法。 为了降低算法的时间复杂度,所以我们需要在排序之前尽…

3D效果图加树进去太卡,渲染太慢怎么办?

周末的时候,有个朋友私信来问:3dmax模型加树进去打开时特别的卡,是怎么回事。 不知道有没有朋友遇上这么个情况。 3dmax加树建议就用代理,这样相比于直接加而言,会流畅许多。 在3D效果图中,“树代理”是…

计网Lesson11 - 虚拟机网络环境及socket概述

文章目录 虚拟机的简述socket概述 虚拟机的简述 放张图在这,根本没明白是啥对啥,以后学了Linux再来吧 😦 socket概述 s o c k e t socket socket 是一种用于应用层的用户态与应用层以下的内核态交互的工具,本意为“插座”。 也就是…

AI新工具(20240130) Code Llama 70B-开源代码生成模型;海螺问问

Code Llama 70B-开源代码生成模型 Code Llama 70B是一个大型语言模型,通过对自然语言指令进行微调,可以生成有用且安全的答案。它提供了三个版本,分别是基础代码模型、专门针对Python的版本,以及针对理解自然语言指令进行微调的版…

电气自动化行业,全面数字化工作流程

电气自动化行业数字化转型所需流程软件,与大家分享如下: D-Hub企业数字化协同平台、SuperHarness数字线束软件、SuperPanel母排设计软件、D-Hub生产管理系统,全面的数字化工作流程,智能降本增效! D-Hub D-Hub是一款…

怎么制作出圈的虚拟数字人城市宣传短片?

如今,中国城市面临一个从To B(企业客户)、To G(政府客户)到To C(一般客户)的转变。其中,城市宣传片作为与C端沟通的最佳途径,一个“吸睛”的城市短片,可以有效…

STM32学习笔记(四) —— 位段别名区的使用

STM32F103RCT6有两个位段区 (SRAM 最低1M空间和片内外设存储区最低1M空间), 这两个区域都有各自的别名区,在别名区中每个字会映射到位段区的一个位,所以在别名区修改一个字相当于修改位段区中对应的一个位 映射公式( 别名区中的字与位段区中的…

软硬兼施:亚信安慧AntDB创造更多可能性

亚信安慧AntDB是一种极具适配能力的数据库系统,它不仅在软件方面拥有出色的适应性,还能与国产硬件紧密配合,实现高效稳定的运行。无论是在上游还是下游领域,亚信安慧AntDB都展现出了卓越的适配程度。 在软件方面,亚信安…

使用ffmpeg madiamtx制作一个rtsp源

有很多人在跑rtsp解码的demo的时候, 苦于找不到一个可以拉流的源, 这里说一个简单的方法. 使用mediamtx, 加ffmpeg加mp4文件方式, 模拟一个rtsp的源. 基本架构就是这样. 在PC上, 这里说的PC可以是远程的服务器, 也可以是你的开发用的windows, 都行. 把mediamtx, 在pc上跑起来 …

如何使用Python+Flask搭建本地Web站点并结合内网穿透公网访问?

文章目录 前言1. 安装部署Flask并制作SayHello问答界面2. 安装Cpolar内网穿透3. 配置Flask的问答界面公网访问地址4. 公网远程访问Flask的问答界面 前言 Flask是一个Python编写的Web微框架,让我们可以使用Python语言快速实现一个网站或Web服务,本期教程…

【数论】【分类讨论】【C++算法】1611使整数变为 0 的最少操作次数

作者推荐 【动态规划】【字符串】【行程码】1531. 压缩字符串 涉及知识点 数论 数学 分类讨论 LeetCoce1611. 使整数变为 0 的最少操作次数 给你一个整数 n,你需要重复执行多次下述操作将其转换为 0 : 翻转 n 的二进制表示中最右侧位(第…

多线程c++

目录 1.join和detach区别 2.lock_guard和unique_lock 3.原子操作 4.条件变量condition_variable 5.future 和 promise 1.join和detach区别 ①不使用join和detach #include <iostream> #include <thread> #include <windows.h>using namespace std;v…

Tensorflow2.0笔记 - tensor的padding和tile

本笔记记录tensor的填充和tile操作&#xff0c;对应tf.pad和tf.tile import tensorflow as tf import numpy as nptf.__version__#pad做填充 # tf.pad( tensor,paddings, modeCONSTANT,nameNone) #1维tensor填充 tensor tf.random.uniform([5], maxval10, dtypetf.int32) pri…

知识点积累系列(四)Kubernetes篇【持续更新】

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 知识点积累 系列文章的第四篇&#xff0c;记录日常学习中遇到的 Kubernetes 相关的知识点 1.Kubernetes琐碎知识点 1.1.为什么要有annotations annotation中除了能够记录一些额外信息&#xff0c;还可以解决k…

3d模型上的材质怎么删除---模大狮模型网

在大多数3D软件中&#xff0c;可以通过以下步骤来删除3D模型上的材质&#xff1a; 选择要删除材质的模型&#xff1a;首先&#xff0c;从场景中选择包含目标材质的模型。可以使用选择工具或按名称查找模型。 进入编辑模式&#xff1a;将模型切换到编辑模式。这通常需要选择相应…