当前位置: 首页 > 知识库问答 >
问题:

使用SASL进行Kafka身份验证-重复的管理员用户?

岳允晨
2023-03-14

我运行的是一个分布式Kafka Broker,其中使用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”部分有两个管理员用户。我也艰难地了解到我需要两者,但为什么会这样?我有一种感觉,几个月前我已经读过(但忘记了)原因,但我似乎再也找不到了。

共有1个答案

濮阳奇逸
2023-03-14

根据Apache Kafka文档,KafkaServer部分用于配置从该代理到其他代理的身份验证,以及为连接到此代理的客户端和其他代理进行身份验证。Client部分用于连接Zookeeper。

由于您的问题是关于< code>KafkaServer部分,并且您正在配置SASL/普通身份验证机制,请参考Apache Kafka文档的这一部分:

此配置定义了两个用户(admin和alice)。broker使用KafkaServer部分中的属性用户名 >来启动与其他broker的连接。在本例中,admin是代理间通信的用户。属性集 user_userName定义连接到代理的所有用户的密码,代理使用这些属性验证所有客户端连接,包括来自其他代理的连接。

换句话说,这里配置了两种不同的情况:

  • 当此代理连接到其他代理时,它将使用用户名密码中定义的用户名和密码。
  • 当客户端和其他代理连接到该代理时,user_userName条目用于验证这些连接,其中用户名是user_userName键的用户名部分,密码是值。

因此,在您的示例中,此代理将使用用户名admin和密码admin secret>连接到其他代理,因为有以下两行:

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

此外,客户和其他代理可以使用用户名和密码组合< code > admin /< code > admin-secret 或< code > Alice /< code > Alice-secret 连接到该代理,因为这两行:

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

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

 类似资料:
  • 有人能帮我编写JAAS conf文件和Handler类以使用SASL/OAUTHBEARER进行身份验证吗? 在kafka文档中配置的JAAS文件中,这个选项的含义是什么?

  • 我已经将我的Kafka jaas配置设置为Spring引导应用程序中的外部bean,以便从application.yaml文件中读取我的配置。 但是,从yaml文件读取jaas密钥表文件时,我遇到了一个错误。 面临错误 这就是我配置jaas的方式 KafkaJaasConfigurationProperty.java 应用yml 配置Bean.java 任何帮助将不胜感激。谢谢!

  • 我试图添加安全性到我的kafka集群,我按照留档: < Li > https://Kafka . Apache . org/documentation/# security _ sasl _ scram < Li > https://docs . confluent . io/current/Kafka/authentic ation _ sasl/authentic ation _ sasl _

  • 我正在尝试为没有ssl的Kafka集群启用SASL用户名和密码。我按照这个Stackoverflow的步骤: Kafka SASL 动物园管理员身份验证 SASL认证似乎对Kafka经纪人有效。消费者和生产者在写入或读取主题之前必须进行身份验证。到目前为止一切顺利。 问题在于在 kafka 上创建和删除主题。例如,当我尝试使用以下命令时: 我能够列出kafka集群中的所有主题,并创建或删除任何无需

  • 我需要一些有关Azure API管理服务的帮助。 目前,我们有一个单页应用程序,它使用Azure上托管的两个后端服务(WebApi.NETCore)。为了对用户进行身份验证和授权,我们使用IdentityServer(也作为服务托管在Azure上)SubscriptionService。在这里,IdSrv对用户进行身份验证,并定义webapp可以访问哪些api。如果用户拥有给定API的权限,Sub

  • JAAS 的配置 Kafka 使用Java验证和授权API(JAAS)来完成 SASL 配置. Kafka brokers 的 JAAS 的配置 KafkaServer 是每一个 KafkaServer/Broker 的 JASS 文件里面的节点名称。 在这个节点中,提供了用于所有 brokers 之间通信的 SASL 客户端连接的 SASL 配置选项。 Client 节点是用于认证 SASL 与