Сканирование секретов и зашитые учётные данные
Не допускайте добавления ключей API и паролей в репозиторий с помощью git-secrets, gitleaks и перехватчиков предварительной фиксации.
«Сканирование секретов и зашитые учётные данные» — бесплатный урок Cyber Security Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cyber Security Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cyber Security Academy содержит 4 уроков всего.
Проблема секретов, зашитых в код
Разработчики случайно фиксируют ключи API, пароли, закрытые ключи и токены в репозиториях исходного кода. Оказавшись в истории системы контроля версий, они сохраняются даже после удаления. Общедоступные репозитории боты просматривают в течение нескольких секунд после отправки изменений.
Что попадает в репозиторий
Распространённые секреты, найденные в репозиториях:
- Ключи доступа AWS (
AKIA...) - Персональные токены доступа GitHub
- Пароли баз данных в файлах config
- Ключи API Stripe и платёжных систем
- Закрытые ключи TLS/SSH
- URL веб-обработчиков Slack
Перехватчики перед фиксацией для предотвращения
Не допускайте попадания секретов в систему контроля версий:
# Install gitleaks as a pre-commit hook:
pip install pre-commit
# .pre-commit-config.yaml:
repos:
- repo: https://github.com/zricethezav/gitleaks
rev: v8.18.1
hooks:
- id: gitleaksСканирование существующих репозиториев
Просканируйте существующие repos на наличие секретов:
# gitleaks: scan entire git history
gitleaks detect --source . --log-opts="--all"
# truffleHog: high-entropy string + regex detection
trufflehog git file://.
# GitHub secret scanning (automatic for public repos)
# Alerts under Security → Secret scanning alertsСканирование секретов в GitHub
GitHub автоматически сканирует общедоступные репозитории на наличие известных шаблонов секретов (ключей AWS, токенов GitHub и т. д.) и уведомляет поставщика. Для частных репозиториев GitHub Advanced Security расширяет эту возможность. Такие поставщики, как AWS, автоматически отзывают ключи при обнаружении.
Решение с помощью .gitignore и его ограничения
Добавление .env в .gitignore предотвращает случайную фиксацию изменений. Но разработчики всё равно фиксируют секреты в других файлах, а .gitignore не помогает, если файл уже был зафиксирован. Защита в несколько уровней: .gitignore + перехватчики перед фиксацией + сканирование CI.
Использование переменных окружения
Секреты никогда не должны появляться в коде. Используйте переменные окружения, загружаемые во время выполнения:
# Python:
import os
api_key = os.environ["API_KEY"]
# Node.js with dotenv (for local dev only):
require("dotenv").config()
const apiKey = process.env.API_KEY
# Never commit .env to gitМенеджеры секретов
Приложения в рабочей среде должны использовать специализированные менеджеры секретов:
- AWS Secrets Manager — автоматическая ротация, доступ под управлением IAM
- HashiCorp Vault — открытый исходный код, корпоративные возможности, множество серверных систем
- Azure Key Vault / GCP Secret Manager
Секреты никогда не хранятся в коде или в переменных окружения на диске.
Ротация скомпрометированных секретов
Если секрет раскрыт:
- Немедленно отзовите секрет (до начала расследования)
- Проверьте журналы доступа на наличие несанкционированного использования
- Создайте новый секрет
- Обновите все системы, использующие старый секрет
- Удалите секрет из истории системы контроля версий с помощью
git-filter-repoили BFG Repo Cleaner
Удаление секретов из истории системы контроля версий
После отзыва удалите секрет из истории:
# BFG Repo Cleaner (faster than filter-branch):
java -jar bfg.jar --delete-files .env repo.git
git reflog expire --expire=now --all
git gc --prune=now --aggressive
git push --force
# Note: force push rewrites history - coordinate with teamСекреты в конвейерах CI/CD
У систем CI/CD есть собственные средства управления секретами:
- GitHub Actions: секреты хранятся в настройках репозитория или организации → доступны как
${{ secrets.API_KEY }} - GitLab CI: переменные CI/CD
- Jenkins: плагин учётных данных
Маскируйте секреты в журналах. Никогда не выводите их в отладочные данные.
Быстрая проверка: сканирование секретов
Какова наиболее эффективная первая линия защиты от попадания секретов в репозиторий?
Итоги урока
Секреты, зашитые в системе контроля версий, представляют критический риск: общедоступные репозитории боты просматривают в течение нескольких секунд. Предотвращение: перехватчики перед фиксацией (gitleaks), .gitignore. Обнаружение: truffleHog, сканирование секретов GitHub. Храните секреты в переменных окружения или специализированных менеджерах секретов (Vault, AWS Secrets Manager). При раскрытии немедленно выполняйте ротацию и удаляйте секреты из истории системы контроля версий с помощью BFG Repo Cleaner.
Часто задаваемые вопросы
Урок «Сканирование секретов и зашитые учётные данные» бесплатный?
Да — полный текст урока «Сканирование секретов и зашитые учётные данные» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cyber Security Academy, подпишись на CoddyKit PRO. Курс Cyber Security Academy содержит 4 уроков всего.
Чему я научусь в уроке «Сканирование секретов и зашитые учётные данные»?
Не допускайте добавления ключей API и паролей в репозиторий с помощью git-secrets, gitleaks и перехватчиков предварительной фиксации. Ты практикуешь Cyber Security Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cyber Security Academy?
Предыдущий опыт не требуется. Cyber Security Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Сканирование секретов и зашитые учётные данные»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cyber Security Academy?
Да. Каждый урок Cyber Security Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- SAST и DAST в конвейерах CI/CD
- Анализ состава программного обеспечения (SCA)
- Сканирование секретов и зашитые учётные данные
- Чемпионы по безопасности и моделирование угроз