Kafka安全认证(Java)

JAAS 读取登录配置文件时的行为 JAAS配置文件加载机制解析 Java身份认证服务(JAAS)通过Configuration类实现多源配置加载:1)按顺序读取security.properties中login.config.url.X指定的URL;2)若启用系统属性(-Djava.security.auth.login.config)则加载指定文件,使用"=="前缀时将跳过其他配置;3)默认查找用户主目录的.java.login.config文件。系统支持${property}变量替换(可通过policy.expand 阅读详情
AI摘要

本文详细介绍了如何配置Apache Kafka的SASL/PLAIN认证,包括在`server.properties`中设置安全协议,创建`kafka_server_jaas.conf`文件以配置用户和密码,启动时指定安全配置,以及客户端的认证设置。此外,还提到了Java程序如何使用SASL/PLAIN进行生产者和消费者的认证,并给出了相关依赖和配置示例。

一、概述

  1. GSSAPI: 使用的Kerberos认证,可以集成目录服务,比如AD。从Kafka0.9版本开始支持
  2.  PLAIN: 使用简单用户名和密码形式。从Kafka0.10版本开始支持
  3. SCRAM: 主要解决PLAIN动态更新问题以及安全机制,从Kafka0.10.2开始支持
  4. OAUTHBEARER: 基于OAuth 2认证框架,从Kafka2.0版本开始支持

二、配置SASL/PLAIN

        

  1. kafka配置文件server.properties配置
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN
authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer
allow.everyone.if.no.acl.found=true
auto.create.topics.enable=true
listeners=SASL_PLAINTEXT://<IP Address>:9092
advertised.listeners=SASL_PLAINTEXT://<IP Address>:9092

      

2. 创建kafka_server_jaas.conf文件

        这个文件是配置Broker服务端的JASS,在Kafka程序目录的config目录中创建kafka_servre_jass.conf

        

KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret"
user_admin="admin-secret";
};
Client {
org.apache.zookeeper.server.auth.DigestLoginModule required
username="admin"
password="admin-secret";
};

        username和password配置成具体的账号和密码

        KafkaServer字段是用来配置broker间通信使用的用户名和密码以及客户端连接时需要的用户名和密码,其中username和password是broker用于初始化连接到其他的broker,kafka用户为broker间的通讯。在一个Kafka集群中,这个文件的内容要一样,集群中每个Borker去连接其他Broker的时候都使用这个文件中定义的username和password来让对方进行认证。

        Client部分是用来设置与Zookeeper的连接的,它还允许broker设置 SASL ACL 到zookeeper 节点,锁定这些节点,只有broker可以修改它。如果Zookeeper与Broker之间不设置认证,那么就可以不配置Client部分。

 3. 启动时指定安全配置

export KAFKA_OPTS="-Djava.security.auth.login.config=/KAFKA_HOME/config/kafka_server_jaas.conf"

或将以上指令写入到启动脚本中bin/kafka-server-start.sh

4.  启动kafka server

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

5. kafka client认证

   (1) 新建kafka_client_jaas.conf文件

     

KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret";
};
Client {
  org.apache.zookeeper.server.auth.DigestLoginModule required
  username="admin"
  password="admin-secret";
};

username和password是真实配置的用户名密码

(2) 使用kafka自带脚本消费消息

$ export KAFKA_OPTS="-

Djava.security.auth.login.config=/KAFKA_HOME/config/kafka_client_jaas.conf"

$ ./bin/kafka-console-consumer.sh --topic test-topic --from-beginning  --

consumer.config=config/consumer.properties --bootstrap-server=localhost:9092

(3)  使用kafka自带脚本生产消息

$ export KAFKA_OPTS="-
Djava.security.auth.login.config=/KAFKA_HOME/config/kafka_client_jaas.conf"
$ ./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic
--producer.config=config/producer.properties

6. Java程序使用

引入依赖

<!-- kafka-clients -->
<dependency>
    <groupId>org.apache.kafka</groupId>
    <artifactId>kafka-clients</artifactId>
    <version>3.0.0</version>
