# Gitleaks

### Overview

Gitleaks — secrets-сканер для поиска утечек секретов в исходном коде (токены, ключи, пароли и т.п.). Подходит для “shift-left” контроля в CI/CD и регулярных проверок репозиториев.

### Requirements

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

### Run modes

* **dir** — скан директории/файлов (стабильный режим, не требует `.git`).
* **git** — скан git-репозитория (требует наличие `.git` в `SEC_CODE_FOLDER`).

### How it works <a href="#kak-rabotaet" id="kak-rabotaet"></a>

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

* `zricethezav/gitleaks:latest`

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

```bash
if [ "$GITLEAKS_MODE" = "git" ]; then
  gitleaks git "$SEC_CODE_FOLDER" --report-format json --report-path "/data/$REPORT_FILE_NAME" --redact
else
  gitleaks dir "$SEC_CODE_FOLDER" --report-format json --report-path "/data/$REPORT_FILE_NAME" --redact
fi
```

Флаг `--redact` включён всегда: найденные секреты маскируются в отчёте для безопасности

### Variables

| Переменная         | Пример          | Обязательная | Описание                                            |
| ------------------ | --------------- | ------------ | --------------------------------------------------- |
| SEC\_CODE\_FOLDER  |                 | Да           | Путь к исходному коду. Проставляется автоматический |
| REPORT\_FILE\_NAME | `gitleaks.json` | Да           | Имя отчёта                                          |
| SCAN\_TYPE         | `Gitleaks Scan` | Да           | Тип сканирования для парсинга                       |
| GITLEAKS\_MODE     | `dir`           | Да           | Режим запуска: `dir` или `git`                      |

### Notes

* Режим `git` работает корректно только если в `$SEC_CODE_FOLDER` доступен полноценный git-репозиторий (папка `.git`). Если репозиторий скачан как архив/копия без `.git`, используйте `dir`
* Режим `dir` сканирует текущие файлы в директории и не анализирует историю коммитов

### Links

* [Gitleaks Github](https://github.com/gitleaks/gitleaks)
