Развёртывание 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-файл:
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, поэтому базовый запуск выполняется так:
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:
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. Проверьте состояние контейнеров
VULNDB_ENV_FILE=./env.vulndb \
docker compose \
--env-file ./env.vulndb \
-f docker-compose.prod.vulndb.yml \
psЕсли нужно просмотреть API-логи:
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, например:
VULN_SERVICE_URL=http://vulndb.example.com:8081Что проверить после запуска
Рекомендуемый smoke test:
- Убедиться, что
vuln-apiпроходит readiness. - Проверить логи
vuln-apiна отсутствие ошибок подключения кvuln-postgres. - Если включён
master-sync, убедиться, чтоvuln-schedulerстартовал с правильной timezone, cron и источниками данных. - Если
netrunner-serverуже развёрнут, проверить доступностьVULN_SERVICE_URLс его стороны.
Обновление и остановка
Обновить контур:
VULNDB_ENV_FILE=./env.vulndb \
docker compose \
--env-file ./env.vulndb \
-f docker-compose.prod.vulndb.yml \
up -d --buildОстановить контур:
VULNDB_ENV_FILE=./env.vulndb \
docker compose \
--env-file ./env.vulndb \
-f docker-compose.prod.vulndb.yml \
down