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

Поддерживаемые протоколы

Раздел описывает, какие ресурсы OSA Proxy Go проверяет и какие ответы может модифицировать для каждой экосистемы.

Сводная таблица

Экосистема Сканирование манифестов Сканирование пакетов Модификация ответов
Maven Да Да Удаление заблокированных версий из maven-metadata.xml, обновление latest и release.
npm Да Да Удаление заблокированных версий из metadata, обновление dist-tags и ссылок на tarball.
PyPI Да Да Удаление ссылок на заблокированные версии из Simple API, переписывание URL загрузки через прокси.
NuGet Да Да Модификация service index и registration metadata, удаление заблокированных версий.
Go modules Да Да Удаление заблокированных версий из @v/list, проксирование module zip и SumDB.
Composer Да Да Модификация metadata Packagist/Composer и переписывание dist URL через прокси.
RubyGems Да Да Проверка metadata RubyGems и скачиваемых .gem-пакетов.
Debian Нет Да Системные индексы Packages не модифицируются.
Alpine (APK) Нет Да Индексы APKINDEX не модифицируются.
RPM Нет Да Metadata repodata не модифицируется.
Docker Да Нет Проверка image manifest; manifest list используется для определения image manifest и не отправляется на проверку как отдельный компонент. Blob/layer-запросы проксируются без отдельной проверки слоев. Для нескольких Docker-репозиториев используются поддомены.

Параметры scan-manifest и scan-package

scan-manifest включает проверку и модификацию metadata, из которой пакетный менеджер выбирает доступные версии. При срабатывании блокирующей политики небезопасные версии удаляются из ответа или помечаются как заблокированные, если формат это поддерживает.

scan-package включает проверку скачиваемого артефакта: архива, бинарного пакета, module zip, .gem, .deb, .apk или .rpm. Если политика блокирует компонент, скачивание прерывается с HTTP-кодом из codescoring.block-status-code.

Для Debian, Alpine и RPM используется только scan-package: системные индексы не изменяются, поэтому пакетный менеджер может видеть версию в индексе, но скачивание конкретного пакета будет заблокировано при нарушении политики.

Для Docker параметры scan-manifest и scan-package не используются в конфигурации репозитория. OSA Proxy Go проверяет Docker image manifest. Manifest list используется для определения image manifest и не отправляется на проверку как отдельный компонент; blob/layer-запросы проксируются в registry.

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 Go.

NuGet

  • Metadata: service index и registration index.
  • Пакеты: .nupkg.
  • Для клиента используется маршрут /nuget-api/v3/index.json; metadata переписывается на URL OSA Proxy Go.

Go modules

  • Metadata: список версий @v/list.
  • Пакеты: module .zip.
  • Заблокированные версии удаляются из списка версий. Для SumDB используется sumdb-registry и настройка GOSUMDB.

Composer

  • Metadata: Composer/Packagist metadata.
  • Пакеты: dist-архивы .zip, .tar, .tgz, .tar.gz, .tar.bz2, .tar.xz.
  • Dist URL переписываются на маршруты OSA Proxy Go. Для внешних dist-хостов используйте packages-registry и additional-packages-registries.

RubyGems

  • Metadata: индексы RubyGems.
  • Пакеты: .gem.
  • Проверяются metadata и скачиваемые gem-пакеты.

Docker

  • Metadata: Docker image manifest. Manifest list используется для определения image manifest.
  • Пакеты: отдельного scan-package нет; blob/layer-запросы проксируются дальше в registry.
  • Docker использует стандартные endpoints /v2/... и /token, поэтому несколько Docker-репозиториев разделяются по поддоменам, а не по первому сегменту пути.

Диагностика блокировки

Если пакетный менеджер не показывает причину блокировки, проверьте соответствующий metadata endpoint напрямую:

curl https://osa-proxy.example.com/npm/lodash
curl https://osa-proxy.example.com/pypi/simple/requests/
curl https://osa-proxy.example.com/maven/org/apache/commons/commons-lang3/maven-metadata.xml
curl https://osa-proxy.example.com/nuget/nuget-api/v3/registration5-gz-semver2/newtonsoft.json/index.json
curl https://osa-proxy.example.com/go/github.com/gin-gonic/gin/@v/list
Страница была полезна?