Skip to content

TLS и безопасность

Обязательно для внешнего доступа

SASL/PLAIN и Basic передают пароль в открытом виде — наружу только поверх TLS.

Варианты TLS

Рекомендуется: обратный прокси (Caddy/Nginx) с TLS-терминацией перед 8080 (веб-консоль) и, при необходимости, перед 9092/50051. Caddy выпускает сертификаты Let's Encrypt автоматически.

Нативный TLS брокера — на gRPC- и Kafka-портах, включая mTLS (проверка клиентских сертификатов). Пути к сертификату/ключу задаются секцией TLS в serve.toml; в docker-варианте сертификаты монтируются в контейнер. Клиенты:

bash
# roxactl по TLS:
roxactl --endpoint https://SERVER:50051 --tls-ca ca.pem topic list

# kcat по TLS + SASL:
kcat -b SERVER:9092 -X security.protocol=SASL_SSL -X ssl.ca.location=ca.pem \
     -X sasl.mechanism=PLAIN -X sasl.username=app -X sasl.password=<pass> -L

Аутентификация

СлойМеханизм
gRPC data-plane (roxactl, SDK)Basic-учётные данные из [[auth.users]]
Kafka wireSASL/PLAIN (те же пользователи)
Веб-консольлогин/пароль из admin.toml; argon2-хэши, CSPRNG-сессии TTL 24 ч

Роли data-plane (проверяются на каждом запросе): admin — все операции; manager — только управление топиками (create/delete/describe); writer — только запись; viewer — только чтение. Диагностика, состояние кластера и список консюмер-групп доступны только admin. Без секции [[auth.users]] доступ открытый — допустимо только для локальной разработки.

В редакциях Pro / Enterprise (возможность «RBAC», см. Лицензирование) дополнительно доступны:

  • per-topic ACL — у пользователя с ролью manager/writer/viewer поле topics: список точных имён или префиксов orders-*; пользователь видит и читает/пишет только разрешённые топики (списки топиков и Kafka Metadata фильтруются). У manager ACL ограничивает и управление: создать, изменить или удалить он может только топики из своего списка. К роли admin ACL неприменим — это суперпользователь, и брокер откажется стартовать с таким конфигом (а веб-консоль не даст его задать), чтобы ограничение не выглядело работающим;
  • динамические пользователи — создание/изменение/удаление без рестарта брокера: вкладка «Доступы» веб-консоли или roxactl user list|create|delete. Хранятся в data_dir (персистентны вместе с метаданными); статический пользователь из serve.toml при совпадении имени всегда имеет приоритет — доступ восстановим правкой конфига.

Также в лицензионных редакциях: RBAC-пользователи самой веб-консоли (лимит мест из лицензии).

Чеклист прода

  1. Сменены все пароли CHANGE_ME… (serve.toml, admin.toml, .env).
  2. [[auth.users]] включены; открытого доступа нет.
  3. TLS на всех портах, доступных снаружи.
  4. Порт MinIO (9000) не опубликован наружу.
  5. Секреты совпадают в трёх местах (см. прод-стек).