Развёртывание базы уязвимостей
WARNING
Развёртывание локальной базы уязвимостей выполняется отдельно и не является обязательным. Контур требуется для изолированных сред и инсталляций, где данные об уязвимостях должны сопровождаться локально.
Эта страница описывает состав и порядок запуска vulnerability-контура через файл compose/vulndb/docker-compose.prod.vulndb.yml. Данные действия доступны через утилиту scripts/nrunnerctl
Что входит в развёртку
Контур vulndb поднимает:
| Сервис | Назначение |
|---|---|
db | PostgreSQL БД vulnerability-сервиса |
db-migrate | Однократное выполнение миграций БД уязвимостей |
api-service | HTTP API сервиса уязвимостей |
Scheduler в текущем compose-файле присутствует как отключённый блок и штатной командой не запускается.
Шаг 1. Подготовка переменных окружения
Создайте рабочий env-файл:
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
mkdir -p compose/vulndb/dumpsДля начала необходимо скопировать env файл (если не был создан при помощи CLI утилиты).
cp compose/vulndb/env.vulndb.example compose/vulndb/env.vulndbЗатем выполните команду для первого запуска:
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. Проверьте состояние контейнеров
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-логи:
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. Для
Первоначально необходимо войти в окружение контейнера с помощью следующей команды из директории развёртки:
docker compose -f "compose/vulndb/docker-compose.prod.vulndb.yml" exec -it db bashВнутри контейнера БД db выполните команду с изменением пути до sql файла дампа внутри контейнера.
pg_restore --username "$VULN_DB_USER" --dbname "$VULN_DB_NAME" --clean --if-exists --no-owner --no-privileges /dumps/<путь_до_файла_дампа>После восстановления проверьте логи запуска:
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, например:
VULN_SERVICE_URL=http://vulndb.example.com:8081По умолчанию переменная ссылается на публичный источник уязвимостей Производителя.
VULN_SERVICE_URL=https://vulndb.nrunner.ruПроверка после запуска
Рекомендуемый smoke test:
- Убедиться, что
api-serviceпроходит readiness. - Проверить логи
api-serviceна отсутствие ошибок подключения к PostgreSQL. - Если
nrunner-serverуже развёрнут, проверить доступностьVULN_SERVICE_URLс его стороны.
Обновление и остановка
Обновить контур:
cd compose/vulndb
VULNDB_ENV_FILE=./env.vulndb \
docker compose \
--env-file ./env.vulndb \
-f docker-compose.prod.vulndb.yml \
up -dОстановить контур:
cd compose/vulndb
VULNDB_ENV_FILE=./env.vulndb \
docker compose \
--env-file ./env.vulndb \
-f docker-compose.prod.vulndb.yml \
down