Якщо ви перебуваєте на AWS, перегляньте "Правильний шлях управління секретами" від Segment.io в блозі AWS. Ми радимо використовувати chamber
всі наші клієнти для управління секретами. Він працює за допомогою використання магазину параметрів AWS Systems Manager Parameter Store (SSM) разом з ключами KMS. Це гарантує, що секрети шифруються в спокої (і в дорозі), захищені IAM, перевіряються CloudTrails і піддаються впливу лише змінних оточення під час виконання.
Після налаштування камери та налаштування ключа KMS ми записуємо секрети у сховище параметрів.
chamber write db TF_VAR_DB_USER foobar
chamber write db TF_VAR_DB_PASS secret
Потім використовуйте ці секрети, коли ви називаєте тераформу.
chamber exec db -- terraform plan
Це передбачає, що ви визначили змінну, яка називається DB_USER
та DB_PASS
у вашому коді HCL.
Наприклад, ви можете додати це variables.tf
variable "DB_USER" { }
variable "DB_PASS" { }
ПРИМІТКА: chamber
завжди буде експортуватися змінна середовище у великому регістрі
Ми надаємо модуль тераформи, який покликаний terraform-aws-kms-key
полегшити надання ключа KMS. Ознайомтеся з нашою детальною документацією з прикладами того, як використовувати chamber
з кількома просторами імен, а також як використовувати камеру з тераформою для управління секретами. Дивіться наш повний довідковий приклад щодо забезпечення залежностей від камери.
Щодо того .tfstate
, ви підкреслюєте дійсно хороший пункт про існування текстових секретів у файлі стану. Насправді цього не обійти. Для того, щоб тераформа підрахувала зміни для побудови плану, він повинен знати стан "до" і "після". З цієї причини рекомендуємо використовувати зашифроване відро S3 з обов’язковою версією. Використовуйте terraform-aws-tfstate-backend
модуль для забезпечення відра та таблиці блокування DynamoDB відповідно до кращих практик.