Общее описание¶
OSA Proxy (repo-manager-proxy) — это прокси-сервис, выступающий посредником между пакетными менеджерами и их удалёнными репозиториями. Он интегрируется с платформой CodeScoring и обеспечивает автоматическое сканирование загружаемых компонентов и блокировку небезопасных пакетов в соответствии с политиками безопасности.
Сервис перехватывает запросы, выполняемые пакетными менеджерами, отправляет их в исходные репозитории, анализирует полученные пакеты, модифицирует ответы и управляет доступом к компонентам.
В основе сервиса используется асинхронная модель обработки и механизм автоматических повторов при временных ошибках.
Поддерживаемые пакетные менеджеры¶
OSA Proxy обрабатывает запросы к следующим репозиториям:
- Maven Central (
https://repo1.maven.org/maven2
) - NPM Registry (
https://registry.npmjs.org
) - PyPI (
https://pypi.org
) - NuGet V3 (
https://api.nuget.org
)
Поддержка альтернативных репозиториев
Сервис также поддерживает альтернативные репозитории, реализующие официальные спецификации соответствующего пакетного менеджера (например Nexus Repository и JFrog Artifactory).
Основные возможности¶
Сканирование пакетов¶
Для каждой экосистемы реализованы два уровня сканирования:
- Сканирование манифестов — анализ и исключение заблокированных политиками безопасности версий из манифеста
- Сканирование пакетов — анализ загружаемых файлов пакета
Блокировка небезопасных компонентов¶
Если компонент нарушает правила политики безопасности:
- небезопасные версии исключаются из списка доступных в манифесте;
- скачивание соответствующих архивов блокируется;
- возвращается настраиваемый код состояния с сообщением о причине блокировки.
Модификация ответов¶
OSA Proxy автоматически модифицирует ответы от оригинальных репозиториев:
- перенаправляет все URL;
- удаляет заблокированные версии из метаданных;
- пересчитывает контрольные суммы изменённых манифестов, чтобы сохранить корректность формата.
Режимы работы¶
Поведение сканирования пакетов регулируется параметром work-mode
. В зависимости от выбранного значения меняется логика обработки сканирования, ожидания и блокировки. Поддерживаются следующие режимы:
warmup
– загрузка данных в кэш CodeScoring без блокировки компонентов;spectator
– загрузка данных в кэш CodeScoring без блокировки компонентов, сохранение результатов запросов компонентов в платформе;moderate
– блокировка компонентов, не прошедших проверку политик. Разрешена загрузка непросканированных компонентов;strict
– блокировка компонентов, не прошедших проверку политик. Запрещена загрузка непросканированных компонентов;strict_wait
– блокировка компонентов, не прошедших проверку политик. Ожидание проверки для непросканированных компонентов.