การเข้ารหัสข้อมูล: KMS, ACM และ Secrets Manager
Encryption at rest / in transit, บริการจัดการกุญแจและใบรับรอง
ข้อมูลใน S3 ที่เข้ารหัสเหมือนเอกสารในตู้เซฟ (at rest) — ต่อให้ขโมยยกตู้ไปก็เปิดไม่ได้ · ข้อมูลที่ส่งผ่าน HTTPS เหมือนใส่รถหุ้มเกราะระหว่างขนส่ง (in transit) · KMS คือร้านกุญแจกลางที่ผลิต เก็บ และจดบันทึกทุกครั้งที่มีคนเบิกกุญแจ
สามบริการที่ต้องจับคู่ให้ถูก
- AWS KMS (Key Management Service) — สร้าง/จัดการกุญแจเข้ารหัส ใช้เปิด encryption at rest ให้ S3, EBS, RDS ฯลฯ ทุกการใช้กุญแจถูกบันทึกใน CloudTrail
- AWS Certificate Manager (ACM) — ออกและต่ออายุ TLS/SSL certificate ให้ฟรีสำหรับใช้กับบริการ AWS (เช่น Load Balancer, CloudFront) เพื่อเปิด HTTPS
- AWS Secrets Manager — เก็บความลับของแอป (รหัสผ่าน DB, API key) แบบเข้ารหัส พร้อมหมุนเวียน (rotate) อัตโนมัติ
แนวคิดที่ข้อสอบวัดจริงๆ คือ defense in depth — ความปลอดภัยหลายชั้นซ้อนกัน: จำกัดสิทธิ์ด้วย IAM (ใครเข้าถึงได้), เข้ารหัสข้อมูลทั้งตอนเก็บและตอนส่ง (ต่อให้หลุดก็อ่านไม่ออก), และเก็บ log ตรวจสอบย้อนหลัง (รู้ว่าใครทำอะไร) — สามชั้นนี้ประกอบกันเป็นคำตอบของโจทย์ security ระดับ Practitioner เกือบทั้งหมด
สรุป Key Takeaways
- At rest = ข้อมูลนอนในดิสก์ (KMS) · In transit = ข้อมูลวิ่งบนสาย (TLS ผ่าน ACM)
- KMS = ศูนย์จัดการกุญแจเข้ารหัส ผูกกับบริการ AWS แทบทุกตัว
- Secrets Manager = เก็บ+หมุนเวียนรหัสผ่าน/API key แทนการ hardcode ในโค้ด
คำถามที่พบบ่อย
Encryption at rest กับ in transit ต่างกันอย่างไร
At rest = เข้ารหัสข้อมูล "ตอนนอนอยู่" ในดิสก์/S3/ฐานข้อมูล (ใช้ KMS จัดการกุญแจ) · In transit = เข้ารหัสข้อมูล "ตอนวิ่ง" ระหว่างเครื่อง ผ่าน TLS/HTTPS (ใช้ certificate จาก ACM) — โจทย์บอกสถานะข้อมูลมา ให้เลือกคู่ที่ถูก
KMS คืออะไร ระดับ CLF ต้องรู้แค่ไหน
AWS Key Management Service — บริการสร้างและจัดการกุญแจเข้ารหัสแบบรวมศูนย์ ผูกกับบริการอื่นทั่ว AWS (S3, EBS, RDS เปิดเข้ารหัสด้วยกุญแจ KMS ได้ในคลิกเดียว) ระดับ CLF จำว่า "จัดการกุญแจเข้ารหัส = KMS" และการใช้กุญแจถูกบันทึกตรวจสอบได้
Secrets Manager ต่างจากการเก็บรหัสผ่านในโค้ดอย่างไร
เก็บ "ความลับ" (รหัสผ่านฐานข้อมูล, API key) ไว้ในบริการกลางที่เข้ารหัส ควบคุมสิทธิ์ด้วย IAM และหมุนเวียนรหัสอัตโนมัติได้ — แอปดึงความลับตอน runtime แทนการ hardcode ซึ่งเสี่ยงรั่วเมื่อโค้ดถูกแชร์

