Как подключить Java приложение к кластеру Confluent Cloud
Что бы управлять доступом приложений к Confluent Cloud используется service account.
Service account это, по сути, это идентичность приложения тогда как API-ключ — это только credential
Service Account позволяет:
- Управлять правами (RBAC назначается service account а не пользователю)
- Иметь несколько ключей
- Легко отключить приложение
- легко находить нужную информацию в логах
Кроме этого, Apache Kafka не имеет встроенной user-management системы. Поэтому Confluent реализовал service account
!!! Service Account нужен не Kafka, он нужен менеджеру для управлению доступом.
Для того что бы посмотреть как создавать service account давать ему права и управлять им — необхоидмо создать новый топик.
Логинимся в Confluent Cloud и заходим в кластер. Выбираем вкладку Topic и нажимаем Add Topic. Создаем топик user-data с дефлотными настройками.

Теперь, когда у нас есть новый пустой топик — пришло время раздавать права на этот топик. Мы создадим две сервисные учетные записи: одну для производителя и одну для потребителя.
1 Переходим в главное меню (значок с тремя линиями) и нажмаем «Учетные записи и доступ». В этом окне выбераем«Сервисные учетные записи», и нажимаем «Создать сервисную учетную запись»
2 Вводим названием и описание и нажимаем кнопку next. Все остальные настройки пока не трогаем, оставляем то что есть. Это service account для producer. Создаем таой же account для consumrer.
Теперь у нас есть 2 новых Service Account

Для доступа к кластеру необходимо связать учетную запись службы с ключом API. Поэтому давайте создадим новую пару ключ/секрет API для наших внешних приложений.
Переходим в кластер и выбираем там Api Keys. Пока у нас только один Api key который мы создали ранее, во врем подклбчения. Создаем дополнительные ключи.
Выбираем Service account. В следующем окне нужно выбрать сервис для которого мы создаем ключ — выбираем producer account

Следующий шаг — заполнить роли

заполняем описание ключа, скачиваем и сохраняем его себе. Добавляем ключи для consumer.
Так как consumer работает с consumer group — понадобится создать ключ дляя доступа и консьюмера и его группы. Такие ключи создаются как часть друг друга. Напчинаем создавать с ключа для группы.
Нажимаем добавить и вводим название. Поче этого заполняем поля и нажимаем на кнопку Add ACL и заполняем поля для consumer

Ключи готовы, скачаны и можно приступать у настройке

Открываем файл свойства нашего producer — и меняем:
# Required connection configs for Kafka producer, consumer, and admin
bootstrap.servers=pkc-oxqxx9.us-east-1.aws.confluent.cloud:9092
security.protocol=SASL_SSL
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username=ƋND5KEP3VNMT5FJN' password='cfltDmB2+ztMuggdwwpfJJ18+8WzPDzVkOvMHoOLkGMKIq8V9D8L9PPTzNo7AB9w'
sasl.mechanism=PLAIN
~
то же самое делаем для consumer
собираем и запускаем оба приложения. Теперь они могут подключиться и отправлять/принимать сообщения


Приложения работают!