Настройка сервиса¶
Основные параметры¶
Конфигурация OSA Proxy осуществляется через файл application.yml
:
Пример конфигурационного файла
# Параметры CodeScoring
codescoring:
host: URL-адрес сервера CodeScoring
token: токен авторизации
work-mode: рабочий режим (применяется только к сканированию пакетов)
# warmup | Разогрев кэша сканирования без мониторинга запросов, без блокировки
# spectator | Разогрев кэша сканирования с мониторингом запросов, без блокировки
# moderate | Блокировка на основе политик с использованием результатов кэша, загрузка непроверенных компонентов разрешена
# strict | Блокировка на основе политик с использованием результатов кэша, загрузка непроверенных компонентов заблокирована
# strict_wait | Блокировка на основе политик, ожидание, пока компонент не будет отсканирован
proxy-manager-host: хост прокси-сервера
enable-status-line: true/false (добавляет сообщение о причине блокировки в строку состояния)
block-status-code: статус код для блокировки загрузки пакетов
block-on-codescoring-errors: блокирует загрузку пакета при 5xx status, ошибках сканирования (scan_failed)
# Настройки PyPI
pypi:
enabled: true
repository:
- name: internet-pypi
scan-manifest: true
scan-package: true
registry: https://pypi.org
packages-registry: https://files.pythonhosted.org
- name: arti-pypi
scan-manifest: true
scan-package: true
registry: http://localhost:8081/artifactory/api/pypi/pypi-remote
packages-registry: http://localhost:8081/artifactory/api/pypi/pypi-remote/packages
- name: nexus-pypi
scan-manifest: true
scan-package: true
registry: https://localhost:8081/repository/pypi-proxy
packages-registry: https://localhost:8081/repository/pypi-proxy/packages
# Настройки Maven
maven:
enabled: true
repository:
- name: internet-mvn
scan-manifest: true
scan-package: true
registry: https://repo1.maven.org/maven2
- name: arti-mvn
scan-manifest: false
scan-package: true
registry: http://localhost:8081/artifactory/maven-remote
- name: nexus-mvn
scan-manifest: false
scan-package: true
registry: http://localhost:8081/repository/maven-proxy
# Настройки NPM
npm:
enabled: true
repository:
- name: internet-npm
scan-package: true
scan-manifest: true
registry: https://registry.npmjs.org
- name: arti-npm
scan-package: true
scan-manifest: true
registry: http://localhost:8081/artifactory/api/npm/npm-remote
- name: nexus-npm
scan-package: true
scan-manifest: true
registry: http://localhost:8081/repository/npm-proxy
# Настройки NuGet
nuget:
enabled: true
repository:
- name: codescoring-nuget
scan-package: true
registry: https://api.nuget.org
- name: arti-nuget
scan-package: true
registry: http://localhost:8081/artifactory/api/nuget/v3/nuget-remote
- name: nexus-nuget
scan-package: true
scan-manifest: true
registry: http://localhost:8081/repository/nuget-v3-proxy
Особенности работы в Nexus Repository и JFrog Artifactory
- Для JFrog Artifactory рекомендуется выставить
Custom Base URL
и использовать его в полеregistry
для корректной замены ссылок на пакеты внутри манифестов; - Для Nexus Repository идентичного функционала нет, в манифестах будет использован хост и порт (если указан) из запроса. При наличии
reverse proxy
рекомендуется использовать ссылку на него. Например:registry: https://nexushost.ru/repository/pypi-proxy
.
Дополнительные настройки¶
Настройки уровня логирования¶
Размер буфера для обработки больших манифестов¶
Пример настройки размера буфера
Политики повторных попыток и circuit breaker для запросов к платформе:¶
Настройка повторных попыток¶
Эта конфигурация определяет политику повторных попыток для сервиса codeScoringApi
. Она настроена на обработку временных сбоев путем повторной попытки запроса до 3 раз.
Повторные попытки используют стратегию экспоненциального отступления, начиная с задержки в 1 секунду и удваивая ее с каждой попыткой. Эта политика применяется только к определенным исключениям, таким как WebClientRequestException
.
Настройка Circuit Breaker¶
Circuit breaker (автоматический выключатель) для codeScoringApi
действует как механизм быстрого отказа. Он отслеживает частоту сбоев и, если она достигает 50% (рассчитывается по последним 20 вызовам), он «открывается» и предотвращает дальнейшие запросы в течение 30 секунд. Это дает нижестоящему сервису время на восстановление. После периода ожидания он переходит в «полуоткрытое» состояние, позволяя пройти 5 пробным вызовам, чтобы определить, восстановился ли сервис.
Конфигурация Retry и Circuit Breaker может быть переопределена путем установки следующих свойств, например, для codeScoringApi
.