当前位置: 首页 > 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://www.xdnf.cn/news/1458793.html

相关文章:

  • 如何减少文档冗余和重复劳动
  • vite_react 插件 find_code 最终版本
  • MVCC是如何工作的?
  • bash自带的切片操作
  • 解锁“桐果云”的全链路能力矩阵,技术人必看的企业级数据应用方案
  • 阿里云轻量应用服务器部署WordPress与配置SSL 证书
  • 英飞凌ASIL-D级无刷电机驱动芯片TLE9189守护汽车安全
  • 第三方网站测试:WEB安全测试中DOM型XSS漏洞的检测
  • [Windows] PDF工具箱 PDF24 Creator 11.28.0
  • 为什么ApiFox的分页查询的返回Vo的数据没有全部展示? 只展示了返回有数据的?没有数据的为什么不展示?
  • N个代码片段之封装继承与多态
  • Docker(①安装)
  • 视频小浮窗Pip的实现
  • 【RNN-LSTM-GRU】第四篇 GRU门控循环单元:LSTM的高效替代者与实战指南
  • 力扣14:最长公共前缀
  • 【系统架构设计(14)】项目管理下:软件质量与配置管理:构建可靠软件的基础保障
  • 出海马来西亚,九识智能携手ALS共同启动首个自动驾驶物流车公开道路试运行
  • 详细讲解pyspark中dsl格式进行大数据开发中的的所有编程情况
  • PCB中的CAF深度剖析与对策研究
  • 【109】基于51单片机自动感应迎宾门【Proteus仿真+Keil程序+报告+原理图】
  • 【数学建模学习笔记】机器学习分类:KNN分类
  • Full cycle of a machine learning project|机器学习项目的完整周期
  • 9.4C++——继承
  • MySQL命令--备份和恢复数据库的Shell脚本
  • C++工程实战入门笔记11-三种初始化成员变量的方式
  • TCP协议的三次握手与四次挥手深度解析
  • 从头开始学习AI:第二篇 - 线性回归的数学原理与实现
  • 基础crud项目(前端部分+总结)
  • Flink反压问题
  • 算法 --- 分治(归并)