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

Kafka使用sasl配置jaas。贾斯。库伯内特斯上的配置

通典
2023-03-14

我用的是这个舵图:https://github.com/helm/charts/tree/master/incubator/kafka

并且这些覆盖在值中。亚马尔

configurationOverrides:
  advertised.listeners: |-
    EXTERNAL://kafka-${KAFKA_BROKER_ID}.host-removed:$((31090 + ${KAFKA_BROKER_ID}))
  listener.security.protocol.map: |-
    PLAINTEXT:SASL_PLAINTEXT,EXTERNAL:SASL_PLAINTEXT
  sasl.enabled.mechanisms: SCRAM-SHA-256
  auto.create.topics.enable: false
  inter.broker.listener.name: PLAINTEXT
  sasl.mechanism.inter.broker.protocol: SCRAM-SHA-256
  listener.name.EXTERNAL.scram-sha-256.sasl.jaas.config: org.apache.kafka.common.security.scram.ScramLoginModule required username="user" password="password";

基于此留档:https://kafka.apache.org/documentation/#security_jaas_broker

(快速总结)

Brokers may also configure JAAS using the broker configuration property sasl.jaas.config. The property name must be prefixed with the listener prefix including the SASL mechanism, i.e. listener.name.{listenerName}.{saslMechanism}.sasl.jaas.config. Only one login module may be specified in the config value. If multiple mechanisms are configured on a listener, configs must be provided for each mechanism using the listener and mechanism prefix

listener.name.sasl_ssl.scram-sha-256.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
    username="admin" \
    password="admin-secret";

问题是,当我启动Kafka时,会出现以下错误:

java.lang.IllegalArgumentException: Could not find a 'KafkaServer' or 'plaintext.KafkaServer' entry in the JAAS configuration. System property 'java.security.auth.login.config' is not set

根据优先顺序,如果未设置上述配置,则应使用静态jass文件。

If JAAS configuration is defined at different levels, the order of precedence used is:
  • 代理配置属性侦听器。名称{listenerName}。{saslMechanism}。萨斯勒。贾斯。配置
  • {listenerName}。静态JAAS配置的KafkaServer部分
  • 静态JAAS配置的KafkaServer部分

helm图表不支持配置此jaas文件的方法,因此使用此属性似乎是理想的方法,我只是不知道哪些配置不正确。

注意:如果我禁用所有的SASL并且只使用纯文本,群集可以正常工作,但是在真实环境中这并不好。

共有1个答案

邢浩邈
2023-03-14

我们定义了两个侦听器:PLAINTEXT和EXTERNAL。您已经将两者映射到SASL_PLAINTEXT

这真的是你想做的吗?或者您希望纯文本不需要SASL而只是纯文本?

>

listener.name.EXTERNAL.scram-sha-256.sasl.jaas.config: org.apache.kafka.common.security.scram.ScramLoginModule required username="user" password="password";

由于您已经将明文映射到SASL_明文,因此还需要JAAS配置。您可以使用以下命令指定它,例如:

 listener.name.PLAINTEXT.scram-sha-256.sasl.jaas.config: org.apache.kafka.common.security.scram.ScramLoginModule required username="user" password="password";

如果您希望您的PLAINTEXT侦听器实际上是没有SASL的纯文本,那么您需要更新侦听器映射:

listener.security.protocol.map: |-
  PLAINTEXT:PLAINTEXT,EXTERNAL:SASL_PLAINTEXT
 类似资料:
  • 我正在通过Windows上的Docker桌面运行本地Kubernetes群集。我正试图修改我的kube apiserver配置,我找到的所有信息都表示要修改。我一直找不到这个文件,也不确定该怎么做。因为集群是通过Docker Desktop运行的,所以是否有不同的流程?

  • 为了在minikube的k8s上运行php fpm应用程序,我缺少一些kubernetes ingress nginx配置。 k8s配置文件: 先前docker开发环境的docker Nginx映像上使用的Nginx服务器工作配置文件(Nginx位于docker中,是与php容器分离的容器): 在浏览器上访问minikube ip时,出现502错误。 我已经安装了运行以下命令的ingress ng

  • 我试图设置Kubernetes入口,将外部http流量路由到前端pod(路径/)和后端pod(路径/rest/*),但我总是得到400错误,而不是主nginx索引。html。 所以我在第https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer页尝试了谷歌库伯内特斯的例子,但我总是得到400个错误。有什么想法吗?

  • 我试图有1个redis大师与2个redis复制品绑在一个3法定人数哨兵在Kubernetes。我对Kubernetes很陌生。 我最初的计划是让主控器在一个吊舱上运行,并绑定到一个Kubernetes SVC,而两个副本在自己的吊舱上运行,并绑定到另一个Kubernetes SVC。最后,3个哨兵吊舱将被绑在他们自己的SVC上。副本将被绑定到主SVC(因为没有SVC,ip将会改变)。sentine