Как указать отдельную аутентификацию / механизм для посредника и производителя / потребителя в кафке - PullRequest
0 голосов
/ 28 января 2020

У меня есть сценарий использования, когда мне нужно настроить отдельную аутентификацию для связи между брокерами, а другую - для производителя и потребителей.

Для производителя / потребителя мы решили go с SASL / OAUTHBEARER.

Чтобы это произошло, я попробовал ниже, как показано

## Configuration Overrides. Specify any Kafka settings you would like set on the StatefulSet
## here in map format, as defined in the official docs.
## ref: https://kafka.apache.org/documentation/#brokerconfigs
##
configurationOverrides:
  "offsets.topic.replication.factor": 1
  "confluent.support.metrics.enable": false  # Disables confluent metric submission
  "auto.create.topics.enable": false
  "delete.topic.enable": true
  "unclean.leader.election.enable": false
  "zookeeper.connect": zookeeper.zookeeper.svc.cluster.local:2181
  "zookeeper.sasl.enabled": false
  "super.users": User:admin
  "inter.broker.listener.name": EXTERNAL
  "sasl.mechanism.inter.broker.protocol": OAUTHBEARER
  "sasl.enabled.mechanisms": OAUTHBEARER
  "listener.name.external.oauthbearer.sasl.login.callback.handler.class": oracle.insight.common.kafka.security.OAuthBearerSignedLoginCallbackHandler
  "listener.name.external.oauthbearer.sasl.server.callback.handler.class": oracle.insight.common.kafka.security.OAuthBearerSignedValidatorCallbackHandler
  "listener.security.protocol.map": PLAINTEXT:PLAINTEXT,EXTERNAL:SASL_PLAINTEXT
  "listener.name.external.oauthbearer.sasl.jaas.config": org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required signedLoginStringClaim_sub=<tenant-subject> signedLoginKeyServiceClass=oracle.insight.common.security.SMSKeyService signedValidatorKeyServiceClass=oracle.insight.common.security.SMSKeyService;
  "advertised.listeners": EXTERNAL://kafka-$((${KAFKA_BROKER_ID})).<domain-name>:$((${KAFKA_OUTSIDE_PORT} + ${KAFKA_BROKER_ID}))

При таком подходе, предполагая, что и посредник, и производитель / потребитель используют одну и ту же аутентификацию, т.е. SASL / OAUTHBEARER, и это работает.

Ниже приведена справка, которую я ищу;

  1. Для производителя / потребителя мне нужна только проверка SASL / OAUTHBEARER на стороне брокера. Поэтому я думаю, что нам может потребоваться указать только ниже Я не хочу жестко кодировать подписанный логинStringClaim_sub. Производитель с send sub и кодом валидатора отвечает за его проверку.

"listener.name.external.oauthbearer.sasl.server.callback.handler.class": oracle.insight.common.kafka.security.OAuthBearerSignedValidatorCallbackHandler
"listener.security.protocol.map": PLAINTEXT:PLAINTEXT,EXTERNAL:SASL_PLAINTEXT
"advertised.listeners": EXTERNAL://kafka-$((${KAFKA_BROKER_ID})).<domain-name>:$((${KAFKA_OUTSIDE_PORT} + ${KAFKA_BROKER_ID}))

Это всегда происходит с ошибкой, когда jaas.config не найден.

Как указать другого слушателя с другим механизмом аутентификации для межброкерской связи?

Пожалуйста, помогите решить вопросы 1. и 2.

Спасибо.

...