Загрузка результатов сканирования
Вы можете загружать результаты сканирования несколькими способами:
- Используя API
- Используя vampy-cli
- Используя Web интерфейс
Независимо от выбранного варианта загрузки вам необходимо в первую очередь создать пользователя-бота.
Для корректной работы бота ему необходимо присвоить роль Editor или Admin.
Запомните сгенерированный API токен.
Загрузка через API
Для загрузки результатов по API можно использовать curl
curl -X POST "$VAMPY_URL/api/ext/v1/scan_uploads/" \
-H "accept: application/json" \
-H "Content-Type: multipart/form-data" \
-H "Authentication: $VAMPY_API_TOKEN"\
-F "repository=$VAMPY_REPO_SLUG" \
-F "repositoryBranch=$VAMPY_BRANCH_SLUG" \
-F "scannerResultFile=@$VV_REPORT_FILE_NAME" \
-F "scannerType=$VAMPY_SCAN_TYPE" \
-F "externalScanPipeline=$VAMPY_PIPELINE_ID" \
-F 'product=' \
-F 'vcsURL='
где
- VAMPY_URL - путь к серверу Vampy, напр.
https://vampy.corp.example.com; - VAMPY_API_TOKEN - API токен для бот пользователя;
- VAMPY_REPO_SLUG - slug репозитория, для которого выполнялось сканирование. Эквивалентно
CI_PROJECT_PATH; - VAMPY_BRANCH_SLUG - ветка, для которой выполнялось сканирование. Эквивалентно
CI_COMMIT_REF_NAME; - VV_REPORT_FILE_NAME - имя файла с результатами скана;
- VAMPY_PIPELINE_ID - внешний идентификатор scan pipeline (опционально). Должен содержать только URL-safe
символы (буквы, цифры,
.,_,~,-) и не содержать слешей. В GitLab CI достаточно встроенного$CI_PIPELINE_ID(так же использует CI Template Generator). Для API/ручных сценариев или Jenkins можно собрать составной id, например${CI_SERVER_HOST}-${CI_PROJECT_PATH//\//-}-${CI_PIPELINE_IID}илиjenkins.corp.example.com-mygroup-myrepo-42; - product - slug продукта, куда загружаются результаты сканирования;
- vcsURL - опциональное поле, для указания ссылки и автоматической привязки к VCS системе;
- VAMPY_SCAN_TYPE - id сканера. Поддерживаемые сканеры и их id можно посмотреть на этой странице.
Пример запроса через API
curl -X POST "https://vampy.hexway.io/api/ext/v1/scan_uploads/" \
-H "accept: */*" \
-H "Content-Type: multipart/form-data" \
-H "Authentication: $VAMPY_API_TOKEN"\
-F "repository=test_repo" \
-F "repositoryBranch=main" \
-F "scannerResultFile=@/Vampy/report.sarif" \
-F "scannerType=SARIF" \
-F "externalScanPipeline=gitlab.corp.example.com-test_repo-12345"
Загрузка через Vampy-cli
- Предварительно установите vampy-cli
- Сконфигурируйте vampy-cli
- Загрузите результаты, используя команду upload в vampy-cli
Пример запроса через vampy-cli
vampy-cli upload \
--repository vmp/product/vampy-engine \
--branch main \
--file ~/scans_trivy_image.json \
--scanner TRIVY_IMAGE \
--pipeline-id "$CI_PIPELINE_ID"
vampy-cli pipeline finish --pipeline-id "$CI_PIPELINE_ID"
vampy-cli pipeline status --pipeline-id "$CI_PIPELINE_ID" --check-pipeline
Альтернатива — завершить пайплайн прямо в upload
(--pipeline-finish --check-pipeline), см.
upload.
Загрузка через Web интерфейс
Вы также можете загрузить результаты сканирований через Web интерфейс Vampy.