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

Минимальный путь до работающего продукта (через Docker Compose)

В этой статье описан минимальный путь до работающего продукта AppSec.Track, при использовании Docker Compose для его развёртывания (backend, frontend, PostgreSQL, Redis, scanner).

Путь включает три этапа:

  1. Развёртывание AppSec.Track.
  2. Подключение Track.Feed — база уязвимостей (обязательно).
  3. Интеграция с Nexus — Track.Plugin или OSA Firewall.

Требования

  • Docker Engine 20.10+.
  • Docker Compose v2 (docker compose или docker-compose).
  • Свободный порт 8070 (веб-интерфейс).
  • Учётные данные registry.appsec.global для скачивания архива и docker login (выдаются при получении лицензии).
  • Токен Track.Feed из комплекта поставки.
  • Сетевой доступ к https://feed.appsec.global.
  • Nexus Repository Manager (см. раздел «Интеграция с менеджером репозиториев»).
  • Минимум ~6 GB RAM на хосте.

Этап 1. Развёртывание AppSec.Track

Архив содержит готовый файл .env с образами и параметрами по умолчанию. Все команды после распаковки выполняйте из корневого каталога архива.

Шаг 1. Скачайте архив

export REGISTRY_USER="<login>"
export REGISTRY_PASS="<password>"
export VERSION="4.5.0"

curl -u "${REGISTRY_USER}:${REGISTRY_PASS}" -fLO \
  "https://registry.appsec.global/repository/appsec.track-maven-release/appsec-track/track-compose/${VERSION}/track-compose-${VERSION}-regular.zip"

Шаг 2. Распакуйте архив

unzip track-compose-4.5.0-regular.zip -d appsec-track
cd appsec-track

Шаг 3. Авторизуйтесь в Docker registry и скачайте образы

Образы загружаются из registry.appsec.global. Перед первым запуском выполните вход:

docker login registry.appsec.global

Введите логин и пароль, выданные для доступа к registry. Успешный вход подтверждается сообщением Login Succeeded. Скачайте образы:

docker compose pull

Шаг 4. Настройте переменные окружения

Отредактируйте .env — смените пароли и укажите base_url:

nano .env
Переменная Описание
pgsql_password Пароль пользователя БД
pgsql_admin_password Пароль суперпользователя PostgreSQL
redis_password Пароль Redis
base_url http://<IP-хоста>:8070
nexus_url URL Nexus (для scanner, если используется)

Шаг 5. Подготовьте рабочие каталоги

Скрипт создаёт директории для данных и выставляет права для контейнеров:

sudo chmod +x ./install/install.sh
sudo ./install/install.sh

Будут созданы каталоги: postgresql/data, redis/data, sboms, logs/backend, logs/nginx/logs.

Шаг 6. Инициализируйте базу данных

Запустите одноразовую инициализацию БД:

docker compose run --rm \
  -v "$(pwd)/install/init_db.sh:/docker-entrypoint-initdb.d/init_db.sh" \
  appsec-track-db

Дождитесь строки:

LOG:  database system is ready to accept connections

После этого контейнер БД можно остановить (Ctrl+C).

Шаг выполняется один раз при первом развёртывании. При повторном запуске на уже инициализированном томе postgresql/data этот шаг не нужен.

Шаг 7. Запустите стек

docker compose up -d

Проверьте статус:

docker compose ps

Все сервисы должны быть в состоянии running (healthy), кроме случаев, когда healthcheck ещё не прошёл.

Шаг 8. Откройте приложение

Перейдите в браузере в пользовательский интерфейс AppSec.Track по адресу хоста:

http://<IP-хоста>:8070

Учётная запись администратора создана по умолчанию:

Логин admin@localhost
Пароль admin

После первого входа смените пароль.

Этап 2. Подключение Track.Feed

Track.Feed — база данных уязвимостей. Без неё проверка компонентов и политики OSA работать не будут.

Шаг 9. Настройте сервис данных

  1. В AppSec.Track откройте НастройкиСостояние системыСервис данных.
  2. Заполните поля:
Поле Значение
Адрес https://feed.appsec.global
Токен Токен из комплекта поставки
  1. Нажмите Проверить подключение — должно появиться сообщение об успехе.
  2. Нажмите Сохранить.

Резервный адрес (опционально): https://feed2.appsec.global.

Этап 3. Интеграция с менеджером репозиториев

Для полноценной работы OSA свяжите AppSec.Track с менеджером репозиториев (Nexus). Выполняйте шаги после подключения Track.Feed.

Доступны два варианта интеграции:

Вариант A:
Track.Plugin в Nexus
Вариант B:
OSA Firewall (Docker Compose)
Суть Плагин внутри Nexus Прокси-шлюз перед менеджером репозиториев
Трафик разработчиков Напрямую в Nexus Через URL OSA Firewall (Nexus — upstream)
Когда выбирать Классическая интеграция через плагин Docker Compose, нужен шлюз без плагина в Nexus

Шаг 10. Создайте менеджер репозиториев в AppSec.Track

