Использование Vault для шифрования удаленного состояния Terraform, хранящегося в Консуле
На сегодняшний день управление секретами, такими как ключи доступа и идентификаторы облачного провайдера, является открытой проблемой в проекте Terraform (см. Проблему с github). Всякий раз, когда мы бежим terraform plan
или же terraform apply
эти секреты хранятся в виде простого текста в файле состояния terraform. Существует множество сторонних сценариев редактирования и шифрования, таких как terrahelp.
Мой вопрос: Консул является родным бэкэндом для хранения удаленного состояния Terraform. Можно ли использовать Vault для шифрования файлов состояния, хранящихся в Консуле? Я попытался выполнить поиск по документации бэкэнда Terraform, но не смог найти никаких флагов конфигурации, которые позволили бы Консулу использовать Vault для шифрования файла состояния.
1 ответ
Как бы мне ни хотелось эта функция, к сожалению, я не думаю, что это возможно в данный момент. Если вы хотите, чтобы весь ваш файл состояния был зашифрован, то вам нужно будет выбрать другой бэкэнд, который поддерживает это из коробки, например, s3 с включенным шифрованием сегментов.
Также было бы неплохо, если бы существовал официальный способ подключиться к процедуре чтения / хранения файла состояния для включения шифрования хранилища (или любых других пользовательских требований) самостоятельно, но на самом деле это также невозможно.
Небольшая заметка на сайте: terraform plan
ничего не пишет в Statefile. Это операция только для чтения, так как в противном случае ее нельзя было бы считать безопасной для использования.