Утечка секретов в репозитории — одна из самых частых и опасных ошибок в разработке. API-ключи, токены, пароли, приватные ключи, строки подключения к БД — всё это регулярно попадает в Git случайно: через .env, тестовые конфиги, дампы или даже комментарии в коде. Итог — компрометация инфраструктуры, доступ к облаку, утечка данных и финансовые потери.
Что считается секретом
- API keys и access tokens
- AWS/GCP/Azure credentials
- SSH private keys
- логины и пароли
- строки подключения к БД
- JWT secrets, webhook secrets, OAuth tokens
Почему Git особенно опасен
Даже если секрет удалили из последнего коммита, он может остаться в истории репозитория. Если репозиторий публичный или доступ к нему получили третьи лица, времени на реакцию почти нет. ⏱️
Как искать утечки: git-secrets
git-secrets — лёгкий инструмент для блокировки коммитов с секретами ещё до отправки в репозиторий.
Что делает:
- проверяет коммиты по шаблонам
- может ловить AWS-ключи и другие типовые секреты
- встраивается в Git hooks
Базовая логика:
- установить
git-secrets - подключить хуки в репозитории
- добавить паттерны поиска
- запретить коммит при совпадении
Плюс: проблема ловится на раннем этапе, до push. ✅
Как искать утечки глубже: TruffleHog
TruffleHog полезен, когда нужно проверить не только текущее состояние, но и историю Git, GitHub-репозитории, S3, CI-артефакты и другие источники.
Что умеет:
- анализировать историю коммитов
- искать по regex и entropy
- находить “случайные” токены, которые не попадают под простые шаблоны
- сканировать локальные и удалённые репозитории
Это особенно важно для аудита старых проектов и проверки open-source репозиториев. 🕵️
Как предотвратить утечки
- Никогда не храните секреты в коде и Git
- Используйте
.env, но не забывайте про.gitignore - Храните секреты в Vault, AWS Secrets Manager, Doppler, 1Password Secrets Automation
- Настройте pre-commit hooks с
git-secrets - Добавьте сканирование в CI/CD через
TruffleHog - Ограничивайте права токенов по принципу least privilege
- Регулярно ротируйте ключи
Что делать, если секрет уже утёк
- немедленно отозвать или перевыпустить ключ
- проверить логи доступа и подозрительную активность
- удалить секрет из истории Git специальными инструментами
- обновить все зависимые конфигурации
- провести аудит: где ещё мог использоваться ключ 🚨
Главный вывод
Защита секретов — это не разовая проверка, а обязательная часть DevSecOps-процесса. git-secrets помогает не допустить ошибку разработчика, а TruffleHog — найти то, что уже успело попасть в историю. Лучший результат даёт их совместное использование. 🔒
📌 В конце — полезный маршрут: локальная проверка, Git hooks, CI-сканирование, централизованное хранилище секретов и регулярная ротация ключей.
👀 Посмотрите подборку каналов про IT — там ещё больше практики, инструментов и разборов для разработчиков.