Ответ
Нет, локальный state-файл (terraform.tfstate) по умолчанию не шифруется. Он хранится в виде обычного JSON-файла, содержащего в открытом виде все ресурсы, их атрибуты, а иногда и чувствительные данные (пароли, приватные ключи, токены). Хранить его локально или в Git — серьезная угроза безопасности.
Как мы решаем эту проблему в продакшене:
- Используем удаленный бэкенд с шифрованием. Например, AWS S3 с включенным шифрованием на стороне сервера (SSE-S3 или SSE-KMS) и блокировкой состояния через DynamoDB.
terraform { backend "s3" { bucket = "company-terraform-state-prod" key = "network/terraform.tfstate" region = "eu-west-1" encrypt = true dynamodb_table = "terraform-state-lock" } } - Никогда не коммитим state-файлы. Они добавлены в глобальный
.gitignore. - Управляем доступом. Доступ к бакету с state имеют только CI/CD пайплайны и инженеры через IAM-роли.
- Для чувствительных выходных данных используем механизм
sensitive = trueв output или внешние системы хранения секретов (HashiCorp Vault, AWS Secrets Manager).