AWS Cloud Quest · แลป 3
Core Security Concepts — AWS IAM และความปลอดภัย
เป้าหมายของแล็บ
เรียนรู้การกำหนดว่าใครหรือบริการใดเข้าถึง AWS resource ได้ และทำอะไรได้บ้าง โดยใช้ IAM users, groups, roles และ policies พร้อมหลักการให้สิทธิ์เท่าที่จำเป็น
Shared Responsibility Model
AWS แบ่งความรับผิดชอบด้านความปลอดภัยเป็นสองส่วน:
- *Security of the Cloud:* AWS รับผิดชอบความปลอดภัยของโครงสร้างพื้นฐานคลาวด์ เช่น ศูนย์ข้อมูล ฮาร์ดแวร์ และโครงสร้างพื้นฐานของบริการ
- *Security in the Cloud:* ลูกค้ารับผิดชอบการตั้งค่าตามบริการที่ใช้ เช่น IAM permissions, ข้อมูล, การตั้งค่าเครือข่าย, การจัดการ credentials และการ patch ระบบปฏิบัติการบน EC2
ระดับความรับผิดชอบขึ้นกับบริการ ตัวอย่างเช่น EC2 ลูกค้าจัดการ OS ภายใน instance มากกว่าใช้บริการฐานข้อมูลแบบ managed ที่ AWS ดูแลส่วนระบบฐานข้อมูลให้มากขึ้น
IAM components
- IAM User: identity สำหรับบุคคลหรือ workload บางรูปแบบ แต่แนวทางปัจจุบันควรใช้ temporary credentials และ federation/roles เมื่อเหมาะสม แทนการสร้าง long-term access keys โดยไม่จำเป็น
- IAM Group: กลุ่มผู้ใช้ที่ช่วยจัดการ permissions ร่วมกัน
- IAM Role: identity ที่มี permissions ซึ่ง principal ที่ได้รับอนุญาตสามารถ assume เพื่อรับ temporary credentials; ใช้ได้กับ AWS services และการเข้าถึงข้ามบัญชี
- IAM Policy: เอกสาร JSON ที่กำหนด permissions เช่น
Effect,Action,ResourceและอาจมีCondition - Root user: identity เจ้าของบัญชีที่มีสิทธิ์ระดับสูงมาก ควรปกป้องอย่างเข้มงวดและไม่ใช้ทำงานประจำวัน
หลักการสำคัญ
- Least privilege: ให้สิทธิ์เฉพาะที่จำเป็นต่อหน้าที่ ไม่ใช้
AdministratorAccessเป็นคำตอบเริ่มต้นสำหรับทุกคน - MFA: เปิด multi-factor authentication โดยเฉพาะบัญชีที่มีสิทธิ์สูง และปกป้อง root user
- Temporary credentials: ใช้ IAM roles/STS หรือระบบ federation เมื่อเหมาะสม ลดการพึ่งพา access keys แบบถาวร
- Protect credentials: ห้ามฝัง access keys หรือรหัสผ่านไว้ใน source code, repository หรือ AMI โดยไม่จำเป็น
- Review permissions: ตรวจและลบผู้ใช้ access keys และ permissions ที่ไม่ใช้งาน
- Explicit deny: ในการประเมิน policy การปฏิเสธอย่างชัดเจนมีผลเหนือการอนุญาตที่ขัดแย้งกัน ส่วนการอนุญาตต้องมี policy ที่ให้สิทธิ์และไม่มี explicit deny ที่มีผลบังคับ
วิธีอ่าน IAM policy เบื้องต้น
ตัวอย่างโครงสร้าง policy (เป็นเพียงตัวอย่างเพื่อเรียนรู้ ไม่ใช่ policy ที่ควรนำไปใช้จริงโดยไม่ตรวจ resource และเงื่อนไข):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": "arn:aws:s3:::example-bucket"
}
]
}-
Effect:AllowหรือDeny -
Action: API action ที่อนุญาต/ปฏิเสธ -
Resource: ARN ของ resource ที่ policy มีผล -
Condition: เงื่อนไขเพิ่มเติม เช่น IP, tag หรือค่า context อื่น
หลักการจำ: ใคร (Principal) ทำอะไร (Action) กับอะไร (Resource) ภายใต้เงื่อนไขใด (Condition)
Identity-based และ resource-based policy
- Identity-based policy: ผูกกับ user, group หรือ role เพื่อกำหนดว่าตัวตนนั้นทำอะไรได้
- Resource-based policy: ผูกกับ resource เพื่อกำหนดว่าใครเข้าถึง resource ได้ เช่น S3 bucket policy
- IAM role: เหมาะเมื่อ EC2 หรือ AWS service ต้องเรียกบริการอื่น เช่น ให้ EC2 อ่าน S3 โดยไม่เก็บ access key ไว้ในเครื่อง
บริการด้านความปลอดภัยที่ควรรู้
- AWS IAM: identity และ permissions
- AWS KMS: สร้างและจัดการ cryptographic keys สำหรับการเข้ารหัสที่บริการต่าง ๆ ใช้งาน
- AWS Secrets Manager: เก็บและจัดการ secrets เช่น database credentials และช่วยจัดการ rotation ในกรณีที่รองรับ
- AWS CloudTrail: บันทึกกิจกรรม API และเหตุการณ์ที่เกิดในบัญชี เพื่อใช้ตรวจสอบย้อนหลัง
- Amazon CloudWatch: metrics, logs และ alarms สำหรับ monitoring; ไม่ใช่บริการเดียวกับ CloudTrail
- Amazon GuardDuty: ตรวจจับภัยคุกคามจากสัญญาณและ log sources ที่รองรับ
- AWS WAF: ช่วยกรอง/ควบคุม HTTP(S) requests ต่อ web applications
- AWS Shield: การป้องกัน DDoS ตามระดับบริการที่ใช้
สถานการณ์ที่ออกสอบได้
- ต้องให้ EC2 เข้าถึง S3 โดยไม่เก็บ access key ในโค้ด → IAM Role สำหรับ EC2
- ต้องให้พนักงานหลายคนมี permissions ชุดเดียวกัน → พิจารณา IAM Group หรือแนวทาง workforce identity ที่เหมาะสม
- ต้องเก็บรหัสผ่านฐานข้อมูลอย่างปลอดภัย → Secrets Manager หรือบริการจัดการ secret ที่เหมาะสม ไม่ใส่ไว้ใน source code
- ต้องเข้ารหัสข้อมูลด้วย key ที่จัดการได้ → AWS KMS (ขึ้นกับบริการและรูปแบบการเข้ารหัส)
- ต้องตรวจสอบว่าใครเรียก API ของ AWS → CloudTrail
- ต้องตรวจ metrics และตั้ง alarm เมื่อ CPU สูง → CloudWatch
- ต้องปฏิบัติตาม least privilege → ลด Action/Resource ให้เหลือเฉพาะที่ต้องใช้ และตรวจทาน policy
จำก่อนสอบ
- IAM = authentication/authorization และ permissions
- Role ใช้ temporary credentials; เหมาะกับ workload บน AWS
- Least privilege และ MFA เป็นแนวปฏิบัติสำคัญ
- AWS ดูแล cloud infrastructure ส่วนลูกค้าต้องตั้งค่าทรัพยากรและข้อมูลให้ปลอดภัยตามบริการที่ใช้
- CloudTrail = audit API activity; CloudWatch = metrics/logs/alarms; KMS = keys; Secrets Manager = secrets