Сбой конвейера при обнаружении секрета — Gitlab
Я пытаюсь реализовать конвейер gitlab, используемый для обнаружения секретов в коммитах до того, как они будут отправлены, и предотвратить их запуск. Часть обнаружения работает просто отлично. Однако конвейер всегда помечает задание как успешное, даже если обнаружены фальшивые секреты, которые я добавил, и они становятся общедоступными.
Я попытался отсканировать отчет об обнаружении: если он не пуст, отображается сообщение, предупреждающее пользователя, и возвращается код выхода. Однако по какой-то причине указанный код выхода игнорируется.
Вот конфигурация yml, которую я использую:
include:
- template: Jobs/Secret-Detection.gitlab-ci.yml
secret_detection:
variables:
SECRET_DETECTION_HISTORIC_SCAN: "true"
SECRET_DETECTION_IMAGE_SUFFIX: "-fips"
after_script:
- |
reportFile="gl-secret-detection-report.json"
$a: wc -l gl-secret-detection-report.json
$b: 0
if [ $a -gt $b ]; then
echo "VULN FOUND. SEE $reportFile FOR MORE DETAILS." && exit 1
fi
Я совершенно в недоумении здесь, любая помощь приветствуется. Спасибо !
1 ответ
Вы можете получить статус «успех» или «сбой» в отчете json, только если задание не выполнено. Работа не завершается сбоем в случае обнаружения каких-либо уязвимостей.
Вот информация из документации gitlab:
Задания проходят, если они могут завершить сканирование. Проходной результат не указывает, идентифицировали ли они результаты или нет. Единственным исключением является фаззинг покрытия, который терпит неудачу, если идентифицирует результаты.
Задания завершаются с ошибкой, если они не могут завершить сканирование. Дополнительные сведения можно просмотреть в журналах конвейера.
По умолчанию всем заданиям разрешено сбой. Это означает, что если они выходят из строя, конвейер не выходит из строя.
Если вы хотите предотвратить слияние уязвимостей, вы должны сделать это, добавив утверждения безопасности в запросы на слияние, которые предотвратят слияние неизвестных, важных или критических результатов без одобрения определенной группы людей, которую вы выберете.
Мы не рекомендуем изменять параметр задания allow_failure, так как это приведет к сбою всего конвейера.