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

Общее описание

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 – блокировка компонентов, не прошедших проверку политик. Ожидание проверки для непросканированных компонентов.