Kafka 在安全配置上主要有两个维度:数据传输是否加密(即是否启用 SSL/TLS)以及是否进行身份认证(即是否使用 SASL)。这两个维度组合起来,共有四种基本的安全协议配置,具体如下:
| 安全协议 | 数据加密 | 身份认证(SASL) |
|------------------|----------|------------------|
| **PLAINTEXT** | 否 | 否 |
| **SSL** | 是 | 否 |
| **SASL_PLAINTEXT** | 否 | 是 |
| **SASL_SSL** | 是 | 是 |
各种组合说明
-
PLAINTEXT
- 特点:数据以明文方式传输,没有任何加密和认证机制。
- 适用场景:适合开发、测试或内部网络中对安全性要求不高的场景。
-
SSL
- 特点:数据传输经过 SSL/TLS 加密,但不进行 SASL 身份认证。
- 适用场景:适用于需要保护数据传输内容不被窃听,但无需基于用户名密码等认证的场景。
-
SASL_PLAINTEXT
- 特点:启用 SASL 身份认证(可选不同机制如 PLAIN、SCRAM、Kerberos 等),但传输过程不加密。
- 风险提示:认证数据(例如用户名和密码)以明文形式传输,建议在安全的内部网络中使用,生产环境中通常需要额外的加密保护。
-
SASL_SSL
- 特点:同时启用 SSL/TLS 加密和 SASL 身份认证。
- 适用场景:适用于生产环境,是最常用且安全性最高的配置,因为它既保护了数据传输,又确保只有授权用户能够访问 Kafka 集群。
额外说明
-
SASL 机制的选择:在启用 SASL 认证时,还可以选择不同的机制(例如 PLAIN、SCRAM、GSSAPI/Kerberos、OAUTHBEARER 等)。这些机制在同一传输层模式下可能有不同的安全特点,但它们都是在 SASL_PLAINTEXT 或 SASL_SSL 的框架下使用,不会改变四种基本组合的数量。
-
最佳实践:生产环境推荐使用 SASL_SSL 模式,以确保既有传输加密又有身份认证,从而提供双重安全保障。
通过这四种组合,你可以根据实际安全需求选择最合适的 Kafka 配置。