Шифрование state
Тема дорожной карты · Terraform
Шифрование состояния Terraform — это практика шифрования файла terraform.tfstate для защиты чувствительных атрибутов ресурсов — паролей, приватных ключей, API-токенов — которые Terraform по умолчанию хранит в открытом тексте. Большинство production-grade удалённых бэкендов автоматически обеспечивают серверное шифрование: S3 поддерживает SSE-S3 и SSE-KMS, Azure Blob Storage использует ключи, управляемые Microsoft или клиентом, а Terraform Cloud шифрует состояние в покое на всех уровнях. OpenTofu 1.7 ввёл нативный блок encryption {} в конфигурацию бэкенда, поддерживающий клиентское шифрование с AES-GCM до загрузки состояния на любой бэкенд. Шифрование состояния Terraform является обязательным требованием для любой конфигурации, управляющей базами данных, IAM-учётными данными или TLS-сертификатами, и должно комбинироваться с контролем доступа, версионированием и пометкой выходных данных sensitive = true для полноценной позиции управления секретами.
Как это работает
Шифрование state — источник истины того, что Terraform считает существующим. Маппит HCL-ресурсы к реальным ID + трекает атрибуты. Local state (terraform.tfstate) ок для соло-обучения; всегда используйте remote backend (S3+DynamoDB, Yandex Object Storage+lockable, Terraform Cloud, GitLab, или terraform login) для команды и production — даёт state locking (предотвращает конкурентные apply), versioned history, контроль доступа. State может содержать секреты — шифруйте.
Когда применять
Remote backend — с первого дня любого командного проекта. Делите state per environment + per concern (один большой state = blast radius на плохом изменении). Подкоманды terraform state (mv, rm, import) — осторожно, они напрямую мутируют state. Drift-detection — terraform plan в CI по расписанию.
Типичные ошибки
Ловушки Шифрование state: коммит terraform.tfstate в git (содержит секреты + не выдержит конкурентных правок); удаление state "начать заново" (осиротит каждый ресурс — останутся в облаке, не отслеживаются, тратят деньги); два человека одновременный apply без локинга (corruption state); state-хирургия (state rm + import) без бекапа предыдущего state.