我要做的是仅对代理经纪人的客户端启用SASL身份验证,而不对
启用SASL身份验证是否可以这样做?如果可以,我该如何实现。
我也关注了各种链接和官方的kafka文档,但并没有获得明确的想法。
任何帮助将不胜感激!
答案 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的实现。