Kafka SASL配置:是否可以仅对客户端启用它

时间:2019-01-30 08:14:23

标签: authentication apache-kafka apache-zookeeper sasl

我要做的是仅对代理经纪人的客户端启用SASL身份验证,而不对

启用SASL身份验证
  • 经纪人经纪人
  • 向Zookeeper经纪人

是否可以这样做?如果可以,我该如何实现。

我也关注了各种链接和官方的kafka文档,但并没有获得明确的想法。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

是的,这是可能的。

这需要一些步骤,我担心我是否可以比有关configuring SASL的Kafka官方文档更清楚。我建议您再看一遍,如果不确定您是否有明确询问,请参阅

无论如何,我会给您一些有关SASL PLAIN的提示(可能是最容易设置的)

  • 在经纪人端,遵循these docs

    • 使用KafkaServer节创建一个JAAS文件:

      KafkaServer {
          org.apache.kafka.common.security.plain.PlainLoginModule required
          username="admin"
          password="admin-secret"
          user_admin="admin-secret"
          user_alice="alice-secret";
      };
      
    • 设置JVM属性java.security.auth.login.config,以便拾取JAAS文件

    • 更新server.properties以包括SASL设置。例如:

      security.protocol=SASL_PLAINTEXT
      sasl.mechanism=PLAIN
      

      我建议一开始不使用SSL,但是请记住,如果最终使用SASL PLAIN,则必须启用SSL,否则所有流量(包括身份验证)都将以明文显示!

  • 在客户端,遵循these docs

    • 更新您的客户端属性以包括:

      sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
        username="alice" password="alice-secret";
      security.protocol=SASL_SSL
      sasl.mechanism=PLAIN
      

很显然,在生产中,您不应依赖于经纪人的JAAS文件中的硬编码用户。 Kafka docs解释了如何改为提供正确提供用户ID的实现。