Перейти к содержанию

Конфигурация: обзор и соглашения

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.