IaC, Terraform

Terraform и IaC: как читать чужую инфраструктуру как открытую книгу

Почему IaC — это золотая жила для аналитика

Когда инфраструктура описана кодом — это одновременно сила и слабость. Сила для команды разработки: всё воспроизводимо, версионировано, читаемо. Слабость для безопасности: тот, кто умеет читать .tf файлы, видит всю архитектуру сразу — без необходимости сканировать сеть часами.

Terraform стал стандартом де-факто для описания облачной инфраструктуры. AWS, GCP, Azure, DigitalOcean — всё это описывается одним языком HCL (HashiCorp Configuration Language). И если ты попал в репозиторий компании или нашёл утечку конфигов — ты буквально держишь в руках карту всей их инфраструктуры.

Анатомия Terraform-проекта

Типичная структура репозитория выглядит так:

Первым делом смотришь именно в этом порядке: outputs.tf → terraform.tfvars → backend.tf.

Что искать и где

terraform.tfvars и .tfvars.json

Это главный приз. Разработчики обязаны класть его в .gitignore, но регулярно забывают.

Ищи их через GitHub/GitLab поиск:

outputs.tf — карта эндпоинтов

Из outputs.tf ты узнаёшь все публичные и приватные эндпоинты без единого скана.

backend.tf — где лежит state

State-файл — это святой Грааль. Он содержит актуальное состояние всей инфраструктуры, включая все атрибуты ресурсов. Если S3 bucket публичный или ты нашёл ключи — качай state первым делом.

Разбор terraform.tfstate

State-файл — это JSON с полным описанием всего, что Terraform создал. Парсим его скриптом:

Запускаешь так:

И получаешь структурированный дамп всего интересного.

Читаем Security Groups — находим дыры в файерволе

Security groups в Terraform описывают правила доступа. Ищи конфиги с 0.0.0.0/0:

Автоматизируем поиск таких дыр:

Модули — где зарыты переиспользуемые секреты

Смотри на вызовы модулей — туда часто прокидывают чувствительные данные:

Быстрый grep для поиска хардкода прямо в .tf файлах:

Инструменты для автоматического аудита

Не изобретай велосипед — используй готовые тулзы:

  • tfsec — статический анализ безопасности Terraform-кода
  • checkov — широкий IaC-сканер (поддерживает Terraform, CloudFormation, K8s)
  • terrascan — ещё один статический анализатор с кучей политик
  • trufflehog — ищет секреты в git-истории, включая .tf файлы

Разведка через GitHub

Иногда не нужно ничего ломать — достаточно уметь искать:

Также проверяй GitHub Actions / GitLab CI конфиги — туда часто прокидывают TF_VAR_* переменные прямо в env, которые могут засветиться в логах.

Итог: чеклист при анализе чужой инфраструктуры

  • terraform.tfvars — первым делом, ищи в git-истории даже если удалён
  • terraform.tfstate — проверь доступность S3/GCS bucket из backend.tf
  • outputs.tf — мгновенная карта всех эндпоинтов
  • Security groups с 0.0.0.0/0 — это прямые векторы входа
  • Хардкодные секреты в main.tf и modules/*/main.tf
  • Git-история: git log --all --full-diff -p -- '*.tf' | grep -i password

IaC превращает инфраструктуру в документацию. Тот, кто умеет её читать — видит всё. Пользуйся этим знанием для защиты своих систем и аудита клиентских инфраструктур.

Terraform и IaC: как читать чужую инфраструктуру как открытую книгу

На этом все. Всем хорошего дня!