
Автоматизирует статический аудит безопасности API-контрактов OpenAPI в CI/CD, выполняя 300+ проверок аутентификации, авторизации и ограничений данных, с порогами минимальной оценки и выводом в формате SARIF.
Действие REST API Static Security Testing находит контракты REST API, соответствующие спецификации OpenAPI (OAS, ранее известной как Swagger), и выполняет по ним тщательные проверки безопасности. Поддерживаются OAS v2 и v3.0.x в форматах JSON и YAML.
Это действие можно использовать в следующих сценариях:
Действие работает на основе 42Crunch API Security Audit. Security Audit выполняет статический анализ определения API, включающий более 300 проверок лучших практик и потенциальных уязвимостей, связанных с аутентификацией, авторизацией, а также ограничениями данных.
По умолчанию это действие:
.json и .yaml в репозитории.Таким образом, вы можете находить новые или изменённые контракты API в репозитории.
Вы можете точно настроить поведение действия, указав конкретные части репозитория или маски имён файлов, которые должны быть включены или исключены при поиске API. Вы можете даже полностью отключить поиск и вместо этого указать только конкретные файлы API для проверки и сопоставить их с существующими API в 42Crunch API Security Platform. Все эти параметры настраиваются в файле конфигурации 42c-conf.yaml. Дополнительные примеры см. здесь.
Все обнаруженные API загружаются в коллекцию API на платформе 42Crunch. По умолчанию действие использует переменные окружения GITHUB_REPOSITORY и GITHUB_REF для указания имени репозитория и ветки/тега/PR, из которых произошла коллекция API. Вы можете переопределить имя с помощью параметра действия default-collection-name. При последующих запусках API в коллекции синхронизируются с изменениями в вашем репозитории.
Добавьте это действие в свои CI/CD конвейеры в GitHub, и оно будет завершаться ошибкой для определений API, содержащих проблемы безопасности.
Security Audit присваивает каждому контракту API оценку от 0 до 100, отражающую поверхность безопасности ваших API. Вы можете использовать параметр min-score GitHub Action, чтобы задать пороговое значение оценки, при котором действие завершается ошибкой (по умолчанию — 75, если не указано другое значение). Это помогает выявлять определения API низкого качества и устранять проблемы как можно раньше, уже на этапе проектирования.
Более сложные условия завершения с ошибкой можно задать в файле конфигурации 42c-conf.yaml, например, оценку аудита по категориям (безопасность или проверка данных), уровень серьёзности проблем или даже конкретные проблемы по их идентификатору. Дополнительные примеры см. здесь.
Кроме того, плагин обеспечивает соблюдение шлюзов качества безопасности, определённых на уровне платформы (по умолчанию или на основе тегов). Шлюзы качества безопасности обеспечивают соблюдение требований безопасности приложений, определённых на уровне предприятия.
При каждом запуске действие включает ссылку на подробный приоритизированный отчёт с рекомендациями для каждого вашего файла OpenAPI:
Перейдите по ссылкам, чтобы прочитать подробный отчёт на платформе 42Crunch:
Вы также можете отслеживать проблемы, обнаруженные аудитом 42Crunch, непосредственно в GitHub, на вкладке Security, в разделе Code scanning alerts.
Чтобы включить эту функцию, просто добавьте upload-to-code-scanning:true в параметры действия в вашем GitHub workflow.
Нажмите на любое оповещение, чтобы увидеть его точное расположение в вашем коде, а также получить подробную информацию об уязвимости и рекомендуемые шаги по её устранению.
Это действие использует сервис 42Crunch API Security Audit. Перед использованием действия вам потребуется учётная запись на платформе 42Crunch. Если вы не являетесь клиентом 42Crunch, вы можете запросить бесплатную учётную запись на этой странице: https://42crunch.com/get-started/.
Затем выполните шаги, описанные в документации, чтобы создать API-токен для аутентификации действия на платформе 42Crunch, и сохраните его как секрет в GitHub.
api-tokenОбязательный параметр. API-токен, который GitHub Action использует для аутентификации на платформе 42Crunch. Не указывайте API-токен напрямую в файле workflow! Вместо этого создайте секрет GitHub в настройках репозитория и укажите его так, как показано в примере ниже.
min-scoreМинимальная оценка аудита, которую должны достичь файлы OpenAPI, иначе действие завершится ошибкой. По умолчанию — 75.
upload-to-code-scanningЗагрузка результатов аудита в Github Code Scanning. По умолчанию — false. Обратите внимание, что для успешного выполнения этого шага workflow должен иметь соответствующие разрешения.
...
jobs:
run_42c_audit:
permissions:
contents: read # for actions/checkout to fetch code
security-events: write # for results upload to Github Code Scanning
...
ignore-failuresЕсли задано значение true, принудительно завершает выполнение успешно, даже если заданные вами условия завершения с ошибкой (например, min-score или критерии SQG) выполнены. По умолчанию — false.
Этот параметр может быть полезен, если вы хотите выявлять сценарии нарушений SQG, не применяя их (например, предоставить командам разработки льготный период перед тем, как начнёте ломать сборки).
ignore-network-errorsЕсли задано значение true, принудительно завершает выполнение успешно, даже если произошла сетевая ошибка (например, сбой подключения к платформе 42Crunch и т. д.). По умолчанию — false.
skip-local-checksЕсли задано значение true, отключает все условия завершения с ошибкой (например, минимальную оценку), заданные в файле 42c-conf.yaml, и завершает выполнение ошибкой только в том случае, если не соблюдены критерии, определённые в SQG. По умолчанию — false.
platform-urlURL-адрес, по которому вы обращаетесь к платформе 42Crunch. По умолчанию — https://us.42crunch.cloud.
Если вы корпоративный клиент, укажите URL-адрес, который вы используете для доступа к своей производственной платформе.