Pre-commit хуки — это автоматические проверки, которые запускаются до коммита в Git. Для безопасности они особенно полезны: помогают не допустить в репозиторий секреты, уязвимые зависимости, небезопасные паттерны и даже ошибки IaC-конфигов. Это снижает риск утечки ключей, компрометации CI/CD и дорогостоящих исправлений после релиза.
Что обычно проверяют pre-commit сканеры
- Секреты: API keys, токены, пароли, .env, приватные ключи
- Зависимости: известные CVE в пакетах
- Код: небезопасные функции, SQL-инъекции, использование eval, слабая криптография
- IaC и Docker: ошибки в Terraform, Kubernetes-манифестах, Dockerfile
- Git hygiene: большие файлы, временные артефакты, случайные бинарники
Популярные инструменты 🛠️
- pre-commit — фреймворк для управления хуками
- gitleaks / detect-secrets — поиск секретов
- bandit — анализ Python-кода
- trivy — сканирование зависимостей, контейнеров и IaC
- checkov — проверка Terraform/Kubernetes/CloudFormation
Базовая настройка
-
Установите pre-commit:
pip install pre-commit -
Создайте .pre-commit-config.yaml:
repos: - repo: https://github.com/gitleaks/gitleaks rev: v8.18.2 hooks: - id: gitleaks - repo: https://github.com/pycqa/bandit rev: 1.7.9 hooks: - id: bandit args: ["-r", "."] - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.6.0 hooks: - id: check-yaml - id: end-of-file-fixer - id: detect-private-key -
Активируйте хуки:
pre-commit install -
Прогоните вручную по всему проекту:
pre-commit run --all-files
Практические рекомендации ⚙️
- Начинайте с поиска секретов — это даёт самый быстрый эффект
- Фиксируйте версии хуков, чтобы избежать неожиданных изменений
- Уменьшайте false positive через baseline или исключения, но не отключайте проверки без причины
- Дублируйте критичные проверки в CI/CD: локальный хук можно обойти
- Добавьте инструкцию по установке в README, иначе часть команды не включит хуки
- Проверяйте только изменённые файлы для скорости, а полный скан запускайте в CI
Частые ошибки
- Ставить слишком много тяжёлых проверок — разработчики начнут их отключать 😬
- Надеяться только на локальные хуки — без CI защита неполная
- Игнорировать найденные секреты вместо их ротации
- Не обновлять правила и версии сканеров
Итог
Pre-commit сканеры безопасности — это простой способ сдвинуть security “влево” и ловить проблемы до попадания в репозиторий. Минимальный набор — gitleaks + базовые pre-commit-hooks, а дальше можно расширять проверками кода, зависимостей и инфраструктуры 🚀
📌 В конце загляните в подборку каналов про IT — там собраны полезные источники по разработке, DevSecOps и инфраструктуре.