Sobes.tech
Back to questions
Middle
15

Как реализовано разграничение прав доступа в кластере Kafka? На какие сущности распространяются ACL?

Companies where asked
ГК ИннотехГК Иннотех

Answer from AI

sobes.tech AI

В Apache Kafka разграничение прав доступа реализовано через механизм ACL (Access Control Lists). ACL позволяют задавать, какие пользователи или сервисы (принципалы) имеют права на выполнение определённых операций с ресурсами кластера.

ACL распространяются на следующие основные сущности:

  • Topic — права на чтение (READ), запись (WRITE), создание (CREATE), удаление (DELETE) топиков.
  • Group — права на управление группами потребителей (например, чтение offset'ов).
  • Cluster — права на операции, связанные с самим кластером, например, создание топиков, управление ACL.
  • TransactionalId — права на использование транзакций.

Каждая ACL задаёт:

  • Принципала (пользователя или сервисный аккаунт), которому предоставляются права.
  • Ресурс (topic, group, cluster и т.д.).
  • Разрешённые операции (READ, WRITE, DESCRIBE, CREATE, DELETE и др.).
  • Тип разрешения (ALLOW или DENY).

Пример команды для добавления ACL:

kafka-acls --authorizer-properties zookeeper.connect=localhost:2181 \
  --add --allow-principal User:Alice --operation Read --topic my-topic

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