TLS и безопасность
Обязательно для внешнего доступа
SASL/PLAIN и Basic передают пароль в открытом виде — наружу только поверх TLS.
Варианты TLS
Рекомендуется: обратный прокси (Caddy/Nginx) с TLS-терминацией перед 8080 (веб-консоль) и, при необходимости, перед 9092/50051. Caddy выпускает сертификаты Let's Encrypt автоматически.
Нативный TLS брокера — на gRPC- и Kafka-портах, включая mTLS (проверка клиентских сертификатов). Пути к сертификату/ключу задаются секцией TLS в serve.toml; в docker-варианте сертификаты монтируются в контейнер. Клиенты:
# 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 wire | SASL/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 фильтруются). УmanagerACL ограничивает и управление: создать, изменить или удалить он может только топики из своего списка. К ролиadminACL неприменим — это суперпользователь, и брокер откажется стартовать с таким конфигом (а веб-консоль не даст его задать), чтобы ограничение не выглядело работающим; - динамические пользователи — создание/изменение/удаление без рестарта брокера: вкладка «Доступы» веб-консоли или
roxactl user list|create|delete. Хранятся вdata_dir(персистентны вместе с метаданными); статический пользователь изserve.tomlпри совпадении имени всегда имеет приоритет — доступ восстановим правкой конфига.
Также в лицензионных редакциях: RBAC-пользователи самой веб-консоли (лимит мест из лицензии).
Чеклист прода
- Сменены все пароли
CHANGE_ME…(serve.toml, admin.toml, .env). [[auth.users]]включены; открытого доступа нет.- TLS на всех портах, доступных снаружи.
- Порт MinIO (9000) не опубликован наружу.
- Секреты совпадают в трёх местах (см. прод-стек).