AWS Secrets Manager และ Parameter Store
การใช้งาน Data Stores บน AWS
Dunieski Otano
AWS Solutions Architect
หายนะจากการฝังรหัสผ่านในโค้ด
นักพัฒนาฝังรหัสผ่านฐานข้อมูลไว้ในโค้ดโดยตรง
โค้ดถูก push ขึ้น GitHub แบบสาธารณะ
ผู้โจมตีพบรหัสผ่านภายใน 12 นาที
ฐานข้อมูลถูกลบ และมีการเรียกค่าไถ่
ทำไมถึงไม่ควรฝัง secret ในโค้ด
ความผิดพลาดที่พบบ่อย
ฝังไว้ในโค้ดโดยตรง
เก็บเป็น plain text ในไฟล์ config
commit ขึ้น version control
ผลที่ตามมา
เปิดเผยใน public repository
เปลี่ยน credential ได้ยาก
ไม่มี audit trail
ภาพรวม AWS Secrets Manager
วัตถุประสงค์
จัดเก็บและหมุนเวียน credential โดยอัตโนมัติ
สิ่งที่ควรเก็บ
รหัสผ่านฐานข้อมูล, API key, OAuth token
ฟีเจอร์หลัก
หมุนเวียนอัตโนมัติ, เข้ารหัสด้วย KMS, บันทึก audit log
การหมุนเวียนอัตโนมัติของ Secrets Manager
กระบวนการหมุนเวียน
Lambda function อัปเดต credential
ช่วงเวลาหมุนเวียน
กำหนดได้ด้วย rate หรือ cron
ไม่มี downtime
รหัสผ่านเก่าและใหม่ใช้งานได้พร้อมกันระหว่างการหมุนเวียน
การเก็บ secret ในรูปแบบ JSON
Secret แบบมีโครงสร้าง
เก็บหลายค่าในหนึ่ง secret
รูปแบบ JSON
{"username": "admin", "password": "...", "host": "db.example.com"}
ดึงและแยกค่า
ใช้ GetSecretValue API
ภาพรวม Parameter Store
ส่วนหนึ่งของ
AWS Systems Manager
วัตถุประสงค์
จัดเก็บค่า configuration และ static secret
การจัดระเบียบแบบลำดับชั้น
/app/prod/db/password
/app/dev/api-key
Free tier
รองรับสูงสุด 10,000 standard parameter (ขนาดสูงสุด 4 KB)
Advanced parameter (ขนาดสูงสุด 8 KB) มีค่าใช้จ่าย
ประเภท parameter ใน Parameter Store
String
ค่า configuration แบบ plain text (feature flag, endpoint)
StringList
ค่าที่คั่นด้วยจุลภาค (IP address)
SecureString
เข้ารหัสด้วย KMS (รหัสผ่าน, API key)
คู่มือเลือกใช้ Secrets Manager หรือ Parameter Store
ใช้ Secrets Manager เมื่อ
ต้องการหมุนเวียนอัตโนมัติ
จัดเก็บ credential ของฐานข้อมูล
ใช้ Parameter Store เมื่อ
ค่า configuration ที่ไม่เปลี่ยนแปลง
ต้องการประหยัดค่าใช้จ่าย (free tier)
ใช้ร่วมกันทั้งสอง
รูปแบบที่พบบ่อยในระบบ production
มาฝึกกันเถอะ!
การใช้งาน Data Stores บน AWS
Preparing Video For Download...