Skip to content

Развёртывание vulndb

DANGER

Данная страница описывает развертку БД уязвимостей. Данный пункт необходим только в структурах без доступа в сеть Интернет.

Эта страница описывает пошаговый запуск vulnerability-контура через docker-compose.prod.vulndb.yml.

Что входит в контур

Контур vulndb поднимает:

  • vuln-postgres - базу данных vulnerability-сервиса;
  • vuln-migrate - one-shot миграции БД;
  • vuln-api - HTTP API сервиса уязвимостей;
  • vuln-scheduler - опциональный фоновый scheduler через профиль master-sync.

Шаг 1. Подготовка переменных окружения

Из корня stack-репозитория создайте рабочий env-файл:

bash
cp env.vulndb.example env.vulndb

Минимально проверьте:

ПеременнаяЧто задать перед запуском
VULN_API_HTTP_PORTВнешний HTTP-порт vuln-api, если 8081 не подходит.
NRUNNER_NETWORK_NAMEИмя общей Docker-сети. Если server + client и vulndb должны видеть друг друга по внутренним именам, значение должно совпадать с env.server.
VULN_DB_PASSWORDПароль встроенной БД уязвимостей.
VULN_DUMP_DIRКаталог с дампами внутри контейнера, если стандартный путь не подходит.
VULN_REMOTE_URLВнешний URL удалённой vulnerability-базы, если используется синхронизация или pull из внешнего источника.

Если будет использоваться scheduler, также проверьте VULN_MASTER_SYNC_*, BDU_*, NVD_* и EPSS_SYNC_URL.

Шаг 2. Проверьте публикуемый порт

По умолчанию compose публикует:

  • VULN_API_HTTP_PORT:VULN_SERVICE_PORT.

Типовое значение из шаблона:

  • 8081 -> 8081.

Шаг 3. Соберите и запустите контур

vuln-api в текущем stack-репозитории собирается локально из ./netrunner-vuln-storage, поэтому базовый запуск выполняется так:

bash
VULNDB_ENV_FILE=./env.vulndb \
docker compose \
  --env-file ./env.vulndb \
  -f docker-compose.prod.vulndb.yml \
  up -d --build

При первом запуске compose:

  • поднимет vuln-postgres;
  • выполнит vuln-migrate;
  • соберёт и запустит vuln-api.

Шаг 4. При необходимости включите scheduler

Если нужен фоновый импорт и экспорт vulnerability-данных, отдельно включите профиль master-sync:

bash
VULNDB_ENV_FILE=./env.vulndb \
docker compose \
  --env-file ./env.vulndb \
  -f docker-compose.prod.vulndb.yml \
  --profile master-sync \
  up -d vuln-scheduler

Если автоматическая синхронизация не нужна, достаточно базового запуска без профиля.

Шаг 5. Проверьте состояние контейнеров

bash
VULNDB_ENV_FILE=./env.vulndb \
docker compose \
  --env-file ./env.vulndb \
  -f docker-compose.prod.vulndb.yml \
  ps

Если нужно просмотреть API-логи:

bash
VULNDB_ENV_FILE=./env.vulndb \
docker compose \
  --env-file ./env.vulndb \
  -f docker-compose.prod.vulndb.yml \
  logs -f vuln-api

Шаг 6. Проверьте published endpoint

После старта должен отвечать:

  • http://<host>:<VULN_API_HTTP_PORT>/api/v1/readiness.

Если netrunner-server разворачивается отдельно и не использует общую Docker-сеть, в env.server нужно указать внешний адрес vuln-api, например:

env
VULN_SERVICE_URL=http://vulndb.example.com:8081

Что проверить после запуска

Рекомендуемый smoke test:

  1. Убедиться, что vuln-api проходит readiness.
  2. Проверить логи vuln-api на отсутствие ошибок подключения к vuln-postgres.
  3. Если включён master-sync, убедиться, что vuln-scheduler стартовал с правильной timezone, cron и источниками данных.
  4. Если netrunner-server уже развёрнут, проверить доступность VULN_SERVICE_URL с его стороны.

Обновление и остановка

Обновить контур:

bash
VULNDB_ENV_FILE=./env.vulndb \
docker compose \
  --env-file ./env.vulndb \
  -f docker-compose.prod.vulndb.yml \
  up -d --build

Остановить контур:

bash
VULNDB_ENV_FILE=./env.vulndb \
docker compose \
  --env-file ./env.vulndb \
  -f docker-compose.prod.vulndb.yml \
  down

Документация NRunner