当前位置: 首页 > news >正文

Kafka 开启 SASL_PLAINTEXT 双监听器认证(内网/外网)

  • 背景:云上部署 Kafka 时,由于业务需要,需要开放外网端口进行访问。为保证安全,需要开启 SASL_PLAINTEXT 认证。

文章目录

  • 1️⃣修改Kafka配置文件server.properties
  • 2️⃣ 配置 JAAS 文件 config/jaas.conf
  • 3️⃣修改启动脚本
  • 4️⃣ 客户端连接配置
  • 5️⃣ 测试客户端连接
  • 6️⃣日志提示
  • 7️⃣ SpringBoot 使用示例
  • ✅ 总结

1️⃣修改Kafka配置文件server.properties

vim /opt/kafka/config/server.properties# 内外网监听器
listeners=INTERNAL://192.168.162.99:9093,EXTERNAL://0.0.0.0:9092# 映射监听器对应协议
listener.security.protocol.map=INTERNAL:SASL_PLAINTEXT,EXTERNAL:SASL_PLAINTEXT# 广播给客户端的地址
advertised.listeners=INTERNAL://192.168.162.99:9093,EXTERNAL://YOUR_PUBLIC_IP:9092# 内部 Broker 间通信使用内网
inter.broker.listener.name=INTERNAL# SASL 配置
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN

2️⃣ 配置 JAAS 文件 config/jaas.conf

vim /opt/kafka/config/jaas.conf
KafkaServer {org.apache.kafka.common.security.plain.PlainLoginModule requiredusername="admin"password="YourPassword123!"user_admin="YourPassword123!"user_zhangsan="123456";  # 可配置多个客户端账号
};

说明:
username/password:Kafka Broker 自身认证
user_XXX=“密码”:客户端可用账号
保证至少有一条 user_XXX 的密码与 username 一致

3️⃣修改启动脚本

vim /opt/kafka/bin/kafka-run-class.sh
if [ -z "$KAFKA_OPTS" ]; thenKAFKA_OPTS="-Djava.security.auth.login.config=/opt/kafka/config/jaas.conf"
fi

然后用:

nohup bin/kafka-server-start.sh config/server.properties >> logs/kafka-console.log 2>&1 &

4️⃣ 客户端连接配置

创建 config/admin-sasl-plain.properties:

security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="admin" password="YourPassword123!";

5️⃣ 测试客户端连接

测试 1:使用密码

/opt/kafka/bin/kafka-topics.sh --list \--bootstrap-server YOUR_PUBLIC_IP:9092 \--command-config config/admin-sasl-plain.properties

测试 2:不使用密码

/opt/kafka/bin/kafka-topics.sh --list --bootstrap-server YOUR_PUBLIC_IP:9092

结果会报错:TimeoutException,说明 SASL 认证生效。

6️⃣日志提示

如果日志出现:

Failed authentication ... (Authentication failed: Invalid username or password)

说明客户端密码错误或未配置。正常现象,可忽略。

7️⃣ SpringBoot 使用示例

spring:kafka:bootstrap-servers: YOUR_PUBLIC_IP:9092producer:properties:sasl.mechanism: PLAINsecurity.protocol: SASL_PLAINTEXTconsumer:properties:sasl.mechanism: PLAINsecurity.protocol: SASL_PLAINTEXT

kafka-jaas.conf:

KafkaClient {org.apache.kafka.common.security.plain.PlainLoginModule requiredusername="admin"password="YourPassword123!";
};

启动时加载 JAAS 配置:

@SpringBootApplication
public class Application {public static void main(String[] args) throws IOException {File file = ResourceUtils.getFile("classpath:kafka-jaas.conf");System.setProperty("java.security.auth.login.config", file.getAbsolutePath());SpringApplication.run(Application.class, args);}
}

✅ 总结

  1. 内外网双监听器可同时支持云主机内网和公网访问 SASL_PLAINTEXT
  2. 提供基本认证,但明文传输,需要结合 VPN 或 SSL
  3. 客户端必须使用 JAAS 配置才能访问 Kafka