Общий шаг для обоих вариантов:

  1. Откройте http://<IP-хоста>:8070 и войдите под учётной записью администратора.
  2. Выберите РепозиторииДобавить.
  3. Укажите имя менеджера репозиториев и нажмите Создать.
  4. Выберите созданный менеджер → вкладка НастройкиТокенСгенерировать токен.
  5. Скопируйте и сохраните токен — он понадобится при настройке плагина или OSA Firewall.

Далее выберите вариант A или вариант B.


Вариант A: Track.Plugin в Nexus

Установка KAR-плагина непосредственно в Nexus Repository Manager.

Шаг A.1. Скачайте Track.Plugin

Используйте те же учётные данные registry.appsec.global, что и для архива compose. Выберите сборку под версию Nexus:

Версия Nexus Файл
3.20 – 3.69 nexus-osa-track-firewall-plugin-bundle-<version>.kar
3.70 – 3.77 nexus-osa-track-firewall-plugin-bundle-<version>-70.kar

Nexus 3.20 – 3.69:

export REGISTRY_USER="<login>"
export REGISTRY_PASS="<password>"
export VERSION="4.5.0"

curl -u "${REGISTRY_USER}:${REGISTRY_PASS}" -fLO \
  "https://registry.appsec.global/repository/appsec.track-maven-release/osa-track-firewall/nexus-osa-track-firewall-plugin-bundle/${VERSION}/nexus-osa-track-firewall-plugin-bundle-${VERSION}.kar"

Nexus 3.70 – 3.77:

export REGISTRY_USER="<login>"
export REGISTRY_PASS="<password>"
export VERSION="4.5.0"

curl -u "${REGISTRY_USER}:${REGISTRY_PASS}" -fLO \
  "https://registry.appsec.global/repository/appsec.track-maven-release/osa-track-firewall/nexus-osa-track-firewall-plugin-bundle/${VERSION}-70/nexus-osa-track-firewall-plugin-bundle-${VERSION}-70.kar"

Шаг A.2. Установите плагин в Nexus

Скопируйте KAR-файл в каталог deploy на сервере Nexus:

# Nexus 3.20 – 3.69, установленный на хосте
sudo cp nexus-osa-track-firewall-plugin-bundle-${VERSION}.kar /opt/sonatype/nexus/deploy/

# Nexus 3.70 – 3.77, установленный на хосте
sudo cp nexus-osa-track-firewall-plugin-bundle-${VERSION}-70.kar /opt/sonatype/nexus/deploy/

Nexus подхватит плагин автоматически. Дождитесь перезапуска или выполните restart контейнера/сервиса Nexus при необходимости.

Шаг A.3. Настройте OSA Firewall Configuration

  1. В Nexus откройте SettingsSystemCapabilitiesCreate capability.
  2. Выберите OSA Firewall Configuration.
  3. Заполните параметры:

    Параметр Значение
    Track API endpoint http://<IP-хоста>:8070/api/
    Track access token Токен из шага 10

    Рекомендуемые дополнительные параметры:

    Параметр Рекомендация
    Quarantine mode Включить — блокировка загрузки при нарушении политик
    Is fail on API errors По необходимости — блокировать загрузку при недоступности Track
    Do not validate SSL certificates Выключить в production
    Ignore proxy settings Включить, если Nexus обращается к Track напрямую, минуя прокси
    Delete quarantined components По необходимости — удалять заблокированные компоненты
  4. Нажмите Save.

Шаг A.4. Активируйте менеджер репозиториев в AppSec.Track

  1. Загрузите тестовый пакет через Nexus — репозиторий появится в AppSec.Track автоматически.
  2. В AppSec.Track откройте Репозитории и выберите созданный менеджер.
  3. На вкладке Настройки:

    • включите переключатель Активен;
    • в поле Статус новых репозиториев выберите Активен;
    • нажмите Сохранить.

Шаг A.5. Проверьте интеграцию

  1. Загрузите ещё один пакет через Nexus.
  2. В AppSec.Track откройте менеджер репозиториев → вкладка История запросов — запросы должны появиться в логе.

При блокировке компонента Nexus покажет страницу 403 Компонент заблокирован.


Вариант B: OSA Firewall (Docker Compose)

OSA Firewall — альтернативная (не заменяющая) реализация интеграции с менеджером репозиториев. Прокси принимает запросы, при скачивании пакета обращается в AppSec.Track за вердиктом и проксирует трафик в upstream (Nexus, Artifactory или другой репозиторий). Плагин в Nexus устанавливать не нужно.

Как это работает:

  • По адресу http://<host>:6080/ отображается интерфейс upstream-менеджера (например, Nexus).
  • OSA-логика включается только при скачивании пакета — до этого момента трафик просто проксируется.
  • Настройки и кэш проверок хранятся в Redis.
  • Веб-интерфейс OSA Firewall: http://<host>:6080/osa-firewall-proxy/settings.

