Jika Anda menggunakan AWS, lihat "Cara yang Tepat untuk Mengelola Rahasia" oleh Segment.io di Blog AWS. Kami menganjurkan penggunaan chamber
untuk semua pelanggan kami untuk mengelola rahasia. Ia bekerja dengan memanfaatkan Toko Parameter Manajer Sistem (SSM) AWS bersama dengan kunci KMS. Ini memastikan rahasia dienkripsi saat istirahat (dan dalam perjalanan), dijamin dengan IAM, dapat diaudit dengan CloudTrails, dan hanya diekspos sebagai variabel lingkungan pada saat dijalankan.
Setelah mengkonfigurasi ruang dan mengatur kunci KMS, kami menulis rahasia ke toko parameter.
chamber write db TF_VAR_DB_USER foobar
chamber write db TF_VAR_DB_PASS secret
Kemudian gunakan rahasia itu ketika Anda menelepon terraform.
chamber exec db -- terraform plan
Ini mengasumsikan Anda telah mendefinisikan variabel yang dipanggil DB_USER
dan DB_PASS
dalam kode HCL Anda.
Misalnya, Anda dapat menambahkan ini ke variables.tf
variable "DB_USER" { }
variable "DB_PASS" { }
CATATAN: chamber
akan selalu mengekspor variabel lingkungan dalam huruf besar
Kami menyediakan modul terraform yang dipanggil terraform-aws-kms-key
untuk memudahkan penyediaan kunci KMS. Lihat dokumentasi terperinci kami dengan contoh-contoh cara menggunakan chamber
dengan banyak ruang nama serta cara menggunakan ruang dengan terraform untuk mengelola rahasia. Lihat contoh referensi lengkap kami untuk dependensi ruang penyediaan.
Adapun .tfstate
, Anda memunculkan poin yang sangat bagus tentang keberadaan rahasia teks biasa di file negara. Benar-benar tidak ada jalan lain untuk ini. Agar terraform menghitung perubahan untuk membangun rencana, ia perlu mengetahui status "sebelum" dan "setelah". Untuk alasan ini, kami sarankan menggunakan ember S3 terenkripsi dengan versi wajib. Gunakan terraform-aws-tfstate-backend
modul untuk menyediakan ember dan tabel penguncian DynamoDB sesuai dengan praktik terbaik.