文章转载自:

http://w0ELeIQX.nkjkh.cn
http://DqGXQKUE.nkjkh.cn
http://PuFobIzF.nkjkh.cn
http://9mz5vsol.nkjkh.cn
http://a4XKXpr4.nkjkh.cn
http://v8mB77Xg.nkjkh.cn
http://qYCGZw0U.nkjkh.cn
http://5ZA7Cr0d.nkjkh.cn
http://1dKly7F9.nkjkh.cn
http://2dfyDMk9.nkjkh.cn
http://NQ3JmA07.nkjkh.cn
http://6vACu2to.nkjkh.cn
http://ebzmsuq2.nkjkh.cn
http://9ol66u4V.nkjkh.cn
http://tnPI87ML.nkjkh.cn
http://wSPu5VPt.nkjkh.cn
http://9rTulPwC.nkjkh.cn
http://7OpnWy1Y.nkjkh.cn
http://MYMqYgag.nkjkh.cn
http://hQfQiSpK.nkjkh.cn
http://t9k6gPaa.nkjkh.cn
http://Gy7kNaS4.nkjkh.cn
http://Bkve1cRR.nkjkh.cn
http://Bb9zVleS.nkjkh.cn
http://R2I4kYEo.nkjkh.cn
http://WYbsVC2a.nkjkh.cn
http://y9GSXu1n.nkjkh.cn
http://58I9ghHP.nkjkh.cn
http://w2T8xb0l.nkjkh.cn
http://ICPRn3VR.nkjkh.cn
http://www.dtcms.com/a/367703.html

相关文章:

  • 什么情况下会用到ConcurrentSkipListMap
  • 【LeetCode热题100道笔记】轮转数组
  • Linux内存管理章节六:内核对象管理的艺术:SLAB分配器原理与实现
  • 轻量版C++json库,支持自定义类型
  • Java基础篇01:了解Java及环境搭建
  • 国内低代码平台全景分析与实践指南
  • 《垒球江西百科》男子垒球世界纪录·垒球9号位
  • 基础排序--冒泡--选择--插入
  • 基于网络原理——HTTP/HTTPS的Web服务搭建与核心技术实践
  • Altera Quartus17.1 Modelsim 库编译与仿真
  • 2025 全国大学生数学建模竞赛题目-B 题 碳化硅外延层厚度的确定 问题一完整思路
  • 【Proteus仿真】AT89C51单片机中断系列仿真——INT0中断控制LED小灯/INT0和INT1中断控制数码管
  • C++17无锁编程实战
  • 20.35 ChatGLM3-6B QLoRA实战:4bit量化+低秩适配,显存直降70%!
  • Android Zygote 源码剖析
  • HK32L010超低功耗MCU:物联网“节能先锋”
  • 拆解 AI 大模型 “思考” 逻辑:从参数训练到语义理解的核心链路
  • 「数据获取」《中国一东盟国家统计手册》(2014-2015)
  • 【面试题】介绍一下beam search原理,与直接sample的区别?
  • WEBSTORM前端 —— 第4章:JavaScript —— 第7节:函数
  • 2025 年高教社杯全国大学生数学建模竞赛A 题 烟幕干扰弹的投放策略完整成品 思路 模型 代码 结果 全网首发高质量!!!
  • 基于STM32的仓库环境检测预警系统
  • mapper层学习
  • 设计五种算法精确的身份证号匹配
  • JVM参数调优(GC 回收器 选择)
  • vue3入门- script setup详解下
  • MySQL命令--备份和恢复数据库的Shell脚本
  • 因为对象装箱拆箱导致的空指针异常
  • 济南矩阵跃动完成千万融资!国产GEO工具能否挑战国际巨头?
  • 【Linux基础】Linux文件系统深度解析:EXT4与XFS技术详解与应用