我正在运行一个分布式kafka代理,其中使用sasl/ssl设置代理间的通信。为此,我修改了这里给出的jaas配置。完成的文件如下所示:
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret"
user_admin="admin-secret"
user_alice="alice-secret"
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN;
org.apache.kafka.common.security.scram.ScramLoginModule required;
};
Client {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret";
};
我注意到“kafkaserver”部分有2个管理员用户。我也学到了我需要两者的艰难方法,但为什么呢?我有种感觉,几个月前我读过(忘了)原因,但似乎再也找不到了。
1条答案
按热度按时间ztigrdn81#
根据ApacheKafka文档
KafkaServer
节用于配置从此代理到其他代理的身份验证,以及用于连接到此代理的客户端和其他代理的身份验证。这个Client
节用于连接到zookeeper。既然你的问题是关于
KafkaServer
节,并且您正在配置sasl/plain身份验证机制,请参阅apache kafka文档的这一部分:此配置定义了两个用户(admin和alice)。属性
username
以及password
在KafkaServer
节用于启动与其他代理的连接。在本例中,admin是代理间通信的用户。属性集user_userName
定义连接到代理的所有用户的密码,并且代理使用这些属性验证所有客户端连接,包括来自其他代理的连接。换句话说,这里配置了两种不同的情况:
当此代理连接到其他代理时,它将使用中定义的用户名和密码
username
以及password
.当客户端和其他代理连接到此代理时
user_userName
条目用于验证这些连接,其中用户名是user_userName
键,密码是值。因此,在您的示例中,此代理将使用用户名连接到其他代理
admin
密码为admin-secret
因为这两条线:而且,客户机和其他代理可以通过用户名密码组合连接到此代理
admin
/admin-secret
或者alice
/alice-secret
因为这两条线:如果您只接受来自其他代理的连接以便在此侦听器上进行代理间通信,则它们可能正在使用
user_admin="admin-secret"
部分配置,以及user_alice="alice-secret"
可能是多余的。