Использование SASL PLAINTEXT в Kafka
ПРИМЕЧАНИЕ
Включение аутентификации SASL PLAINTEXT осуществляется в соответствии со статьей SASL PLAINTEXT.
|
Проверка включения аутентификации SASL PLAINTEXT
-
Проверьте конфигурацию безопасности и аутентификации брокеров Kafka.
На каждом хосте с брокером Kafka введите команду:
$ vim /etc/kafka/conf/server.properties
Убедитесь, что в файле server.properties для каждого брокера Kafka строки, определяющие протокол безопасности, изменены на
SASL_PLAINTEXT
; строки, определяющие механизм аутентификации — наPLAIN
, а также сгенерированы пароли для всех сервисов кластера ADS:security.inter.broker.protocol=SASL_PLAINTEXT sasl.mechanism.inter.broker.protocol=PLAIN sasl.enabled.mechanisms=PLAIN listener.name.sasl_plaintext.plain.sasl.jaas.config=org.apache.kafka.common$ username=kafka \ password="kafka-password" \ user_kafka="kafka-password" \ user_ksql-server="ksql-server-password" \ user_kafka-rest="kafka-rest-password" \ user_schema-registry="schema-registry-password" \ user_kafka-connect="kafka-connect-password";
-
Проверьте, что после установки SASL PLAINTEXT в настройках сервиса Kafka изменился параметр listeners с
PLAINTEXT://:9092
наSASL_PLAINTEXT://:9092
.Настройки сервиса Kafka
Управление пользователями с аутентификацией SASL PLAINTEXT в Kafka
Создание пользователя
Для того чтобы создать пользователя:
-
На вкладке конфигурирования кластера в дереве конфигурационных настроек раскройте узел SASL_PLAINTEXT Authentication, далее узел SASL_PLAINTEXT Auth username:password map и нажмите + Add property для создания нового пользователя.
Создание нового пользователя -
В открывшемся окне введите имя пользователя (field name), пароль (secret), подтвердите пароль и нажмите Apply.
В имени пользователя допускается использовать строчные буквы, цифры, точку, подчеркивание и/или дефис.
Имя и пароль для нового пользователя -
После ввода данных сохраните конфигурацию, кликнув Save.
-
Перезагрузите сервис Kafka. Для этого примените действие Restart, нажав на иконку
в столбце Actions.
-
Убедитесь, что в файле server.properties для каждого брокера Kafka появилась запись о новом пользователе:
listener.name.sasl_plaintext.plain.sasl.jaas.config=org.apache.kafka.common$ username=kafka \ password="kafka-password" \ user_kafka="kafka-password" \ user_ksql-server="ksql-server-password" \ user_kafka-rest="kafka-rest-password" \ user_schema-registry="schema-registry-password" \ user_kafka-connect="kafka-connect-password" \ user_new_user="password";
где:
-
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="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