OSA Firewall не повторяет полностью функциональность Track.Plugin. Сканирование всего репозитория в текущей версии недоступно. Поддерживаются форматы: maven, npm, pypi, docker, apt, yum, raw, go и другие (полный список — в разделе «OSA Firewall»).

Шаг B.1. Скачайте архив OSA Firewall

export REGISTRY_USER="<login>"
export REGISTRY_PASS="<password>"
export VERSION="4.5.0"

curl -u "${REGISTRY_USER}:${REGISTRY_PASS}" -fLO \
  "https://registry.appsec.global/repository/appsec.track-maven-release/appsec-track/track-osa-firewall-compose/${VERSION}/track-osa-firewall-compose-${VERSION}-regular.zip"

Шаг B.2. Распакуйте архив

unzip track-osa-firewall-compose-4.5.0-regular.zip -d osa-firewall-proxy
cd osa-firewall-proxy

Шаг B.3. Подготовьте рабочие каталоги

sudo chmod +x ./install/install.sh
sudo ./install/install.sh

Будут созданы каталоги certs/ (для самоподписанных сертификатов upstream).

Шаг B.4. Авторизуйтесь в Docker registry

docker login registry.appsec.global

Шаг B.5. Настройте переменные окружения

Архив содержит готовый .env. Отредактируйте его:

nano .env
Переменная Описание
PROXY_IMAGE Образ OSA Firewall (версия должна совпадать с VERSION)
ADMIN_USERNAME / ADMIN_PASSWORD Логин/пароль веб-интерфейса OSA Firewall
TRACK_API_URL URL API AppSec.Track
TRACK_API_TOKEN Токен из шага 10
PROXY_TARGET_URL URL Nexus/Artifactory (upstream)
TRACK_QUARANTINE true — блокировка; false — только аудит
TRACK_FAIL_ON_ERRORS Блокировать загрузку при недоступности Track
TRACK_INSECURE_SSL true — отключить проверку TLS к Track (только для тестов)

Пример .env:

PROXY_IMAGE=registry.appsec.global/appsec-track/track-osa-firewall:4.5.0

ADMIN_USERNAME=admin
ADMIN_PASSWORD=<change-me>

TRACK_API_URL=http://<IP-хоста>:8070/api
TRACK_API_TOKEN=<token-from-step-1>
TRACK_QUARANTINE=true
TRACK_FAIL_ON_ERRORS=true
TRACK_INSECURE_SSL=false

PROXY_TARGET_URL=https://nexus.example.com

Для самоподписанных сертификатов upstream положите файлы .crt или .pem в каталог certs/.

Шаг B.6. Запустите OSA Firewall

docker compose up -d

Проверьте статус:

docker compose ps

По умолчанию прокси слушает порт 6080.

Шаг B.7. Настройте OSA Firewall через веб-интерфейс

Откройте:

http://<IP-хоста>:6080/osa-firewall-proxy/settings

Войдите с ADMIN_USERNAME и ADMIN_PASSWORD из .env.

На вкладке Конфигурация Track API проверьте или задайте:

Параметр Описание
URL Track API Адрес API AppSec.Track
API токен Токен из шага 10
Режим карантина Блокировка при нарушении политик
Блокировать при ошибках API Блокировать загрузку при недоступности Track
URL менеджера репозиториев Базовый URL Nexus/Artifactory

Нажмите Сохранить настройки. Статус подключения должен стать Connected.

Добавьте репозитории:

  1. Импорт из менеджера — укажите URL Nexus и нажмите Импорт репозиториев.
  2. Вручную — на вкладке Репозитории укажите имя, URL и тип, нажмите Добавить.

Шаг B.8. Настройте клиентов

Направьте запросы к артефактам через URL OSA Firewall:

# Было (напрямую в Nexus):
https://nexus.example.com/repository/maven-central/...

# Стало (через OSA Firewall):
http://<IP-хоста>:6080/repository/maven-central/...

В settings.xml, .npmrc, pip.conf, Docker registry и других клиентах замените базовый URL Nexus на URL OSA Firewall.

Интерфейс Nexus доступен через http://<IP-хоста>:6080/, скачивание пакетов проходит через проверку AppSec.Track.

Шаг B.9. Активируйте менеджер репозиториев в AppSec.Track

  1. Загрузите тестовый пакет через OSA Firewall — репозиторий появится в AppSec.Track автоматически.
  2. В AppSec.Track откройте Репозитории и выберите созданный менеджер.
  3. На вкладке Настройки:

    • включите переключатель Активен;
    • в поле Статус новых репозиториев выберите Активен;
    • нажмите Сохранить.

Шаг B.10. Проверьте интеграцию

  1. Загрузите ещё один пакет через OSA Firewall.
  2. В AppSec.Track откройте менеджер репозиториев → вкладка История запросов — запросы должны появиться в логе.
  3. В OSA Firewall откройте Статистика запросов — должны отображаться обработанные и заблокированные компоненты.

При блокировке компонента OSA Firewall вернёт страницу 403 Компонент заблокирован.