【发布时间】:2019-06-23 11:04:05
【问题描述】:
我想要做的是只为 client to broker 通信而不是
启用 SASL 身份验证- 经纪人对经纪人
- Zookeeper 的经纪人
有可能吗?如果是,我该如何实现。
我也关注了各种链接和官方 kafka 文档,但没有运气清楚地了解它。
任何帮助将不胜感激!
【问题讨论】:
标签: authentication apache-kafka apache-zookeeper sasl
我想要做的是只为 client to broker 通信而不是
启用 SASL 身份验证有可能吗?如果是,我该如何实现。
我也关注了各种链接和官方 kafka 文档,但没有运气清楚地了解它。
任何帮助将不胜感激!
【问题讨论】:
标签: authentication apache-kafka apache-zookeeper sasl
是的,这是可能的。
这需要几个步骤,恐怕我不能比 Kafka 官方文档更清楚地了解 configuring SASL。我建议您再看一遍,如果有部分您不确定,请明确询问。
无论如何,我会给你一些关于 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 解释了如何正确地提供用户标识。
【讨论】:
java.security.auth.login.config。您能否确保它已正确设置并指向 JAAS 文件?
KafkaServer 配置也是用于设置代理间SASL 通信(还要注意管理员用户,这仅适用于代理间 SASL), OP 不想将 SASL 用于代理间,仅用于客户端代理