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

Требования

Вычислительные ресурсы

Расчёт мощности, значения из поставляемых чартов и ориентировочные конфигурации для пилота и промышленной эксплуатации вынесены на отдельную страницу: Расчёт ресурсов.

Коротко, чтобы прикинуть до чтения: для ознакомительной установки со всем Hub и DomainScope без сканеров-обёрток достаточно 4 ядер, 8 ГиБ памяти и 60 ГиБ диска. OpenVAS требует существенно больше — прежде всего диска под базы описаний уязвимостей.

Операционная система

Компоненты поставляются контейнерными образами на базе Alpine Linux и не предъявляют требований к конкретному дистрибутиву узла — достаточно работающего Docker Engine или Kubernetes. Ниже перечислены варианты, на которые ориентирована поставка.

Система Версия Пригодность
Ubuntu 22.04 LTS, 24.04 LTS Пригодна для промышленной эксплуатации
Debian 12 Пригодна для промышленной эксплуатации
RHEL, Rocky, AlmaLinux 9 Пригодна для промышленной эксплуатации
macOS 14 и новее Только для ознакомления
Windows — Не поддерживается

Испытаний совместимости с конкретными сборками мы не проводили и не заявляем. Требование одно: поддерживаемая версия Docker Engine либо Kubernetes.

Kubernetes

  • k3s v1.30+ (рекомендуется для on-premise одно-нодовых кластеров)
  • Vanilla k8s v1.28+ — поддерживается
  • OpenShift — не проверялось

Программное обеспечение

Software Минимум Где нужно
Docker Engine 24.0+ Compose deploy, dev
Docker Compose v2.20+ (plugin) Compose deploy
Helm 3.13+ K8s deploy
kubectl соответствует k8s K8s deploy
make GNU 4.0+ Bare-metal/dev
Go 1.26+ Только для сборки из исходников
Bun 1.0+ Только для сборки frontend из исходников
Git 2.30+ Для CI и сборки

Сетевые требования

Порты, открытые наружу (production)

Порт Назначение Куда смотрит
443 Веб-UI и API (через nginx/traefik) Все пользователи
80 HTTP → редирект на 443 Все пользователи

Внутренние порты (между сервисами)

Порт Сервис Кто обращается
5432 PostgreSQL Hub backend, worker
5432 PostgreSQL DomainScope DomainScope. Отдельный экземпляр, с базой Hub не разделяется
8082 Backend Hub frontend, внешние клиенты, загружающие отчёты
3000 Frontend обратный прокси
8083 Провайдер SSO, если разворачивается рядом backend, браузер через обратный прокси
8084 Grafana, если разворачивается администратор
9390 Управляющий интерфейс OpenVAS DomainScope
8080 Служба OWASP ZAP DomainScope

В образе backend слушает порт 8080, а поставляемый чарт переопределяет его на 8082. Если разворачиваете вручную — сверяйтесь со значением SERVER_PORT.

Исходящий трафик

Адресат Зачем Можно ли через прокси
Docker Hub / GHCR Образы Да (HTTPS_PROXY)
Keycloak realm OIDC discovery Если Keycloak внешний
Трекер задач (Jira, GitHub, Trello) Заведение и ведение задач плагином Да
Telegram, Slack, Teams, MAX, Mattermost Уведомления канальными плагинами Да
Реестр плагинов и каталог Установка и обновление плагинов Да
NetBox Sync периметра Да
LLM провайдер AI-триаж Да (LLM_BASE_URL)
Nuclei templates Обновление Да
OpenVAS feeds Обновление CVE-базы Да

Air-gapped окружение: возможно, но требует ручной загрузки образов в private-registry (например, Harbor) и зеркалирования Nuclei/OpenVAS feeds. Плагины в таком контуре ставятся из файла либо из собственного зеркала каталога.

Доменные имена и TLS

Production

Для боевого стенда понадобятся следующие FQDN (примеры для домена hub.example.com):

