如何使 Kafka 纯身份验证更安全



我对Kafka身份验证的不同协议和机制感到困惑。

类似于这里的这个问题:

是否可以为 Kafka 提供自定义登录模块以支持 LDAP?

我已经制作了自己的PlainLogin模块,它使用LDAP来验证客户端提供的用户名/密码。

有什么方法可以让它更安全吗?发送用于身份验证的纯文本密码似乎并不安全。如果可能的话,我也不希望在客户端jaas文件中使用明文密码。

如果我使用 SSL,我还能使用 LDAP 服务器进行身份验证吗?卡夫卡配置将如何变化。当前会议:

listeners=SASL_PLAINTEXT://:9092
advertised.listeners = SASL_PLAINTEXT://kafka:9092
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN

您有两种选择来使其更安全:

  • 使用SASL_SSL侦听器将 SASL 身份验证包装到 SSL 加密中。您仍然可以通过自定义模块使用您的 LDAP。
  • 使用更安全的 SASL 机制之一。PLAIN机制将通过不安全的网络发送密码。您可以改用受支持的 SCRAM 机制之一,该机制不会通过网络发送密码,而是使用更复杂的握手。Kafka 支持 SCRAM-SHA-256 和 SCRAM-SHA-512。但是,SCRAM机制不适用于LDAP-它们将凭据(而不是直接密码(存储在Zookeeper中。当然,SCRAM机制也可以与SSL结合使用。

是的,您可以使用SASL_SSL侦听器。这将使用 SASL 对使用 SSL 发送的数据进行身份验证,然后对其进行加密。如果您想要更安全的身份验证,您应该考虑使用 GSSAPI SASL 机制。LDAP 和 Kerberos 集成是一种常见的做法,然后您没有公开的凭据。

最新更新