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 включает несколько составляющих.
-
Настройка доступа в пользовательский интерфейс.
OSA Firewall запрашивает логин/пароль при входе. Учетные данные задаются при старте сервиса через переменные окружения.
-
Настройка интеграции с AppSec.Track.
В OSA Firewall задаются:
- Адрес AppSec.Track.
- Токен доступа.
-
Параметры, которые задаются через переменные окружения.
| Переменная | Значение по умолчанию | Описание |
|---|---|---|
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 содержит следующие настройки:
-
Статус подключения к Track API (Connected / Authentication failed / Connection failed).
-
URL Track API - адрес AppSec.Track.
-
API токен - токен доступа к AppSec.Track.
-
Поведение - в интерфейсе доступны настройки, соответствующие логике плагина:
- Режим карантина (Quarantine mode) — включить/отключить режим карантина (блокировку загрузки при нарушении политик). При отключенной опции проверка будет работать в режиме аудита, т.к. будет выполняться анализ пакетов, но блокироваться они не будут.
- Блокировать при ошибках API (Fail on API errors) - поведение при недоступности AppSec.Track / ошибках API. При включении данной опции система не будет работать при ошибках API. Опция позволяет включить/отключить режим блокировки загрузки любого компонента при недоступности AppSec.Track.
- Разрешить небезопасный SSL (Allow insecure SSL) - проверять или не проверять SSL-сертификаты при подключении к AppSec.Track API.
-
Менеджер репозиториев:
- URL менеджера репозиториев (для пути /).
- Учетные данные для менеджера репозиториев (используются при импорте, опциональный параметр) - Имя пользователя и Пароль.
-
Кнопки:
- Сохранить настройки OSA Firewall.
- Импорт репозиториев из подключенного по указанному выше URL менеджера репозиториев.
- Очистить все репозитории - удаление ранее подключенных репозиториев.
-
Переключение интерфейса с русского языка на английский и обратно с помощью кнопок EN и RU.
Репозитории¶
Раздел Репозитории содержит форму для добавления репозиториев и список уже добавленных репозиториев.
Для добавления одного репозитория необходимо в форме для добавления репозиториев:
- Указать Имя репозитория.
- Указать URL репозитория.
- Выбрать Тип репозитория.
- Нажать на кнопку Добавить.
Вновь добавленный репозиторий появится в списке. Если режим карантина выключен, это будет просто прокси. Если режим карантина включен, то AppSec.Track начнет проверять эти пакеты и разрешать или блокировать их загрузку.
Для добавления репозиториев из менеджера репозиториев необходимо:
- Настроить подключение менеджера репозиториев в разделе Конфигурация Track API.
- Нажать на кнопку Импорт репозиториев.
Репозитории с различными форматами и настройками из указанного менеджера репозиториев будут загружены. После этого выдача пакетов из импортированных репозиториев будет проходить через 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.
