kafka与sasl的身份验证-重复管理用户?

btqmn9zl  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(346)

我正在运行一个分布式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个管理员用户。我也学到了我需要两者的艰难方法,但为什么呢?我有种感觉,几个月前我读过(忘了)原因,但似乎再也找不到了。

ztigrdn8

ztigrdn81#

根据ApacheKafka文档 KafkaServer 节用于配置从此代理到其他代理的身份验证,以及用于连接到此代理的客户端和其他代理的身份验证。这个 Client 节用于连接到zookeeper。
既然你的问题是关于 KafkaServer 节,并且您正在配置sasl/plain身份验证机制,请参阅apache kafka文档的这一部分:
此配置定义了两个用户(admin和alice)。属性 username 以及 passwordKafkaServer 节用于启动与其他代理的连接。在本例中,admin是代理间通信的用户。属性集 user_userName 定义连接到代理的所有用户的密码,并且代理使用这些属性验证所有客户端连接,包括来自其他代理的连接。
换句话说,这里配置了两种不同的情况:
当此代理连接到其他代理时,它将使用中定义的用户名和密码 username 以及 password .
当客户端和其他代理连接到此代理时 user_userName 条目用于验证这些连接,其中用户名是 user_userName 键,密码是值。
因此,在您的示例中,此代理将使用用户名连接到其他代理 admin 密码为 admin-secret 因为这两条线:

username="admin"
password="admin-secret"

而且,客户机和其他代理可以通过用户名密码组合连接到此代理 admin / admin-secret 或者 alice / alice-secret 因为这两条线:

user_admin="admin-secret"
user_alice="alice-secret"

如果您只接受来自其他代理的连接以便在此侦听器上进行代理间通信,则它们可能正在使用 user_admin="admin-secret" 部分配置,以及 user_alice="alice-secret" 可能是多余的。

相关问题