Jeśli korzystasz z AWS, spójrz na „Właściwy sposób zarządzania sekretami” autorstwa Segment.io na blogu AWS. Zalecamy korzystanie chamber
ze wszystkich naszych klientów w celu zarządzania tajemnicami. Działa poprzez wykorzystanie magazynu parametrów AWS Systems Manager (SSM) wraz z kluczami KMS. Zapewnia to, że sekrety są szyfrowane w spoczynku (i podczas transportu), zabezpieczone za pomocą IAM, kontrolowane za pomocą CloudTrails i ujawnione tylko jako zmienne środowiskowe w czasie wykonywania.
Po skonfigurowaniu komory i ustawieniu klucza KMS zapisujemy sekrety do magazynu parametrów.
chamber write db TF_VAR_DB_USER foobar
chamber write db TF_VAR_DB_PASS secret
Następnie używaj tych tajemnic, gdy wywołujesz terraform.
chamber exec db -- terraform plan
Zakłada się, że zdefiniowałeś zmienną o nazwie DB_USER
iw DB_PASS
swoim kodzie HCL.
Na przykład możesz to dodać variables.tf
variable "DB_USER" { }
variable "DB_PASS" { }
UWAGA: chamber
zawsze eksportuje zmienne środowiskowe dużymi literami
Udostępniamy moduł terraform, którego terraform-aws-kms-key
zadaniem jest ułatwienie obsługi klucza KMS. Sprawdź naszą szczegółową dokumentację z przykładami korzystania chamber
z wielu przestrzeni nazw, a także korzystania z komory z terraformem do zarządzania sekretami. Zobacz nasz pełny przykład odniesienia dla zależności zależności od komory.
Co do tego .tfstate
, poruszasz bardzo dobrą kwestię dotyczącą istnienia tajemnic zwykłego tekstu w pliku stanu. Naprawdę nie da się tego obejść. Aby terraform mógł obliczyć zmiany w celu zbudowania planu, musi znać stan „przed” i „po”. Z tego powodu zalecamy używanie zaszyfrowanego segmentu S3 z obowiązkową wersją. Użyj terraform-aws-tfstate-backend
modułu, aby udostępnić segment i tabelę blokującą DynamoDB zgodnie z najlepszymi praktykami.