ข้ามไปที่เนื้อหา

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 เจ้าของบัญชีที่มีสิทธิ์ระดับสูงมาก ควรปกป้องอย่างเข้มงวดและไม่ใช้ทำงานประจำวัน

หลักการสำคัญ

  1. Least privilege: ให้สิทธิ์เฉพาะที่จำเป็นต่อหน้าที่ ไม่ใช้ AdministratorAccess เป็นคำตอบเริ่มต้นสำหรับทุกคน
  2. MFA: เปิด multi-factor authentication โดยเฉพาะบัญชีที่มีสิทธิ์สูง และปกป้อง root user
  3. Temporary credentials: ใช้ IAM roles/STS หรือระบบ federation เมื่อเหมาะสม ลดการพึ่งพา access keys แบบถาวร
  4. Protect credentials: ห้ามฝัง access keys หรือรหัสผ่านไว้ใน source code, repository หรือ AMI โดยไม่จำเป็น
  5. Review permissions: ตรวจและลบผู้ใช้ access keys และ permissions ที่ไม่ใช้งาน
  6. 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