FQDN Назначение
hub.example.com Основной UI Hub
keycloak.hub.example.com Keycloak (или путь /auth на основном домене)
openvas.hub.example.com (опц.) OpenVAS Web UI
domainscope.hub.example.com (опц.) DomainScope API

Сертификаты

  • Let's Encrypt — поддерживается через cert-manager в K8s или certbot в bare-metal
  • Внутренний CA — поддерживается; примонтируйте корневые сертификаты в /etc/ssl/certs и установите SSL_CERT_DIR (Go), NODE_EXTRA_CA_CERTS (frontend build)
  • Self-signed — допустимо только для dev. На production будут проблемы с OIDC discovery и webhook delivery.

Postgres

  • PostgreSQL 15 и новее. Поставляемые манифесты разворачивают версию 15; на более старых версиях миграции не проверялись.
  • Расширение uuid-ossp включается самой миграцией — заранее ничего делать не нужно.
  • Сессия базы работает в UTC, все колонки времени — с часовым поясом.
  • Рекомендуемые параметры для промышленной эксплуатации (отправная точка, а не результат измерений):
shared_buffers = 2GB
effective_cache_size = 6GB
maintenance_work_mem = 512MB
work_mem = 32MB
max_connections = 200
  • Регулярный VACUUM ANALYZE — желательно через autovacuum (включён по умолчанию)

Инфраструктура резервного копирования

Для production обязательны:

  1. Снэпшоты PostgreSQL — ежедневно, ретенция минимум 14 дней
  2. Volume snapshots для storage/ (отчёты, артефакты) — ежедневно
  3. Secret backup — Vault snapshots
  4. Backup-тест — раз в квартал восстановите из backup на staging и проверьте, что Hub стартует и видит данные

Подробнее: Эксплуатация.

Что нужно подготовить ДО установки

Обязательно:

  • [ ] Виртуальная машина или кластер Kubernetes с ресурсами из Расчёта ресурсов
  • [ ] Установлены и обновлены Docker либо Helm и kubectl
  • [ ] Записи DNS прописаны и разрешаются
  • [ ] Есть доступ к реестру образов, откуда будут скачиваться компоненты
  • [ ] Проверено, что нужный тег существует у всех компонентов, которые разворачиваете — теги публикуются независимо, полный набор есть не для каждой версии; см. Обновления
  • [ ] Сгенерированы собственные значения для JWT_SECRET, DB_PASSWORD и пароля первого администратора. Значения по умолчанию в промышленном режиме отвергаются, и запуск прерывается
  • [ ] Решено, где хранить секреты: Vault, External Secrets, SealedSecrets или обычные объекты Secret. Не в git
  • [ ] Согласован план резервного копирования — база и том с отчётами

Если применимо:

  • [ ] Сертификаты TLS либо учётная запись Let's Encrypt — для режимов selfsigned и letsencrypt
  • [ ] Внешний провайдер входа по OIDC — если не хотите локальные учётные записи
  • [ ] Внешняя PostgreSQL с пустыми базами раздельно для Hub и DomainScope — общая база не используется
  • [ ] Параметры SMTP, бот Telegram или MAX, входящий адрес Slack, Teams или Mattermost — если нужны уведомления. Каналы ставятся плагинами
  • [ ] Учётная запись в трекере с правом создавать задачи — если нужен учёт задач. Провайдеры тоже ставятся плагинами
  • [ ] Решение о том, разрешать ли исполнение нативных плагинов: без него каналы уведомлений видны в каталоге, но не ставятся. Провайдеры задач этого разрешения не требуют — им нативный режим запрещён
  • [ ] Согласовано, что активное сканирование периметра допустимо — если разворачиваете DomainScope с OpenVAS или OWASP ZAP

После этого переходите к выбранному способу развёртывания, а затем — к первым шагам.

Перед тем как выбирать способ развёртывания, полезно посмотреть Архитектуру — из чего состоит решение и что из этого обязательно, — и Сценарии применения, где показано, что входит в поставку, а что вы разворачиваете сами.