kafka 安全认证、数据传输加密、security

285 阅读2分钟

Kafka 在安全配置上主要有两个维度:数据传输是否加密(即是否启用 SSL/TLS)以及是否进行身份认证(即是否使用 SASL)。这两个维度组合起来,共有四种基本的安全协议配置,具体如下:

| 安全协议 | 数据加密 | 身份认证(SASL) |

|------------------|----------|------------------|

| **PLAINTEXT**          | 否 | 否 |

| **SSL**                       | 是 | 否 |

| **SASL_PLAINTEXT** | 否 | 是 |

| **SASL_SSL**              | 是 | 是 |

各种组合说明

  1. PLAINTEXT

    • 特点:数据以明文方式传输,没有任何加密和认证机制。
    • 适用场景:适合开发、测试或内部网络中对安全性要求不高的场景。
  2. SSL

    • 特点:数据传输经过 SSL/TLS 加密,但不进行 SASL 身份认证。
    • 适用场景:适用于需要保护数据传输内容不被窃听,但无需基于用户名密码等认证的场景。
  3. SASL_PLAINTEXT

    • 特点:启用 SASL 身份认证(可选不同机制如 PLAIN、SCRAM、Kerberos 等),但传输过程不加密。
    • 风险提示:认证数据(例如用户名和密码)以明文形式传输,建议在安全的内部网络中使用,生产环境中通常需要额外的加密保护。
  4. SASL_SSL

    • 特点:同时启用 SSL/TLS 加密和 SASL 身份认证。
    • 适用场景:适用于生产环境,是最常用且安全性最高的配置,因为它既保护了数据传输,又确保只有授权用户能够访问 Kafka 集群。

额外说明

  • SASL 机制的选择:在启用 SASL 认证时,还可以选择不同的机制(例如 PLAIN、SCRAM、GSSAPI/Kerberos、OAUTHBEARER 等)。这些机制在同一传输层模式下可能有不同的安全特点,但它们都是在 SASL_PLAINTEXT 或 SASL_SSL 的框架下使用,不会改变四种基本组合的数量。

  • 最佳实践:生产环境推荐使用 SASL_SSL 模式,以确保既有传输加密又有身份认证,从而提供双重安全保障。

通过这四种组合,你可以根据实际安全需求选择最合适的 Kafka 配置。