Перейти к содержимому
traio.kz

Gitlab Gitleaks

Gitleaks (через GitLab Secrets Analyzer) сканирует репозиторий на утечки секретов (токены, API-ключи, пароли, приватные ключи и другие)

  • В Sequences перед этим инструментом должен быть добавлен job Code Downloader

Поддерживаются два режима:

  • git — сканирование истории коммитов, ограничения:
    • Ограничено историей, доступной в локальной .git
    • Ограничено настройкой depth на этапе job code downloader (чем меньше depth — тем меньше коммитов попадёт в анализ).
    • Ограничено значением GIT_DEPTH (параметр –max-count для git log).
  • dir — сканирование файлов в рабочей директории (без истории коммитов)

Сканер использует официальный docker-образ:

  • registry.gitlab.com/gitlab-org/security-products/analyzers/secrets:latest

Команда запуска

Окно терминала
if [ "$GITLEAKS_MODE" = "git" ]; then
/analyzer run \
--target-dir "$SEC_CODE_FOLDER" \
--git-log-options "--max-count=$GIT_DEPTH" \
--indent
else
/analyzer run \
--target-dir "$SEC_CODE_FOLDER" \
--max-depth "$DIRECTORY_SCAN_DEPTH" \
--ignore-hidden-dirs="$SEARCH_IGNORE_HIDDEN_DIRS" \
--indent
fi
cp gl-secret-detection-report.json "/data/$REPORT_FILE_NAME"
ПеременнаяПримерОбязательнаяОписание
SEC_CODE_FOLDERДаПуть к исходному коду. Проставляется автоматический
REPORT_FILE_NAMEgl-secret-detection-report.jsonДаИмя отчёта
SCAN_TYPEGitLab GitleaksДаТип сканирования для парсинга
GITLEAKS_MODEdirДаРежим сканирования: история коммитов (git) или рабочая директория (dir).
GIT_DEPTH50ДаМаксимум коммитов для анализа в режиме git (передаётся через --git-log-options).
DIRECTORY_SCAN_DEPTH50ДаМаксимальная глубина обхода директорий в режиме dir.
SEARCH_IGNORE_HIDDEN_DIRSfalseНетИгнорировать скрытые директории в режиме dir (true/false).
  • Режим git зависит от того, как репозиторий был скачан до старта контейнера (например, git clone --depth 50). Сканер может анализировать только те коммиты, которые доступны в локальной .git
  • В логах могут появляться предупреждения (WARN) о попытках git fetch внутри контейнера — это ожидаемое поведение и само по себе не является ошибкой