Минимальный путь до работающего продукта (через Docker Compose)¶
В этой статье описан минимальный путь до работающего продукта AppSec.Track, при использовании Docker Compose для его развёртывания (backend, frontend, PostgreSQL, Redis, scanner).
Путь включает три этапа:
- Развёртывание AppSec.Track.
- Подключение Track.Feed — база уязвимостей (обязательно).
- Интеграция с 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. Настройте сервис данных¶
- В AppSec.Track откройте Настройки → Состояние системы → Сервис данных.
- Заполните поля:
| Поле | Значение |
|---|---|
| Адрес | https://feed.appsec.global |
| Токен | Токен из комплекта поставки |
- Нажмите Проверить подключение — должно появиться сообщение об успехе.
- Нажмите Сохранить.
Резервный адрес (опционально): 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¶
Общий шаг для обоих вариантов:
- Откройте
http://<IP-хоста>:8070и войдите под учётной записью администратора. - Выберите Репозитории → Добавить.
- Укажите имя менеджера репозиториев и нажмите Создать.
- Выберите созданный менеджер → вкладка Настройки → Токен → Сгенерировать токен.
- Скопируйте и сохраните токен — он понадобится при настройке плагина или 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¶
- В Nexus откройте Settings → System → Capabilities → Create capability.
- Выберите OSA Firewall Configuration.
-
Заполните параметры:
Параметр Значение 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 По необходимости — удалять заблокированные компоненты -
Нажмите Save.
Шаг A.4. Активируйте менеджер репозиториев в AppSec.Track¶
- Загрузите тестовый пакет через Nexus — репозиторий появится в AppSec.Track автоматически.
- В AppSec.Track откройте Репозитории и выберите созданный менеджер.
-
На вкладке Настройки:
- включите переключатель Активен;
- в поле Статус новых репозиториев выберите Активен;
- нажмите Сохранить.
Шаг A.5. Проверьте интеграцию¶
- Загрузите ещё один пакет через Nexus.
- В 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.
Добавьте репозитории:
- Импорт из менеджера — укажите URL Nexus и нажмите Импорт репозиториев.
- Вручную — на вкладке Репозитории укажите имя, 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¶
- Загрузите тестовый пакет через OSA Firewall — репозиторий появится в AppSec.Track автоматически.
- В AppSec.Track откройте Репозитории и выберите созданный менеджер.
-
На вкладке Настройки:
- включите переключатель Активен;
- в поле Статус новых репозиториев выберите Активен;
- нажмите Сохранить.
Шаг B.10. Проверьте интеграцию¶
- Загрузите ещё один пакет через OSA Firewall.
- В AppSec.Track откройте менеджер репозиториев → вкладка История запросов — запросы должны появиться в логе.
- В OSA Firewall откройте Статистика запросов — должны отображаться обработанные и заблокированные компоненты.
При блокировке компонента OSA Firewall вернёт страницу 403 Компонент заблокирован.