OSA Proxy Go
OSA Proxy Go — это Go-версия прокси-сервиса для пакетных реестров с проверками CodeScoring OSA. Сервис принимает запросы пакетных менеджеров, проксирует их в upstream-реестры, проверяет манифесты и скачиваемые артефакты, блокирует запрещенные компоненты и отдает служебные endpoints для healthcheck, метрик, Swagger UI и управления кэшем.
Поддерживаемые экосистемы
OSA Proxy Go поддерживает следующие типы реестров:
- npm;
- Composer;
- Maven;
- NuGet;
- PyPI;
- RubyGems;
- Go modules;
- Debian;
- Alpine;
- RPM;
- Docker Registry API v2.
::::note Альтернативные репозитории
OSA Proxy Go может работать не только с публичными реестрами, но и с менеджерами репозиториев, которые реализуют протоколы соответствующих экосистем, например Sonatype Nexus Repository, JFrog Artifactory или CodeScoring.Save. ::::
Основные возможности
Сканирование манифестов и пакетов
Для поддерживаемых экосистем доступны два уровня проверки:
- сканирование манифестов — анализ metadata/индексов пакетов и исключение заблокированных политиками версий из ответа пакетному менеджеру;
- сканирование пакетов — проверка скачиваемых архивов, бинарных пакетов или образов перед передачей клиенту.
Поддержка уровней зависит от экосистемы. Например, npm, Maven, NuGet, PyPI, Go, Composer и RubyGems поддерживают проверку metadata и пакетов, а Debian, Alpine и RPM — проверку скачиваемых пакетов без модификации системных индексов.
Блокировка небезопасных компонентов
Если компонент нарушает политики безопасности, OSA Proxy Go может удалить небезопасные версии из metadata, заблокировать скачивание артефакта и вернуть настраиваемый HTTP-код блокировки.
Модификация ответов
При включенном сканировании манифестов сервис модифицирует ответы upstream-реестров: удаляет заблокированные версии, обновляет ссылки на скачивание через прокси и сохраняет формат ответа, ожидаемый пакетным менеджером.
Кэширование вердиктов
Для снижения нагрузки на CodeScoring и ускорения повторных запросов OSA Proxy Go поддерживает Redis-кэш результатов проверки Judge. Кэш выключен по умолчанию и настраивается в секции cache.
Маршруты
Для всех экосистем, кроме Docker, имя маршрута берется из поля name в секции repository файла osa-proxy.yml.
Например, репозиторий npm с именем npm будет доступен по адресу:
Docker-режим использует стандартные endpoints Docker Registry API v2 и не добавляет имя репозитория в путь:
Служебные endpoints
Режимы работы
Поведение проверки задается параметром work-mode. Его можно указать глобально в codescoring.work-mode и переопределить для конкретного репозитория через repository[*].work-mode.
warmup— разогрев кэша без блокировки компонентов;spectator— разогрев кэша и сохранение результатов запросов без блокировки;moderate— блокировка по политикам, загрузка непросканированных компонентов разрешена;strict— блокировка по политикам, загрузка непросканированных компонентов запрещена;strict_wait— блокировка по политикам с ожиданием проверки для непросканированных компонентов.
