0Pricing
Cyber Security Academy · Урок

Сканирование секретов и зашитые учётные данные

Не допускайте добавления ключей 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

Секреты никогда не хранятся в коде или в переменных окружения на диске.

Ротация скомпрометированных секретов

Если секрет раскрыт:

  1. Немедленно отзовите секрет (до начала расследования)
  2. Проверьте журналы доступа на наличие несанкционированного использования
  3. Создайте новый секрет
  4. Обновите все системы, использующие старый секрет
  5. Удалите секрет из истории системы контроля версий с помощью 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 — локальная установка не требуется.

Все уроки этого курса

  1. SAST и DAST в конвейерах CI/CD
  2. Анализ состава программного обеспечения (SCA)
  3. Сканирование секретов и зашитые учётные данные
  4. Чемпионы по безопасности и моделирование угроз
← Назад к Cyber Security Academy