У меня есть сценарий использования, когда мне нужно настроить отдельную аутентификацию для связи между брокерами, а другую - для производителя и потребителей.
Для производителя / потребителя мы решили 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, и это работает.
Ниже приведена справка, которую я ищу;
- Для производителя / потребителя мне нужна только проверка 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.
Спасибо.