Настройка аутентификации SASL на стороне клиента для подключения к двум разным кластерам kafka

У меня есть приложение для весенней загрузки, которое подключается к моему кластеру kafka. Приложение (как клиент kafka) использует аутентификацию SASL, и я указал конфигурацию JAAS через System.setProperty () перед инициализацией производителя и потребителя kafka. Он отлично работает с настройкой одного кластера kafka.

kafka_client_jaas.conf

KafkaClient {
  org.apache.kafka.common.security.plain.PlainLoginModule required
  username="myClusterUser"
  password="user-secret";
};

MyKafkaProducer.java

…
private void init()
{
    System.setProperty("java.security.auth.login.config", "kafka_client_jaas.conf");
    …
}

Теперь у меня есть сторонний (чужой) кластер kafka, который полностью отключен от моего кластера kafka. Сторонний кластер kafka также использует аутентификацию SASL.

Как Java-приложение может подключаться к двум разным кластерам kafka, и для обоих кластеров требуется аутентификация SASL? Имя пользователя и пароль различны для обоих кластеров, и я могу установить только один файл конфигурации JAAS в java.security.auth.login.config.


person n32    schedule 22.07.2020    source источник


Ответы (1)


Начиная с Kafka 0.10.2, вы можете использовать параметр sasl.jaas.config для настройки аутентификации SASL для каждого клиента Kafka. Это позволяет запускать несколько клиентов Kafka с разными (или одинаковыми) конфигурациями SASL в одной JVM.

To do so:

  • Не задано java.security.auth.login.config

  • В свойствах каждого клиента Kafka добавьте sasl.jaas.config. Например:

    sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
      username="myClusterUser" \
      password="user-secret";
    

    см. http://kafka.apache.org/documentation.html#security_sasl_plain_clientconfig для Полная информация

  • MyKafkaClient.java

    import org.apache.kafka.common.config.SaslConfigs;
    private void init() {
      properties.put(SaslConfigs.SASL_JAAS_CONFIG,
      "org.apache.kafka.common.security.plain.PlainLoginModule required username=\"myClusterUser\" password=\"user-secret\"");
    }
    
  • удали свой файл JAAS

person Mickael Maison    schedule 22.07.2020