Поддерживаемые протоколы
Эта страница относится к текущей реализации OSA Proxy. Архивная Java/Spring-реализация доступна в разделе Архивная Java/Spring-реализация.
Раздел описывает, какие ресурсы OSA Proxy проверяет и какие ответы может модифицировать для каждой экосистемы.
Сводная таблица
Параметры scan-manifest и scan-package
scan-manifest включает проверку и модификацию metadata, из которой пакетный менеджер выбирает доступные версии. При срабатывании блокирующей политики небезопасные версии удаляются из ответа или помечаются как заблокированные, если формат это поддерживает.
scan-package включает проверку скачиваемого артефакта: архива, бинарного пакета, module zip, пакета R, .gem, .deb, .apk или .rpm. Если политика блокирует компонент, скачивание прерывается с HTTP-кодом из codescoring.block-status-code.
Для R, Debian, Alpine, RPM и Ivy используется только scan-package: индексы не изменяются, поэтому пакетный менеджер может видеть версию в индексе, но скачивание конкретного пакета будет заблокировано при нарушении политики.
Для Docker проверка манифеста образа управляется параметром scan-container (по умолчанию true). Manifest list используется для определения image manifest; blob/layer-запросы проксируются в registry.
Для npm, NuGet, PyPI, Swift и Hex поддерживается параметр remove-blocked-versions: false. В этом случае заблокированная версия остаётся в metadata с пометкой (для Swift — поле problem: 410, для Hex — статус retired: security). Composer и Conan всегда удаляют заблокированные версии.
Maven
- Metadata:
maven-metadata.xml. - Пакеты:
.jar,.war,.earи другие Maven-артефакты. - При модификации metadata заблокированные версии удаляются из списка, а поля
latestиreleaseобновляются на последнюю разрешенную версию.
npm
- Metadata: JSON-описание пакета.
- Пакеты:
.tgz. - Из metadata удаляются заблокированные версии, связанные записи
time, аdist-tagsпересчитываются на разрешенные версии.
PyPI
- Metadata: страницы Simple API.
- Пакеты:
.whl,.tar.gz,.zipи другие архивы Python-пакетов. - Ссылки на заблокированные версии удаляются, URL загрузки переписываются так, чтобы скачивание проходило через OSA Proxy.
NuGet
- Metadata: service index и registration index.
- Пакеты:
.nupkg. - Для клиента используется маршрут
/nuget-api/v3/index.json; metadata переписывается на URL OSA Proxy.
Go modules
- Metadata: список версий
@v/list. - Пакеты: module
.zip. - Заблокированные версии удаляются из списка версий. Для SumDB используется
sumdb-registryи настройкаGOSUMDB.
Ivy
- Metadata:
ivy.xmlи вспомогательные дескрипторы не модифицируются. - Пакеты: JAR, ZIP и другие артефакты, сопоставленные по шаблону
layout(sbt-default,ivy-defaultили кастомный шаблон). - При нарушении политики загрузка артефакта прерывается со статусом блокировки.
CocoaPods
- Metadata: сканирование спецификаций
.podspec.json. Системные индексы CDN (all_pods.txt,CocoaPods-version.yml) проксируются без изменений. - Пакеты: архивы зависимостей, загружаемые по протоколу
source.http. - Ссылки на доверенные upstream-хосты из
additional-packages-registriesпереписываются через маршруты OSA Proxy для проверки архивов. Заблокированные спецификации блокируются целиком.
Swift Package Registry
- Metadata: список релизов пакета. При
remove-blocked-versions: trueзаблокированные версии удаляются, приfalse— помечаются ошибкойproblem: 410со ссылкой на политику. - Пакеты: ZIP-архивы релизов пакетов.
- Файлы
Package.swiftпроксируются без отдельных запросов к CodeScoring.
Hex
- Metadata: бинарные protobuf-манифесты Hex. OSA Proxy валидирует подпись upstream-реестра, модифицирует список релизов и подписывает ответ собственным RSA-ключом.
- Пакеты: архивы
.tar. - При
remove-blocked-versions: falseверсии помечаются какretired: securityс указанием политики, что позволяет фильтровать их через встроенную Hex-политикуosa-proxy/codescoring.
Composer
- Metadata: Composer/Packagist metadata.
- Пакеты: dist-архивы
.zip,.tar,.tgz,.tar.gz,.tar.bz2,.tar.xz. - Dist URL переписываются на маршруты OSA Proxy. Для внешних dist-хостов используйте
packages-registryиadditional-packages-registries.
RubyGems
- Metadata: индексы RubyGems.
- Пакеты:
.gem. - Проверяются metadata и скачиваемые gem-пакеты.
Conan v2
- Metadata: запросы
search,listиrevisionsConan API v2. - Пакеты: recipe и package artifacts Conan.
- Заблокированные версии всегда удаляются из результатов.
R (CRAN)
- Metadata: индексы
PACKAGES,PACKAGES.gzиPACKAGES.rdsпроксируются без модификации. - Пакеты: исходные
.tar.gzи поддерживаемые R бинарные архивы. - При нарушении политики скачивание пакета блокируется, но версия остаётся видимой в индексе.
Docker
- Metadata: Docker image manifest. Проверка манифеста управляется параметром
scan-container(по умолчанию включена). Manifest list используется для выбора image manifest. - Пакеты: отдельного
scan-packageнет; blob/layer-запросы проксируются дальше в registry. - Режим pull-through proxy: при
codescoring-pull-through-proxy: trueOSA Proxy передает внешний pull URL в CodeScoring при проверке контейнеров. - Несколько Docker-репозиториев разделяются по поддоменам (
repository[*].name), так как Docker Registry API v2 использует фиксированные пути/v2/.
Диагностика блокировки
Если пакетный менеджер не показывает причину блокировки, проверьте соответствующий metadata endpoint напрямую:
