Интеграция с CodeScoring.OSA

CodeScoring.Save можно использовать с OSA Proxy в двух схемах: OSA Proxy перед Save или между Save и внешним реестром. В обеих схемах OSA Proxy проверяет проходящие через него запросы через CodeScoring.OSA и блокирует небезопасные компоненты в зависимости от выбранного work-mode.

OSA Proxy перед Save

Пакетные менеджеры обращаются к OSA Proxy, а Save выступает его upstream-репозиторием:

Пакетный менеджер -> OSA Proxy -> CodeScoring.Save proxy-репозиторий -> внешний upstream

URL репозитория Save указывается в поле registry репозитория OSA Proxy. Клиенты настраиваются на URL OSA Proxy. Проверка выполняется и при скачивании пакетов, уже находящихся в кэше Save.

Пример конфигурации OSA Proxy

Конфигурация выполняется в сервисе OSA Proxy. Для каждого поддерживаемого формата включается соответствующая секция и задаётся список репозиториев:

maven:
  enabled: true
  repository:
    - name: save-maven
      scan-manifest: true
      scan-package: true
      work-mode: strict_wait
      registry: https://save.example.com/cs-save/maven/<project>/maven-central-proxy

npm:
  enabled: true
  repository:
    - name: save-npm
      scan-manifest: true
      scan-package: true
      remove-blocked-versions: true
      work-mode: strict_wait
      registry: https://save.example.com/cs-save/npm/<project>/npmjs-proxy

codescoring:
  url: https://codescoring.example.com
  token: "<API_TOKEN>"
  work-mode: strict_wait
  osa-proxy-url: https://osa-proxy.example.com
  block-on-codescoring-errors: true
  block-status-code: 403

Для PyPI дополнительно указывается packages-registry, для Go — sumdb-registry, для Docker — auth-token-url, если upstream registry требует отдельный token service.

OSA Proxy между Save и внешним реестром

Пакетные менеджеры обращаются к Save, а proxy-репозиторий Save получает компоненты через OSA Proxy:

Пакетный менеджер -> CodeScoring.Save proxy-репозиторий -> OSA Proxy -> внешний upstream

В OSA Proxy укажите внешний реестр в поле registry, например:

maven:
  enabled: true
  repository:
    - name: maven-central
      registry: https://repo1.maven.org/maven2
      scan-manifest: true
      scan-package: true
      work-mode: strict_wait

В Save создайте или отредактируйте Maven proxy-репозиторий и задайте Proxy URL: https://osa-proxy.example.com/maven-central/. Пакетные менеджеры подключаются к этому репозиторию Save по обычному URL https://save.example.com/cs-save/maven/<project>/<repository>/.

Настройки подключения OSA Proxy к CodeScoring в секции codescoring одинаковы для обеих схем.

Кэш Save

В этой схеме OSA Proxy проверяет запросы, которые Save отправляет во внешний источник. Пакеты, которые Save отдаёт из собственного кэша без обращения к upstream, повторно через OSA Proxy не проходят.

Режимы работы

Поведение проверки управляется параметром work-mode. Его можно задать глобально в секции codescoring или переопределить на уровне отдельного репозитория.

Поддерживаются режимы:

  • warmup — загрузка данных в кэш CodeScoring без блокировки компонентов;
  • spectator — загрузка данных в кэш CodeScoring без блокировки компонентов, с сохранением результатов запросов компонентов в платформе;
  • moderate — блокировка компонентов, не прошедших проверку политик; загрузка непросканированных компонентов разрешена;
  • strict — блокировка компонентов, не прошедших проверку политик; загрузка непросканированных компонентов запрещена;
  • strict_wait — блокировка компонентов, не прошедших проверку политик; для непросканированных компонентов выполняется ожидание проверки.

Ограничения

Проверка через OSA Proxy применяется к трафику, который проходит через OSA Proxy. Чтобы проверять скачивание из hosted-репозитория Save, разместите OSA Proxy перед ним и укажите URL hosted-репозитория в registry. Публикация артефактов в Save сама по себе не запускает проверку OSA Proxy.

Политики безопасности настраиваются в CodeScoring. OSA Proxy использует CodeScoring API для сканирования компонентов, получения информации о пакетах и проверки политик, но не создаёт политики внутри Save.

См. также

Страница была полезна?