</dependency>

kafka-clients 3.0版本

配置

security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="admin" password="admin-secret";
Properties properties = new Properties();
properties.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, config.getBootstrapServers());
properties.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
properties.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName());
//配置security.protocol
properties.put(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, config.getSecurity().getProtocol());
//配置sasl.mechanism
properties.put(SaslConfigs.SASL_MECHANISM, config.getSasl().getMechanism());
//配置sasl.jaas.config
properties.put(SaslConfigs.SASL_JAAS_CONFIG, config.getSasl().getJaasConfig());

KafkaProducer<String, String> kafkaProducer = new KafkaProducer<>(properties);

感谢:

https://www.cnblogs.com/rexcheny/articles/12884990.html
https://docs.vmware.com/en/VMware-Smart-Assurance/10.1.0/sa-ui-installation-config-guide-10.1.0/GUID-3E473EC3-732A-4963-81BD-13BCCD3AC700.html
Kafka-配置Kerberos安全认证(JDK8、JDK11) 从 Kerberos 服务器上拷贝到目标机器 或 找运维人员要一份。从 Kerberos 服务器上拷贝到目标机器 或 找运维人员要一份。3、Kerberos 配置文件(2、keytab 文件(1、JAAS 配置文件。 阅读详情

相关推荐

深度解析Kafka kerberos认证

Kafka kerberos动态认证及静态认证过程

justchnmm的博客 9113

Java安全之认证与授权

ava安全之认证与授权 Java平台提供的认证与授权服务(Java Authentication and Authorization Service (JAAS)),能够控制代码对敏感或关键资源的访问,例如文件系统,网络服务,系统属性访问等,加强代码的安全性。主要包含认证与授权两部分,认证的目的在于可靠安全地确定当前是谁在执行代码,代码可以是一个应用,applet,bean,servlet;授权的目的在于确定了当前执行代码的用户有什么权限,资源是否可以进行访问。虽然JAAS表面上分为了两大部分,而实际上两

YvesHe的专栏 3547

Kafka与Kerberos安全认证实战:从零搭建到Java客户端集成

本文详细介绍了Kafka与Kerberos安全认证的集成实战,从KDC服务部署到Java客户端配置。通过具体代码示例和常见问题排查方法,帮助开发者实现企业级消息中间件的安全认证,有效防御中间人攻击等安全威胁。

weixin_26876073的博客 305

Kafka配置SASL身份认证及权限实现文档

Kafka配置SASL身份认证及权限实现文档Version:1.0Author:liuhongDate:2017-08-04一、 版本说明本例使用:zookeeper-3.4.10,kafka_2.11-0.11.0.0。zookeeper版本无要求,kafka必须使用0.8以后的版本二、 zookeeper配置SASLzookeeper集群或者单节点配置相同。具体步骤如下:1、zoo.cfg文件

柳宏(Java) 2万+

docker-compose部署kafka、SASL模式(密码校验模式)_system

Zookeeper作为Kafka的协调服务,负责管理集群的状态和配置。这个配置文件中,Zookeeper和Kafka都有详细的配置和环境变量设置,以适应特定的使用场景或安全需求。例如,SASL_PLAINTEXT是用于安全认证的协议,而SimpleAclAuthorizer则是一个简单的访问控制列表作者器,用于权限控制。这是一个Docker Compose文件,用于定义和运行多个Docker容器的应用。需要新建文件:server_jaas.conf,前两个是zk配置,后两个是kafka配置。

2301_82241942的博客 1605

AURIX™ TC3xx 调试口保护 secure debug

AURIX™ TC3xx 调试口保护 secure debug UCB_DBG_ORIG and UCB_DBG_COPY Content 使用Debug Password 保护调试接口设置 项目硬件接口保护方案 hexview Lock using UDE Unlockusing UDE Lock using Lauterbach Unlock using Lauterbach

2301_76563067的博客 6862

kafka sasl java_Kafka SASL 安全认证

java client 中添加 SASL 设置信息:Java client consumer properties配置.png注意 sasl.jaas.config 配置中的分号必不可少。package kafka;import java.time.Duration;import java.util.Arrays;import java.util.Properties;import org.apa...

weixin_32563347的博客 1596

5G中的RedCap

5G中的redcap

大家好,我是码农老gou,一名专注于编程技术的程序员。在这个博客中,我将与大家分享我在工作和学习中的经验、见解以及一些实用的技术干货。 2527

java请求一个不需要认证的kafka_Kafka的安全认证机制SASL/PLAINTEXT

一.背景kafka提供了多种安全认证机制,主要分为SSL和SASL2大类。其中SASL/PLAIN是基于账号密码的认证方式,比较常用。最近做了个kafka的鉴权,发现官网上讲的不是很清楚,网上各种博客倒是很多,但是良莠不齐,巨多坑。经过一天的研究,终于搞定了,特在此记录下。二.环境操作系统:linuxkafka版本:kafka_2.12-0.11.0.1zookeeper版本:zookeeper-...

weixin_42665725的博客 1219

【CubeMX】STM32G474 HRTIM 死区时间与互补PWM实战解析

本文深入解析STM32G474的HRTIM高分辨率定时器在互补PWM生成与死区时间配置中的应用。通过CubeMX工具详细演示时钟配置、单路PWM基础、互补输出与死区时间设置,并结合逆变器等电力电子实战案例,帮助开发者避免直通风险,优化系统性能。

efc12345678的博客 746

Nginx反向代理MinIO私有桶签名失效?一招解决Host头校验问题

本文详细解析了Nginx反向代理MinIO私有桶时出现的签名失效问题,重点解决了Host头校验导致的"SignatureDoesNotMatch"错误。通过精准配置proxy_set_header保持Host头一致性,并提供了二级目录代理和调试指南,帮助开发者高效解决这一常见技术难题。

weixin_29201313的博客 321

centos7 Spring mvc配置kafka教程+两种kafka配置方式+spring xml配置+java代码配置+kafka sasl安全认证(配置账号密码生产消费)

kafka安装,以及开启认证请看上一篇文章! 链接 Spring 版本:4.2.5.RELEASE kafka版本:kafka_2.12-2.2.0 (由于Spring版本问题,无法使用kafka最新版,2.3需要spring 5,经测试2.2.0可以正常使用) 经过几天的配置测试,kafka接入spring有两种方式。 1.完全用java代码接入,优点:方便,灵活,创建监听消费方便自由。可以用注...

发光棒的博客 3055

【C++】开源:cpp-httplib HTTP协议库配置与使用

cpp-httplib HTTP协议库配置与使用

DevFrank的博客 5543

Kafka安全认证实战:Kerberos+Java集成避坑指南(附完整配置脚本)

本文详细介绍了Kafka与Kerberos安全认证的集成实战,包括Kerberos环境搭建、Kafka服务端配置、Java客户端集成及典型问题排查。通过完整的配置脚本和优化建议,帮助开发者在金融、医疗等强合规领域实现安全数据传输,避免常见配置陷阱。

sql99的博客 187

解决anaconda占用C盘空间过多问题

anaconda就算安装在其他盘,默认会把索引、锁定文件、压缩包等都放到系统盘(C盘),我用了两年,占用30GB。 1. 卸载不用的虚拟环境 查看已安装的虚拟环境 conda env list 卸载不用的、过期的虚拟环境 conda remove -n (要卸载的环境的名字) --all 2. 删除索引缓存、锁定文件、未使用过的包和tar包 conda clean -a 清理完之后,删除了15GB,还剩15GB,舒服了 ...

沉迷单车的追风少年 3万+

STM32F407上优化CAN总线通信(500kbps速率,多终端系统)需要从硬件设计、软件配置和实时性能三个方面进行综合优化

STM32F407上优化CAN总线通信(500kbps速率,多终端系统)需要从硬件设计、软件配置和实时性能三个方面进行综合优化

a_zxswer的博客 383

java请求一个不需要认证的kafka_SpringBoot 支持Kafka安全认证 SASL/PLAINTEXT,账号密码认证...

环境操作系统:CentOS 7.3Kafka Version:2.12Zookeeper Version:3.6.1一、Zookeeper集群配置SASLzookeeper所有节点都是对等的,只是各个节点角色可能不相同。以下步骤所有的节点配置相同。1、zoo.cfg文件配置为zookeeper添加SASL支持,在配置文件zoo.cfg添加​​​​authProvider.1=org.apache....

weixin_42572602的博客 1303

6D位姿估计系列(一)

本研究提出FoundationPose,一个统一的基础模型框架,支持基于CAD模型和无模型的6D物体姿态估计与跟踪。通过神经隐式表示实现高效新视图合成,结合大规模合成数据训练和对比学习策略,模型展现出强大的泛化能力。实验表明,该方法在LINEMOD、YCB-Video等多个基准数据集上显著优于现有专门化方法,处理速度达32Hz,且无需目标域微调。该工作为多场景物体姿态估计提供了通用解决方案。

qq625924821的博客 564

Kafka配置Kerberos安全认证及与Java程序集成

本文主要介绍在 Kafka 中如何配置 Kerberos 认证,以及 java 使用 JAAS 来进行 Kerberos 认证连接。

on the way . . . 4769

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

kafka+Kraft模式集群+安全认证_kafka raft 下的安全控制(1)

可以在kafka的config目录下新建一个文件,然后认证信息写好:上面的配置中声明了管理员为admin,密码是eystar8888,并且声明了一个用户名为kafka,密码是kafka1234的用户,客户端连接时使用用户为kafka可以成功进行认证。;配置kafka服务的启动脚本上面设置好sasl认证的配置后,我们需要在kafka启动的服务脚本中,将此配置加入进去。可以直接修改,亦或者拷贝一份命名为(名称自定义即可)kafka02和kafka03同样这样配置好。

2301_76379606的博客 1398

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

kafka开启Kerberos安全认证Java编程生成者与消费组示例

一、相关配置文件 kafka_client_jaas.conf配置项 KafkaClient { com.sun.security.auth.module.Krb5LoginModule required useKeyTab=true storeKey=true keyTab="D:\\kafka-connect\\5.5.0\\kafka-schema-test\\src\\main\\resources\\test.service.keytab" useTic

Tu_maimes 2204

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Kafka安全认证 SASL/PLAINTEXT,账号密码认证

环境 操作系统:CentOS 7.3 Kafka Version:1.1.1 Zookeeper Version:3.4.14 一、Zookeeper集群配置SASL zookeeper所有节点都是对等的,只是各个节点角色可能不相同。以下步骤所有的节点配置相同。 1、zoo.cfg文件配置 为zookeeper添加SASL支持,在配置文件zoo.cfg添加 authProvide...

jast 2万+

Kafka增加安全验证安全认证,SASL认证,并通过spring boot-Java客户端连接配置

这是一个争议比较大的问题,有的人会建议先学编程,而有的人会建议先学计算机基础,其实这都是要学的。第一种是报网络安全专业,现在叫网络空间安全专业,主要专业课程:程序设计、计算机组成原理原理、数据结构、操作系统原理、数据库系统、 计算机网络、人工智能、自然语言处理、社会计算、网络安全法律法规、网络安全、内容安全、数字取证、机器学习,多媒体技术,信息检索、舆情分析等。部分中的属性用户名和密码来启动与其他代理的连接。中的不同客户机可以通过指定不同的用户名作为不同的用户进行连接 和 中的密码。

m0_59598029的博客 3314

06、Kerberos安全认证之配置和访问Kerberos安全认证的Kafka集群学习笔记

06、Kerberos安全认证之配置和访问Kerberos安全认证的Kafka集群学习笔记

每个人都是独一无二的,把握好自己的节奏,跟着自己的心走。 2286
上一篇: Spriing Cloud Config Server工作原理
下一篇: okhttp传输文件类型的参数
思维的深度
博客等级 码龄11年 2万+粉丝 391原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值