Использование SASL PLAINTEXT в Kafka
|
ПРИМЕЧАНИЕ
Включение аутентификации SASL PLAINTEXT осуществляется в соответствии со статьей SASL PLAINTEXT.
|
Проверка включения аутентификации SASL PLAINTEXT
-
Проверьте конфигурацию безопасности и аутентификации брокеров Kafka.
Убедитесь, что в файле /etc/kafka/conf/server.properties для каждого брокера Kafka строки, определяющие протокол безопасности, изменены на
SASL_PLAINTEXT, а строки, определяющие механизм аутентификации — наPLAIN:security.inter.broker.protocol=SASL_PLAINTEXT sasl.mechanism.inter.broker.protocol=PLAIN sasl.enabled.mechanisms=PLAIN sasl.mechanism.controller.protocol=PLAINУбедитесь, что в файле /etc/kafka/conf/kafka-jaas.conf указан модуль для аутентификации и записаны пароли для всех сервисов кластера ADS, связанных с Kafka:
KafkaServer { org.apache.kafka.common.security.plain.PlainLoginModule required username="kafka" password="kafka-password" user_adscc="adscc-kafka-password" user_kafka="kafka-password" user_kafka-rest="kafka-rest-password" user_ksql-server="ksql-server-password" user_kafka-connect="kafka-connect-password" user_schema-registry="schema-registry-password"; }; -
Проверьте, что после установки SASL PLAINTEXT на странице конфигурирования сервиса Kafka в группе server.properties значение параметра listeners изменилось с
PLAINTEXT://:9092наSASL_PLAINTEXT://:9092.
Управление пользователями с аутентификацией SASL PLAINTEXT в Kafka
Создание пользователя
Для того чтобы создать пользователя:
-
На вкладке конфигурирования кластера в дереве конфигурационных настроек раскройте узел SASL_PLAINTEXT Authentication, далее узел SASL_PLAINTEXT Auth username:password map и нажмите + Add property для создания нового пользователя.
Создание нового пользователя -
В открывшемся окне введите имя пользователя (field name), пароль (secret), подтвердите пароль и нажмите Apply.
В имени пользователя допускается использовать строчные буквы, цифры, точку, подчеркивание и/или дефис.
Имя и пароль для нового пользователя -
После ввода данных сохраните конфигурацию, кликнув Save.
-
Перезагрузите сервис Kafka. Для этого примените действие Restart, нажав на иконку
в столбце Actions.
-
Убедитесь, что в файле /etc/kafka/conf/kafka-jaas.conf для каждого брокера Kafka появилась запись о новом пользователе:
KafkaServer { org.apache.kafka.common.security.plain.PlainLoginModule required username="kafka" password="kafka-password" user_adscc="adscc-kafka-password" user_kafka="kafka-password" user_new_user="new_user-password" user_kafka-rest="kafka-rest-password" user_ksql-server="ksql-server-password" user_kafka-connect="kafka-connect-password" user_schema-registry="schema-registry-password"; };где
user_new_user="new_user-password"содержит:-
new_user— имя, введенное при создании пользователя; -
new_user-password— заданный пароль для пользователя.
-
Удаление и изменение данных пользователя
Для того чтобы удалить пользователя, на вкладке конфигурирования кластера в дереве конфигурационных настроек раскройте узел SASL_PLAINTEXT Authentication, далее узел SASL_PLAINTEXT Auth username:password map и нажмите напротив пользователя, которого необходимо удалить.
Для изменения данных пользователя выберите нужного пользователя, внесите новые данные и нажмите Apply.
После удаления пользователя или изменения данных:
-
Сохраните конфигурацию, кликнув Save.
-
Перезагрузите сервис Kafka. Для этого примените действие Restart, нажав на иконку
в столбце Actions.
Аутентификация пользователя в среде Kafka
Для аутентификации каждого пользователя, в том числе автоматически созданного системой пользователя kafka, требуется создать специальный файл конфигурации client.properties. Для этого выполните шаги:
-
Откройте файл-заглушку, выполнив команду:
$ sudo vim /etc/kafka/conf/client.properties -
Внесите изменения в файл, раскомментировав строку с параметром
sasl.jaas.configи внеся данные о пользователе и пароле пользователя, как указано ниже:security.protocol=SASL_PLAINTEXT sasl.mechanism=PLAIN # Uncomment and set necessary username/password sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \ username="new_user" \ password="new_user-password";где имя пользователя и пароль должны быть указаны в кавычках, как указано в примере.
Работа с .sh файлами (скриптами) с участием созданного пользователя
-
Создайте топик, указав при помощи опции
--command-configпуть к файлу конфигурации пользователя client.properties, описанному выше:$ /usr/lib/kafka/bin/kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --command-config /etc/kafka/conf/client.propertiesВ случае успешного создания топика выводится сообщение:
Created topic test-topic.
-
Запишите сообщения в топик, указав при помощи опции
--producer.configпуть к файлу конфигурации пользователя client.properties, описанному выше:$ /usr/lib/kafka/bin/kafka-console-producer.sh --topic test-topic --bootstrap-server localhost:9092 --producer.config /etc/kafka/conf/client.properties -
Считайте сообщения из топика, указав при помощи опции
--consumer.configпуть к файлу конфигурации пользователя client.properties, описанному выше:$/usr/lib/kafka/bin/kafka-console-consumer.sh --topic test-topic --from-beginning --bootstrap-server sov-ads-test-4.ru-central1.internal:9092 --consumer.config /etc/kafka/conf/client.propertiesУбедитесь в корректности считанных сообщений.
Попытка запуска любого скрипта от имени пользователя, не внесенного в файл server.properties, вызовет ошибку аутентификации, например:
[2022-12-01 13:42:25,572] ERROR [AdminClient clientId=adminclient-1] Connection to node -1 (sov-ads-test-4.ru-central1.internal/10.92.16.223:9092) failed authentication due to: Authentication failed: Invalid username or password (org.apache.kafka.clients.NetworkClient) [2022-12-01 13:42:25,574] WARN [AdminClient clientId=adminclient-1] Metadata update failed due to authentication error (org.apache.kafka.clients.admin.internals.AdminMetadataManager) org.apache.kafka.common.errors.SaslAuthenticationException: Authentication failed: Invalid username or password Error while executing topic command : Authentication failed: Invalid username or password [2022-12-01 13:42:25,579] ERROR org.apache.kafka.common.errors.SaslAuthenticationException: Authentication failed: Invalid username or password