Руководство
Экспорт в SARIF и интеграция с GitHub code scanning
Экспортируйте аудит vetkit в SARIF 2.1.0, сверьте отчёт с коммитом репозитория и загрузите его через свой workflow в GitHub Actions.
· 5 мин чтения · Команда vetkit


Экспортируйте завершённый аудит vetkit через эндпоинт отчёта с format=sarif, а затем загрузите файл SARIF 2.1.0 из своего workflow в GitHub Actions. Перед загрузкой сверьте аудит с анализируемыми репозиторием и коммитом. Само по себе скачивание отчёта не публикует алерты в GitHub; загрузка — отдельный шаг, который вы настраиваете.
1. Проверьте предварительные условия
- Вам понадобятся ID организации, ID аудита и API-ключ vetkit с правом
reports:read. Автоматизированному workflow, который также запускает аудиты и опрашивает их статус, нужныaudits:writeиaudits:read. - Проверьте репозиторий и SHA коммита аудита. Для CI запросите или переиспользуйте аудит именно для коммита workflow и дождитесь его завершения перед экспортом.
- Проверьте JSON-отчёт на частичные результаты и фактическую область сканирования. Валидный SARIF-документ всё равно может отражать неполный анализ.
GitHub поддерживает code scanning для публичных репозиториев и подходящих репозиториев организаций с включённым GitHub Code Security. Проверьте, подходит ли ваш репозиторий и есть ли у вас права на запись, в документации GitHub по загрузке SARIF.
2. Экспортируйте аудит
Задайте переменные ниже в локальной оболочке или в окружении CI. VETKIT_API_URL — это origin вашего API vetkit без /v1. Храните ключ в менеджере секретов или в секретах CI, а не в файле workflow, репозитории или shell-скрипте. Для этой команды нужны curl и jq:
set -euo pipefail: "${VETKIT_API_URL:?Set the API origin}": "${VETKIT_ORG_ID:?Set the organization ID}": "${VETKIT_AUDIT_ID:?Set the completed audit ID}": "${VETKIT_API_KEY:?Set a reports:read key}" curl --fail-with-body --silent --show-error --max-time 30 \ "$VETKIT_API_URL/v1/orgs/$VETKIT_ORG_ID/audits/$VETKIT_AUDIT_ID/report?format=sarif" \ -H "Authorization: Bearer $VETKIT_API_KEY" \ -o vetkit.sarifjq -e '.version == "2.1.0" and (.runs | type == "array")' vetkit.sarif >/dev/nullЭндпоинт возвращает application/sarif+json и имя файла вложения на основе проверенного коммита. Команда намеренно сохраняет его как vetkit.sarif для шага загрузки. Проверка через jq — базовая проверка формата, а не полная валидация по схеме и не подтверждение полноты сканирования. Относитесь к скачанному отчёту как к информации о репозитории и контролируйте доступ к нему.
3. Загрузите из своего workflow
В workflow для просканированного репозитория сделайте checkout соответствующего исходного кода, получите завершённый аудит и выполните команду скачивания выше. Храните VETKIT_API_KEY в секрете Actions. Следующий фрагмент показывает права и финальный шаг загрузки; это не самостоятельный workflow сканирования. Добавьте скачивание между checkout и загрузкой:
permissions: contents: read actions: read security-events: write # Inside the job's steps, after choosing the matching audit:steps: - uses: actions/checkout@v6 with: persist-credentials: false # Insert the authenticated download step here. - name: Upload vetkit results uses: github/codeql-action/upload-sarif@v4 with: sarif_file: vetkit.sarif category: vetkitAction загрузки GitHub использует sarif_file для пути к отчёту и category, чтобы различать анализы. Повторное использование того же инструмента/категории для того же коммита может заменить предыдущие результаты; для отдельных анализов используйте разные категории. Права и версии actions выше соответствуют примеру GitHub.
В примере интеграции репозитория от vetkit загрузка SARIF опциональна и включается через VETKIT_UPLOAD_SARIF=true. Его workflow полного сканирования запрашивает аудит для точного коммита и отклоняет неудачные, частичные результаты или результаты без балла перед опциональной загрузкой. Эта проверка завершённости не задаёт порога по критичности находок или баллу: политику релиза определяйте отдельно. Проверки GitHub App и загрузка SARIF — это разные пути интеграции.
4. Интерпретируйте импортированные результаты
vetkit экспортирует один SARIF run с vetkit в качестве driver. Результаты включают ID правил, расположение в файлах, где оно доступно, текст рекомендаций по исправлению и fingerprint-ы vetkit. Версии анализаторов записываются как extensions, а происхождение (репозиторий/коммит) включено в отчёт. Сопоставление критичности использует уровни SARIF наряду со свойствами критичности vetkit; эти числовые сопоставления не являются независимо рассчитанными оценками CVSS.
Находки уровня репозитория используют синтетическое расположение (repository), поэтому они могут не указывать на реальную строку исходного кода. Подавленные находки остаются в экспорте с метаданными подавления SARIF. Не считайте, что число экспортированных результатов равно числу активных алертов, которые показывает GitHub. Сохраняйте исходный отчёт vetkit ради данных о покрытии, контекста балла и деталей для ревью.
Решение проблем
- Скачивание не удаётся: проверьте origin API, ID организации и аудита, действительность ключа и право
reports:read. Не выводите ключ при отладке. - Неверные расположения в исходном коде: сравните коммит аудита с коммитом workflow и checkout. Не загружайте более старый отчёт как доказательство для более новой ревизии.
- Загрузка отклонена: проверьте, подходит ли репозиторий для GitHub, права workflow и вывод ошибок action загрузки. GitHub применяет собственный набор поддерживаемых свойств SARIF и ограничения на размер.
- Алерты не видны: проверьте результаты в файле, метаданные подавления, выбранный анализ и покрытие исходного аудита. Успешная передача не доказывает чистое сканирование.
Источники и ограничения
Проверено 1 ноября 2026 года по контроллеру/сервису отчётов vetkit, сериализатору SARIF и примеру интеграции репозитория с GitHub Actions. Обе стороны интеграции описаны в справочнике по API и в требованиях GitHub к загрузке. Требования GitHub и поведение actions могут меняться. Экспорт в SARIF переносит существующие находки; он не запускает CodeQL, не добавляет проверки в исходный аудит и не гарантирует, что каждая деталь отчёта vetkit появится в интерфейсе GitHub.