Разрешение доступа к темам kafka только потребителям с определенных хостов / IP-адресов - PullRequest
2 голосов
/ 29 мая 2020

У нас есть система на основе Kafka, и большая команда разработчиков работает над этой системой. Мы все еще находимся на стадии разработки и тестирования и еще не приступили к производству. Для большинства локальных тестов разработчиков нам не нужно использовать сообщения Kafka, но нам действительно нужно взаимодействовать с базами данных и другими приложениями в среде QA, поэтому разработчики будут использовать свойства профиля QA при запуске своего приложения (это Java Приложения Spring Boot).

Проблема в том, что когда разработчик запускает приложение локально с профилем QA, локальное приложение потребляет сообщения из среды QA и прерывает тестирование. У нас также есть более серьезная проблема, что, когда мы go запускаем производство, разработчик может работать с производственным профилем, чтобы иметь возможность просматривать некоторые производственные данные и непреднамеренно потреблять производственные сообщения, что вызывает серьезные проблемы.

Is есть ли способ настроить Kafka, чтобы только определенные хосты / IP-адреса могли использовать его сообщения?

1 Ответ

2 голосов
/ 30 мая 2020

Необходимо настроить Авторизацию с помощью ACL .

Как включить ACL:

В вашем файле server.properties вам необходимо создать Authorizer, добавив следующую строку:

authorizer.class.name=kafka.security.auth.SimpleAclAuthorizer

Теперь вам нужно следовать документации, чтобы правильно настроить ACL на основе ваших вариантов использования.

Добавление ACL

Теперь, когда все готово, давайте Предположим, у вас есть topi c с именем testTopic, к которому вы хотите предоставить доступ для чтения и записи только пользователю с именем Bob с хоста с IP 197.5.6.1:

bin/kafka-acls \
  --authorizer-properties zookeeper.connect=localhost:2181 \
  --add \
  --allow-principal User:'Bob' --allow-host '197.5.6.1' \
  --operation Read --operation Write \
  --topic testTopic \
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...