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

OSA Firewall

Начиная с версии 4.2.0, в состав Системы входит OSA Firewall.

OSA Firewall — это внешний прокси-шлюз для практики OSA, который реализует логику перехвата запросов на загрузку пакетов в отдельном сервисе. Проверка зависимостей и политика принятия решения остаются в AppSec.Track, а OSA Firewall обеспечивает:

  • Проксирование запросов к upstream-репозиториям.
  • Перехват скачивания пакетов.
  • Обращение в AppSec.Track за вердиктом.
  • Блокировку/разрешение выдачи пакета в соответствии с политикой.
  • Универсальный подход для разных типов репозиториев и сценариев, включая работу с репозиториями без использования Nexus Repository Manager или JFrog Artifactory.

OSA Firewall может проксировать обычный трафик к репозиторию, но включается в «OSA-логику» только при скачивании пакета: как только происходит запрос на выдачу компонента, Firewall перехватывает параметры пакета и обращается в AppSec.Track.

OSA Firewall является альтернативной реализацией, но не заменой для существующих плагинов Track.Plugin.

Ограничения текущей версии OSA Firewall:

  • OSA Firewall не повторяет полностью функциональность плагинов.
  • Поддерживаемые экосистемы:
    • Java.
    • npm.
    • PyPI.
    • NuGet.
  • Docker-образы в текущей версии не поддерживаются (отсутствует проверка контейнеров).
  • Сканирование всего репозитория в текущей версии недоступно.

Архитектура

Архитектура OSA Firewall приведена на рисунке ниже:

Компоненты архитектуры и их роли:

  • OSA Firewall — сервис-прокси (шлюз):

    • Принимает запросы на загрузку зависимостей.
    • Проксирует запросы в Nexus или напрямую в upstream-репозиторий.
    • Извлекает идентификатор пакета при попытке скачивания.
    • Запрашивает вердикт в AppSec.Track.
    • Применяет решение AppSec.Track (разрешение скачивания или блокировка).
  • AppSec.Track осуществляет проверки скачиваемых пакетов:

    • Выполняет анализ пакета.
    • Принимает решение в соответствии с политиками.
  • Репозиторий-источник:

    • Nexus Repository Manager, JFrog Artifactory или иной менеджер репозиториев.
    • Upstream-репозиторий, например PyPI (в режиме работы без менеджера репозиториев).
  • Redis - хранилище состояния:

    • Хранит настройки OSA Firewall.
    • Хранит результаты/кеши проведенных проверок.
    • При перезапуске состояние OSA Firewall считывается из Redis.

Настройка

Настройка OSA Firewall включает несколько составляющих.

  1. Настройка доступа в пользовательский интерфейс.

    OSA Firewall запрашивает логин/пароль при входе. Учетные данные задаются при старте сервиса через переменные окружения.

  2. Настройка интеграции с AppSec.Track.

    В OSA Firewall задаются:

    • Адрес AppSec.Track.
    • Токен доступа.
  3. Параметры, которые задаются через переменные окружения.

Переменная Значение по умолчанию Описание
SERVER_PORT 6080 Порт сервера
PROXY_TARGET_URL (пусто) Базовый URL upstream (Nexus/Artifactory). Если пусто — редирект на настройки
TRACK_API_URL https://track-dev…/api URL AppSec.Track API
TRACK_API_TOKEN (токен по умолчанию) Bearer-токен для Track
TRACK_INSECURE_SSL false Отключить проверку TLS
TRACK_QUARANTINE true Блокировать компоненты в карантине
TRACK_FAIL_ON_ERRORS true Блокировать при недоступности Track
REDIS_HOST localhost Redis-хост
REDIS_PORT 6379 Redis-порт
LOG_LEVEL INFO Уровень логирования

Пользовательский интерфейс

Пользовательский интерфейс OSA Firewall содержит два раздела:

  • Конфигурация Track API.
  • Репозитории.

Конфигурация Track API

Раздел Конфигурация Track API содержит следующие настройки:

  1. Статус подключения к Track API (Connected / Authentication failed / Connection failed).

  2. URL Track API - адрес AppSec.Track.

  3. API токен - токен доступа к AppSec.Track.

  4. Поведение - в интерфейсе доступны настройки, соответствующие логике плагина:

    • Режим карантина (Quarantine mode) — включить/отключить режим карантина (блокировку загрузки при нарушении политик). При отключенной опции проверка будет работать в режиме аудита, т.к. будет выполняться анализ пакетов, но блокироваться они не будут.
    • Блокировать при ошибках API (Fail on API errors) - поведение при недоступности AppSec.Track / ошибках API. При включении данной опции система не будет работать при ошибках API. Опция позволяет включить/отключить режим блокировки загрузки любого компонента при недоступности AppSec.Track.
    • Разрешить небезопасный SSL (Allow insecure SSL) - проверять или не проверять SSL-сертификаты при подключении к AppSec.Track API.
  5. Менеджер репозиториев:

    • URL менеджера репозиториев (для пути /).
    • Учетные данные для менеджера репозиториев (используются при импорте, опциональный параметр) - Имя пользователя и Пароль.
  6. Кнопки:

    • Сохранить настройки OSA Firewall.
    • Импорт репозиториев из подключенного по указанному выше URL менеджера репозиториев.
    • Очистить все репозитории - удаление ранее подключенных репозиториев.
  7. Переключение интерфейса с русского языка на английский и обратно с помощью кнопок EN и RU.

Репозитории

Раздел Репозитории содержит форму для добавления репозиториев и список уже добавленных репозиториев.

Для добавления одного репозитория необходимо в форме для добавления репозиториев:

  1. Указать Имя репозитория.
  2. Указать URL репозитория.
  3. Выбрать Тип репозитория.
  4. Нажать на кнопку Добавить.

Вновь добавленный репозиторий появится в списке. Если режим карантина выключен, это будет просто прокси. Если режим карантина включен, то AppSec.Track начнет проверять эти пакеты и разрешать или блокировать их загрузку.

Для добавления репозиториев из менеджера репозиториев необходимо:

  1. Настроить подключение менеджера репозиториев в разделе Конфигурация Track API.
  2. Нажать на кнопку Импорт репозиториев.

Репозитории с различными форматами и настройками из указанного менеджера репозиториев будут загружены. После этого выдача пакетов из импортированных репозиториев будет проходить через OSA-проверку (при включенном режиме карантина).

Переход в менеджер репозиториев

При работе с OSA Firewall существует возможность перейти в менеджер репозиториев, например Nexus Repository Manager:

  • https://<osa_firewall_address>/osa-firewall-proxy/settings - здесь будет отображаться пользовательский интерфейс OSA Firewall.
  • https://<osa_firewall_address> - а здесь будет отображаться интерфейс Nexus Repository Manager. Пока не инициируется загрузка пакета, OSA Firewall в действие не вступает. Но при попытке загрузить пакет будет осуществляться перехват названия пакета и обращение в AppSec.Track.