Kafka 的认证(Authentication)用于验证 客户端 / Broker / 组件身份是否合法,是 Kafka 安全体系(Security)的第一层,通常与 授权(Authorization / ACL) 配合使用。

Kafka 当前支持 4 大类认证机制,基于 SASL + SSL/TLS 架构组合实现。


一、Kafka 安全架构整体模型

Kafka 安全由三层组成:

Client
   │
   ▼
[ Authentication ]  ← 认证:你是谁
        │
        ▼
[ Encryption ]      ← 加密:通信是否安全
        │
        ▼
[ Authorization ]   ← 权限:你能做什么

对应技术:

安全层Kafka 技术
认证SASL / SSL
加密SSL/TLS
授权ACL

二、Kafka 支持的认证方式总览

Kafka 支持以下认证协议:

类型认证方式是否推荐典型场景
SSLSSL 双向认证⭐⭐⭐⭐高安全生产
SASLPLAIN⭐⭐内网简单认证
SASLSCRAM-SHA⭐⭐⭐⭐⭐主流生产推荐
SASLGSSAPI(Kerberos)⭐⭐⭐大企业 AD
SASLOAUTHBEARER⭐⭐⭐⭐云原生 / IAM

三、SSL 认证(TLS 双向认证)

1️⃣ 原理

基于证书认证:

Client ←→ Broker
   双向 TLS 握手

双方验证:

  • CA 签发证书

  • 公钥/私钥匹配


2️⃣ 特点

✅ 强安全
✅ 无密码传输
✅ 自动加密通信

❌ 证书管理复杂


3️⃣ 工作流程

1. Client 提供证书
2. Broker 验证 CA
3. Broker 提供证书
4. Client 验证
5. 建立 TLS 通道

4️⃣ 配置示例

server.properties

listeners=SSL://:9093

ssl.keystore.location=/kafka/server.keystore.jks
ssl.keystore.password=123456

ssl.truststore.location=/kafka/server.truststore.jks
ssl.truststore.password=123456

ssl.client.auth=required

5️⃣ 适用场景

✔ 金融系统
✔ 跨公网通信
✔ 强合规环境


四、SASL 认证体系

SASL = Simple Authentication and Security Layer

Kafka 实际最常用认证框架。

结构:

SASL
 ├── PLAIN
 ├── SCRAM
 ├── GSSAPI
 └── OAUTHBEARER

五、SASL/PLAIN

1️⃣ 原理

用户名 + 密码认证:

username + password

2️⃣ 配置方式

Broker

listeners=SASL_PLAINTEXT://:9092

sasl.enabled.mechanisms=PLAIN

JAAS:

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

3️⃣ 特点

✅ 简单
✅ 易部署

❌ 明文密码(必须配 SSL)


⚠️ 生产建议

不要单独使用:

SASL_PLAINTEXT ❌
SASL_SSL       ✅

六、SASL/SCRAM(⭐⭐⭐⭐⭐ 推荐)

当前 Kafka 最主流认证方式


1️⃣ SCRAM 是什么

SCRAM =

Salted Challenge Response Authentication Mechanism

特点:

  • 不传输密码

  • 哈希挑战认证

  • 防重放攻击

支持:

SCRAM-SHA-256
SCRAM-SHA-512(推荐)

2️⃣ 认证流程(简化)

Client → username
Broker → salt + challenge
Client → hash(password)
Broker → verify

密码永远不会直接发送。


3️⃣ 创建用户

kafka-configs.sh \
 --bootstrap-server localhost:9092 \
 --alter \
 --add-config 'SCRAM-SHA-512=[password=123456]' \
 --entity-type users \
 --entity-name appuser

4️⃣ Broker 配置

listeners=SASL_SSL://:9093

sasl.enabled.mechanisms=SCRAM-SHA-512
sasl.mechanism.inter.broker.protocol=SCRAM-SHA-512

5️⃣ 客户端配置

security.protocol=SASL_SSL
sasl.mechanism=SCRAM-SHA-512

sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
 username="appuser" \
 password="123456";

6️⃣ 优势

✅ 密码不落网
✅ 支持动态用户
✅ 安全性高
✅ 运维成本低

👉 Kafka 官方生产首选


七、SASL/GSSAPI(Kerberos)

企业级认证方案。


特点

  • 基于 Kerberos Ticket

  • 与 AD 集成

  • 单点登录(SSO)


工作流程

Client → KDC → Ticket
Client → Kafka (带 Ticket)
Kafka 验证

优点

✅ 无密码
✅ 集中身份管理


缺点

❌ 部署复杂
❌ 维护成本高


适合

  • 银行

  • 政企

  • Hadoop 生态


八、SASL/OAUTHBEARER(云原生)

现代 Kafka(3.x+)重点方向。


原理

使用 OAuth2 Token:

JWT Token → Kafka

支持:

  • Keycloak

  • Okta

  • AWS IAM

  • Azure AD


优势

✅ 与 IAM 集成
✅ 短期 Token
✅ 零信任架构


使用场景

  • Kubernetes

  • 云 Kafka

  • 微服务平台


九、认证方式安全性对比

方式安全性运维难度推荐指数
SSL⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
SASL/PLAIN⭐⭐
SASL/SCRAM⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
Kerberos⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
OAuth⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐

十、Kafka Listener 与认证关系(核心)

Kafka 认证绑定在 Listener 上。

示例:

listeners=
 PLAINTEXT://:9092,
 SASL_SSL://:9093,
 SSL://:9094

不同端口 → 不同认证方式。


十一、生产最佳实践(2026)

⭐ 推荐架构

Client
   │
SASL_SSL (SCRAM)
   │
Kafka Broker
   │
ACL 授权

推荐组合

项目推荐
认证SCRAM-SHA-512
加密TLS
协议SASL_SSL
授权ACL

十二、常见错误(90% 人踩坑)

❌ 1. inter.broker 未配置

sasl.mechanism.inter.broker.protocol

必须设置。


❌ 2. 忘记设置 listener 映射

listener.security.protocol.map

❌ 3. Controller 未认证(KRaft)

KRaft 需要:

CONTROLLER listener 也必须配置 SASL

十三、一句话选型指南

环境推荐
本地测试PLAINTEXT
内网SASL_SSL + SCRAM
企业 ADKerberos
云原生OAuth
高安全SSL + SCRAM

如果你愿意,我可以继续给你 Kafka 4.x(KRaft 模式)认证的专家级实战部分,包括:

✅ KRaft 三角色认证拓扑(Broker / Controller / Client)
✅ SASL_SSL + SCRAM 完整生产配置模板
✅ 多 Listener 安全隔离架构
✅ ACL + Principal 设计规范
✅ 认证故障排查流程(90%问题定位图)

直接告诉我 👍。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