Kafka: Часть 3 — Аутентификация по протоколу SASL_PLAINTEXT с механизмом PLAIN

В предыдущей статье мы рассмотрели настройки выбора механизма аутентификации. Запустили Kafka без аутентификации и написали клиент, который пишет сообщения в топик.

В этой статье мы запустим Kafka  с аутентификацией через SASL с простым механизмом PLAIN.

Предыдущая статья.Следующая статья.

Полный список статей по теме тут.

Заходите в наш телеграмм канал — Enterprise Stack Helper! Делитесь опытом или задавайте вопросы, если что-то непонятно.

Репозитории с примерам из статей по способам аутентификаци и авторизации https://github.com/BlockWit/kafka-security-examples.

 

Настройки сервера

Как мы уже знаем, для выбора протокола SASL_PLAINTEXT и механизма SASL нужно указать на сервере

Помимо этого, придется добавить описание (на 9092 у нас остается соединение для межброкерного взаимодействия) соединения на 9093 порту в listeners и в advertised.listeners на SASL_PLAINTEXT:

Не забывайте заменять localhost на свой адрес

Мы указали, что выбрали протокол SASL_PLAINTEXT с механизмом PLAIN. Теперь нам нужно указать настройки самого механизма! Из первой статьи мы помним что это делается с помощью JAAS. Давайте разберем на примере JAAS записи в конфигурации сервера:

Для разбора этой конфигурации достаточно понять три вещи

  1. Пользователи задаются как:
    user_[имя_пользователя][пароль_пользователя]»
    Что мы и видим на примере пользователей, admin, robin и alice. Например:
    user_alicealice-secret» — тут задан пользователь alice с паролем alice-secret.
  2. username и password — это логин и пароль для так называемой inter-broker коммуникации. Т.е. для того чтобы узлы Kafka могли связываться между собой с помощью этого логина и пароля.
  3. Новая строка отделяется символом — , а конец конфигурации — ;

Все, конфигурация сервера готова! Приведем полную конфигурацию:

Если забудете указать securityy.protocol и sasl.enabled.mechanisms, то получите двусмысленную ошибку, поскольку иногда она также выскакивает если не указать JAAS конфигурацию (т.е. параметр listener.name.sasl_plaintext.plain.sasl.jaas.config):

В конфигурации JAAS также важно обратить внимание чтобы после символов «\» не было никаких знаков в той же строке, например если добавить пробел, то получим такую, которая вводит в заблуждение. Поскольку говорит что не  хватает символа «;» а он есть.

Настройки клиента

Как мы узнали из второй статьи, выбор протокола SASL_PLAINTEXT и механизма PLAIN для клиента задается настройками:

Однако, нам же еще нужно указать конфигурацию логин и пароль пользователя, под которым мы будем аутентифицироваться на сервере. Указывается логин и пароль в виде JAAS конфигурации. Мы будем аутентифицироваться как alice. Тогда JAAS-конфиг будет выглядеть так:

Думаю, тут все понятно! Внимательный читатель заметит serviceName — это название клиента, оно необходимо, иначе получим ошибку.

Важно: Если не указать serviceName, то получим ошибку:

Однако, такая же ошибка может выскочить, если указать на сервере  security.protocol=SASL_SSL, но не указать sasl.enabled.mechanism!

Теперь приведем пример кода запуска клиента с указанной конфигурацией

Код самого клиента мы приводить тут и в следующих статьях не будем. Его можно посмотреть во второй статье. Приведем только код для запуска.

Не забывайте менять localhost на свой!

Запустите Kafka, а затем клиент!  Если все успешно, то клиент ознаменует успешный процесс отправки сообщений в топик следующим текстом:

Резюме

В этой статье мы узнали настраивать протокол SASL_PLAINTEXT c самым простым механизмом аутентификации PLAIN. Познакомились с JAAS конфигурацией. Запустили клиент и сервер Kafka с аутентификацией!

В следующей статье мы немного узнаем про протокол SSL и подготовим все необходимое для последующей настройки SSL в Kafka.

Предыдущая статья. Следующая статья.

Полный список статей по теме тут.

Заходите в наш телеграмм канал — Enterprise Stack Helper! Делитесь опытом или задавайте вопросы, если что-то непонятно.

Репозитории с примерам из статей по способам аутентификаци и авторизации https://github.com/BlockWit/kafka-security-examples.

 

Добавить комментарий