HashiCorp Vault
Тема дорожной карты · Terraform
HashiCorp Vault с Terraform — это паттерн интеграции, использующий провайдер Terraform vault для чтения динамических секретов — учётных данных баз данных, AWS STS-токенов, PKI-сертификатов — из HashiCorp Vault во время terraform plan с их внедрением в конфигурации ресурсов без фиксации секретов в HCL-файлах или tfvars. Движок динамических секретов Vault генерирует краткосрочные учётные данные по требованию, так что каждый terraform apply получает свежий токен с TTL, значительно сокращая окно уязвимости по сравнению со статическими секретами. Источник данных vault_generic_secret и ресурсо-специфичные источники данных Vault (например, vault_aws_access_credentials) являются основными строительными блоками для интеграций HashiCorp Vault с Terraform. Команды, использующие HashiCorp Vault с Terraform, должны также помечать все Vault-источники выходных данных как sensitive = true и ограничивать доступ к remote-state, поскольку terraform.tfstate может содержать разрешённые значения секретов после apply.
Как это работает
HashiCorp Vault — как секреты попадают в Terraform без попадания в git или plaintext-state. Варианты: env vars (TF_VAR_db_password), data-источники (data "aws_secretsmanager_secret_version" "db"), провайдер Vault, SOPS-зашифрованные *.tfvars, cloud-managed secrets (Yandex Lockbox, AWS Secrets Manager). State-файлы содержат resolved значения — шифруйте backend bucket + ограничивайте доступ. sensitive = true для переменных — для редакции в plan-выводе.
Когда применять
Никогда не коммитьте секреты в *.tf или *.tfvars в git. В CI — env vars; в production — secrets manager. Шифруйте state at rest (S3 SSE, Yandex Object Storage encryption) и ограничивайте, кто может его читать. Для team dev — SOPS-шифрованные tfvars + age/PGP-ключи. Периодический аудит terraform state pull | grep -i secret.
Типичные ошибки
Ловушки HashiCorp Vault: output "password" { value = ... } без sensitive = true (печатается в CI-логах); секреты в tags или name ресурсов (state их содержит); ротация секрета руками, потом Terraform перезаписывает на следующий apply; расчёт, что "state-файл приватный" без проверки прав на backend. Read state — это audit-дыра.
Связанные понятия
Полезные ресурсы
Проверить знания (1)
Загрузка вопросов…