如何使Kafka普通认证更安全?

时间:2018-01-16 10:39:41

标签: security authentication configuration ldap apache-kafka

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

与此问题类似:

Can Kafka be provided with custom LoginModule to support LDAP?

我有点自己的PlainLoginModule使用LDAP来验证客户端提供的用户名/密码。

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

如果我使用SSL,我仍然可以使用LDAP服务器进行身份验证吗? kafka配置将如何变化。目前的conf:

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

2 个答案:

答案 0 :(得分:3)

如何使其更安全,您有两种选择:

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

答案 1 :(得分:1)

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