Конфигурация: обзор и соглашения¶
Security Hub и сопутствующие сервисы настраиваются переменными окружения. Задать их можно:
- в файле
.env— при развёртывании через Docker Compose; - в значениях Helm-чарта — в Kubernetes и k3s;
- прямо в окружении процесса — при установке без контейнеров.
Полный справочник разбит по компонентам:
- Hub — backend и worker — вход и разграничение доступа, база данных, языковая модель и песочница, уведомления, учёт задач, перепроверка, плагины, наблюдаемость, лимиты.
- Frontend — переменные с префиксом
REACT_APP_, подстановка значений при старте контейнера, требование к совпадению схемы. - DomainScope — периметр, сканеры, выгрузка находок, обмен с Hub, NetBox.
- Сканеры — сканер конфигураций, OpenVAS, OWASP ZAP.
Соглашения справочника¶
- Обязательная — без неё компонент не запустится.
- Рекомендуемая — значение по умолчанию работает, но в промышленной среде стоит задать своё.
- Опциональная — включает возможность, которая без неё не работает.
- Колонка «По умолчанию»:
[code]— значение из исходного кода,[chart]— из Helm-чарта. При расхождении приведены оба.
Значения по умолчанию и секреты¶
Значения вроде JWT_SECRET=change-this-secret-key, DB_PASSWORD=securityhub123
и паролей из .env.example и values-poc.yaml — только для ознакомления.
В промышленном режиме они не просто небезопасны — они отвергаются
При APP_ENV=production незаданные JWT_SECRET и DB_PASSWORD прерывают
запуск. Для провайдера keycloak отвергается и пустой секрет, и
буквальное значение по умолчанию change-me.
Это сделано намеренно: установка, забывшая задать секреты, не должна молча подняться с общеизвестными значениями.
Сгенерируйте собственные случайные значения и храните их в менеджере секретов — Vault, External Secrets, SealedSecrets — либо, как минимум, в объектах Secret вашего кластера. Не в git.
Что ужесточается в промышленном режиме¶
У Hub APP_ENV по умолчанию равен production: пустое или незаданное
значение трактуется именно так. Неизвестное значение прерывает запуск, чтобы
опечатка не ослабила защиту незаметно. Для локальной разработки режим
включается явно: APP_ENV=development.
У DomainScope поведение обратное
Режим DomainScope задаётся DOMAINSCOPE_ENV, а при её отсутствии —
APP_ENV. Но промышленным режим считается только при явном значении
production или prod. Пустое или незаданное значение — это не
промышленный режим, и проверка https на адресах, по которым передаются
секреты, не выполняется.
То есть у Hub умолчание строгое, а у DomainScope — мягкое. Разворачивая
DomainScope в бою, задайте DOMAINSCOPE_ENV=production явно: без этого
он молча позволит выгружать находки в Hub по http.
В промышленном режиме:
- адреса, по которым передаются секреты, обязаны использовать
https— провайдер входа, языковая модель, перепроверка через сканер и другие. Иначе запуск прерывается. Полный перечень: Переменные окружения — backend и worker; - обязательные секреты должны быть заданы;
- обход аутентификации служебным токеном разработки недоступен: он требует
одновременно
APP_ENV=developmentиALLOW_DEV_MODE=true.
Применение изменений¶
После изменения переменных окружения:
| Способ развёртывания | Команда |
|---|---|
| Docker Compose | docker compose up -d backend worker |
| Kubernetes | helm upgrade … — поды пересоздадутся |
| Без контейнеров | Перезапуск служб backend и worker |
Учтите, что часть значений читается обоими процессами — backend и worker. Перезапускайте оба, иначе они разойдутся в настройках.
Справочники¶
- REST API — внешние эндпоинты и правила обращения к ним.
- Интерактивный список всех эндпоинтов доступен в самом развёрнутом
экземпляре:
https://<адрес-вашего-hub>/swagger/index.html.