หากคุณใช้ AWS ให้ดูที่"วิธีการจัดการความลับที่ถูกต้อง"โดยSegment.ioบนบล็อก AWS เราสนับสนุนchamber
ให้ลูกค้าของเราทุกคนใช้จัดการความลับ มันทำงานโดยใช้ประโยชน์จากที่เก็บพารามิเตอร์ผู้จัดการ AWS Systems Manager (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
คุณทำให้จุดที่ดีจริงๆเกี่ยวกับการดำรงอยู่ของความลับข้อความธรรมดาในไฟล์รัฐ ไม่มีทางรอบนี้จริงๆ เพื่อให้ terraform สามารถคำนวณการเปลี่ยนแปลงเพื่อสร้างแผนจำเป็นต้องทราบสถานะ "ก่อน" และ "หลัง" ด้วยเหตุนี้เราขอแนะนำให้ใช้ที่ฝากข้อมูล S3 ที่เข้ารหัสพร้อมการกำหนดเวอร์ชันที่จำเป็น ใช้terraform-aws-tfstate-backend
โมดูลเพื่อจัดเตรียมที่ฝากข้อมูลและตารางล็อค DynamoDB ตามแนวทางปฏิบัติที่ดีที่สุด