Skip to content

Развёртывание базы уязвимостей

WARNING

Развёртывание локальной базы уязвимостей выполняется отдельно и не является обязательным. Контур требуется для изолированных сред и инсталляций, где данные об уязвимостях должны сопровождаться локально.

Эта страница описывает состав и порядок запуска vulnerability-контура через файл compose/vulndb/docker-compose.prod.vulndb.yml. Данные действия доступны через утилиту scripts/nrunnerctl

Что входит в развёртку

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

СервисНазначение
dbPostgreSQL БД vulnerability-сервиса
db-migrateОднократное выполнение миграций БД уязвимостей
api-serviceHTTP API сервиса уязвимостей

Scheduler в текущем compose-файле присутствует как отключённый блок и штатной командой не запускается.

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

Создайте рабочий env-файл:

bash
cp compose/vulndb/env.vulndb.example compose/vulndb/env.vulndb

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

ПеременнаяЧто задать перед запуском
VULN_API_HTTP_PORTВнешний HTTP-порт api-service, если 8081 не подходит.
VULN_DB_PUBLISHED_PORTВнешний порт PostgreSQL БД уязвимостей, если публикация порта требуется.
VULN_DB_PASSWORDПароль встроенной БД уязвимостей.
VULN_DUMP_DIRКаталог с дампами внутри контейнера, если стандартный путь не подходит.
VULN_REMOTE_URLВнешний URL удалённой vulnerability-базы, если используется синхронизация или pull из внешнего источника.
VULN_IMPOT_DUMPУкащание на название файла в директории dumps для импорта файла sql дампа

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

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

  • VULN_API_HTTP_PORT:VULN_SERVICE_PORT для HTTP API;
  • VULN_DB_PUBLISHED_PORT:VULN_DB_PORT для PostgreSQL.

По умолчанию значения из шаблона:

  • 8081 -> 8081.
  • 5432 -> 5432.

Шаг 3. Запустите контур

Выполните запуск из директории compose/vulndb: Создайте директорию compose/vulndb/dumps

shell
mkdir -p compose/vulndb/dumps

Для начала необходимо скопировать env файл (если не был создан при помощи CLI утилиты).

bash
cp compose/vulndb/env.vulndb.example compose/vulndb/env.vulndb

Затем выполните команду для первого запуска:

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

При первом запуске (профиль init) Docker Compose:

  • создаёт постоянные тома;
  • запускает db;
  • выполняет db-migrate;
  • выполняет db-import-dump;
  • запускает api-service.

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

bash
cd compose/vulndb

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

В списке отобразится состояние сервисов (healthy/unhealthy/restarting и т.д.)

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

bash
cd compose/vulndb

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

Шаг 5. Восстановление базы из дампа

При запуске из профиля import БД автоматически заполнится данными из файла дампа. Для ручного импорта следуйте следующим шагам

WARNING

Получение данных для заполнения БД Уязвимостей производится из архива с преждевременным оповещением Производителя для предоставления доступа к архиву.

Полученный дамп базы разместите в директории compose/vulndb/dumps. Для

Первоначально необходимо войти в окружение контейнера с помощью следующей команды из директории развёртки:

bash
  docker compose -f "compose/vulndb/docker-compose.prod.vulndb.yml" exec -it db bash

Внутри контейнера БД db выполните команду с изменением пути до sql файла дампа внутри контейнера.

bash
  pg_restore --username "$VULN_DB_USER" --dbname "$VULN_DB_NAME" --clean --if-exists --no-owner --no-privileges /dumps/<путь_до_файла_дампа>

После восстановления проверьте логи запуска:

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

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

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

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

Если nrunner-server разворачивается отдельно, в compose/main/env.server нужно указать внешний адрес vulnerability API, например:

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

По умолчанию переменная ссылается на публичный источник уязвимостей Производителя.

env
VULN_SERVICE_URL=https://vulndb.nrunner.ru

Проверка после запуска

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

  1. Убедиться, что api-service проходит readiness.
  2. Проверить логи api-service на отсутствие ошибок подключения к PostgreSQL.
  3. Если nrunner-server уже развёрнут, проверить доступность VULN_SERVICE_URL с его стороны.

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

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

bash
cd compose/vulndb

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

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

bash
cd compose/vulndb

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

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