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

РУКОВОДСТВО 10 · ВЕБ-ПРИЛОЖЕНИЯ И API

Как добавить проверки безопасности в CI/CD и GitHub Actions

Проверка в CI должна относиться к конкретной сборке и давать релизному процессу понятный результат. Запускайте подготовленные сценарии на staging до продвижения в production. HTTP 202 означает принятую заявку, а не завершённый скан. Находка, техническая ошибка и неполное покрытие требуют разных решений; проверка после публикации не отменяет уже состоявшийся деплой.

Редакция Scantelio · Обновлено

Подключить проверку к CI/CD

Понадобятся вход, подтверждение владения и согласие. Для авторизованных сценариев, мониторинга и CI нужен Pro или Business.

Содержание

Что проверять на разных этапах

На PR удобно проверять исходники и состав зависимостей отдельными инструментами. На staging выполняется DAST работающего приложения с тестовыми аккаунтами. После production проверяется опубликованный контур и актуальность инвентаря. Не приписывайте одному этапу покрытие остальных. Scantelio не объявляет себя полным SAST-анализатором, а post-deploy запуск не является барьером перед уже завершённой публикацией.

Что подготовить перед интеграцией

Подготовьте проект, подтверждённую область, согласие, staging, тестовые аккаунты и объекты, проектный токен и квоту. Токен храните в CI secrets и ограничьте проектом. Внешние непроверенные PR не должны получать эти секреты. Зафиксируйте revision и deployment URL кандидата; они должны соответствовать действительно развёрнутому приложению, а не просто произвольным строкам из workflow.

Первичные источники: GitHub: безопасность Actions · OWASP: CI/CD

Продолжить: Проверка безопасности API с тестовыми аккаунтами

Рабочий пример запуска

В скачиваемом примере используется существующий cli/scantelio.mjs из этого репозитория, Node 22+ и реальные параметры --project, --environment, --deployment и --revision. SCANTELIO_TOKEN передаётся через окружение, не аргументом команды. Сохраните проверенную копию CLI и её контрольную сумму в своём репозитории; не запускайте бесконтрольно меняющийся удалённый файл. Пример не представляет собой отдельный опубликованный GitHub Action.

API token хранится в секретах CI. Скрипт использует настоящий CLI, не вымышленный GitHub Action.
# Задайте SCANTELIO_API_URL, SCANTELIO_TOKEN и параметры проекта в CI.
export SCANTELIO_REVISION="$GITHUB_SHA"
bash run-ci.sh
# Сохраните scantelio-report.json как артефакт даже при ненулевом exit code.

Как дождаться результата

CLI получает run_id и опрашивает состояния queued, preparing и running до терминального результата. У него есть ограничение ожидания; сетевой сбой даёт ошибку, а не успешную проверку. Повторный запрос с тем же SCANTELIO_IDEMPOTENCY_KEY должен возвращать тот же запуск. Отмена задания CI сама по себе не гарантирует отмену скана: при необходимости вызовите документированный endpoint отмены и отдельно сохраните результат.

Первичные источники: GitHub: безопасность Actions · OWASP: CI/CD

Продолжить: IDOR и BOLA: как проверить доступ к чужим данным в своём API

Подключить проверку к CI/CD

Правила допуска релиза

Базовая CI-интеграция доступна Pro. Business добавляет командные настройки политики и соответствующие функции управления. Политика определяет требуемые правила, порог серьёзности и обработку неполного покрытия. Качество поддерживаемого обнаружения в Pro и Business одинаковое. Не используйте continue-on-error как скрытый способ объявить неизвестный результат пройденным.

Exit code CLIСмыслДействие pipeline
0Условия gate выполненыРазрешить следующий этап по вашей политике
1Блокирующая подтверждённая находкаОстановить выпуск
2Неполная проверка или ошибкаНе выдавать зелёный статус; разобраться и повторить

Как обращаться с baseline и исключениями

Режим new требует действительного baseline из подходящего предыдущего запуска. Старая находка не исчезает из задачи команды: ей нужны решение, владелец и срок. Техническая ошибка сравнения не является отсутствием новых проблем. Если команда допускает исключение, оно должно иметь объяснение и контролируемое применение. Обновляйте baseline осознанно, а не автоматически после каждого проваленного запуска.

Первичные источники: GitHub: безопасность Actions · OWASP: CI/CD

Продолжить: Мониторинг CVE и зависимостей вашего приложения

Как защитить pipeline

Выдавайте workflow минимальные permissions, закрепляйте Actions по проверенным версиям или commit SHA и не запускайте недоверенную ветку с привилегированными секретами. Не печатайте токен, приватный deployment URL или полные доказательства в общий лог. Ограничьте доступ и срок хранения отчётов. Секрет из окружения может попасть в лог через ошибку приложения, поэтому одной автоматической маскировки недостаточно.

Как проверить всю цепочку

Проверьте проблемного кандидата, исправленного кандидата и отдельно неполное покрытие. В отчёте и задании должен совпадать revision; сохраните run_id как артефакт процесса. Учебный тест CLI воспроизводит решения 0, 1 и 2 на локальном контролируемом API. Это проверка контракта интеграции, а не заявление о выполнении вашего GitHub pipeline или production-деплоя. Полную цепочку своей среды нужно подтвердить после подключения.

Продолжить: Утечка .env .git или API-ключа: как закрыть доступ и проверить исправление

Воспроизводимые примеры и материалы

Проверено: guides-1 · Node.js v23.10.0

Учебные данные — синтетические. Файлы не содержат действующих ключей или клиентской базы. Запускайте примеры только в собственной изолированной тестовой среде.

Протокол проверки примера: версии, действия и наблюдения

Вопросы и ответы

CI доступен в Pro?

Да. Настраиваемые командные политики и дополнительные функции Business рассматриваются отдельно от базового запуска.

Можно блокировать только новые находки?

CLI поддерживает режим new с подходящим baseline. Без действительного baseline нельзя объявлять сравнение успешным.

Что делать при недоступном сканере?

Применить явно принятую политику сбоя. Не превращать техническую ошибку в passed.

Проверка после деплоя предотвращает деплой?

Нет. Для барьера проверку staging нужно поставить перед продвижением в production.

Можно передать production-админский токен?

Используйте минимальные тестовые права и подходящее окружение. Полномочия production-администратора не должны быть стандартным входом проверки.

Каждая CI-проверка расходует квоту?

Да, действует общий учёт запуска. Повторная доставка того же идемпотентного запроса не должна создавать второй оплачиваемый запуск.

Автор и источники

Редакция Scantelio: методика и границы проверки. Проверка примера: 2026-11-02.

Перенесите проверку на свой проект

Подключить проверку к CI/CD

Выберите свой проект после входа. Ничего не сканируется без подтверждения и согласия.