Kafka: динамически обновлять конфигурацию jaas

Я настроил конфигурацию jaas для kafka, используя свойство sasl.jaas.config. Я хочу обновить эту конфигурацию и динамически добавлять пользователей.

Согласно этому документу - http://kafka.apache.org/11/documentation.html#dynamicbrokerconfigs, мы можем сделать это с помощью bin/kafka-configs.sh.

В приведенном выше документе есть столбец конфигурации, в котором говорится следующее: введите здесь описание изображения

Я попытался обновить sasl.jaas.config с помощью следующей команды:

bin/kafka-configs.sh --bootstrap-server localhost:9092 --entity-type brokers --entity-name 59 --alter --add-config sasl.jaas.config="KafkaServer {\n org.apache.kafka.common.security.plain.PlainLoginModule required\n username=\"myuser\"\n password=\"mypassword\";\n};\nClient {\n org.apache.zookeeper.server.auth.DigestLoginModule required\n username=\"myuser2\"\n password=\"mypassword2\";\n};"

Но это дает мне следующую ошибку:

requirement failed: Invalid entity config: all configs to be added must be in the format "key=val"

Если я посмотрю на столбец выше, он говорит, что формат значения свойства sasl.jaas.config равен (=)*. Что это значит?

Как передать значение «sasl.jaas.config» для динамического обновления конфигурации jaas?


person Tushar H    schedule 27.02.2019    source источник


Ответы (1)


Хотя можно динамически обновлять sasl.jaas.config для добавления новых пользователей, стандартный модуль входа в систему Plain не предназначен для использования в рабочей среде.

Вместо этого вы должны определить обработчики обратного вызова для обработки аутентификации пользователей. Это описано в документах Kafka Sasl Plain.

Другой вариант, требующий дополнительной работы (но обеспечивающий еще большую гибкость), — это создание собственного модуля входа в систему. Процесс описан в Может ли Kafka быть снабжен личным LoginModule для поддержки LDAP?


Что касается сообщения об ошибке, которое вы получаете, похоже, это проблема с инструментом kafka-config.sh. Он не ожидает, что значение конфигурации будет содержать =. Вы должны иметь возможность обновить эту конфигурацию с помощью AdminClient API.

Я не смог найти существующую задачу в JIRA, поэтому создал новую: https://issues.apache.org/jira/browse/KAFKA-8010

person Mickael Maison    schedule 27.02.2019
comment
Спасибо за ваш ценный вклад, как я могу использовать AdminClient API для обновления sasl.jaas.config, никогда не использовал это, любой пример был бы полезен, еще раз спасибо. - person Tushar H; 28.02.2019
comment
Я проверил kafka.apache.org/documentation/#security_sasl_plain_production, но он содержит ограниченное информация об этом. Есть ли у вас какой-либо пример/ссылка, которая поможет больше узнать о написании обработчиков обратного вызова для обработки аутентификации пользователей. - person Tushar H; 28.02.2019
comment
См. KIP-86 (cwiki.apache.org/confluence/display/KAFKA/) для примеров обработчика обратного вызова - person Mickael Maison; 28.02.2019
comment
Чтобы использовать AdminClient, ознакомьтесь с Javadocs для alterConfigs() kafka.apache.org/21/javadoc/org/apache/kafka/clients/admin/ См. stackoverflow.com/questions/54024829/ для примера - person Mickael Maison; 28.02.2019
comment
ОК, спасибо, проверю оба. - person Tushar H; 28.02.2019