AWS DVA-C02
Esc
↑↓เลื่อน↵เปิดescปิด28 ผลลัพธ์
01

IAM & AWS CLI

Identity & Access Management

Foundations & Identity 11 นาที 23 คำถาม

01ภาพรวม IAM — Global Service

IAM (Identity and Access Management) เป็นบริการสำหรับจัดการ ผู้ใช้ (identity) และ สิทธิ์ (permissions) ในบัญชี AWS ของเรา จุดสำคัญที่ออกสอบ: IAM เป็น global service ไม่ผูกกับ region ใด region หนึ่ง — Users, Groups, Roles, Policies ที่สร้างจะมองเห็นได้ทุก region

ตอนสร้างบัญชี AWS ครั้งแรกจะได้ root account ซึ่งมีสิทธิ์เต็ม (full access) แต่ AWS แนะนำว่าไม่ควรใช้ root ในงานประจำวัน และไม่ควรแชร์ออกไป ควรสร้าง IAM User สำหรับใช้งานจริงแทน

องค์ประกอบหลักของ IAM

  • Users — บุคคลหนึ่งคนต่อหนึ่ง user (เช่น พนักงาน) สามารถมี credentials ของตัวเอง
  • Groups — กลุ่มของ users เท่านั้น (ห้ามมี group ซ้อนใน group และ group ไม่สามารถบรรจุ group อื่นได้)
  • Policies — เอกสาร JSON กำหนดสิทธิ์ ผูกกับ user / group / role
  • Roles — identity ที่ให้ AWS services หรือ users สวมบทบาทเพื่อรับสิทธิ์ชั่วคราว
กับดักข้อสอบ: User ไม่จำเป็นต้องอยู่ใน Group
IAM User สามารถไม่อยู่ใน group ใดเลย หรืออยู่หลาย group พร้อมกันก็ได้ และ Group บรรจุได้แต่ Users เท่านั้น ไม่สามารถบรรจุ Group อื่นได้ ข้อสอบชอบหลอกว่า 'nest group ได้'

02โครงสร้าง IAM Policy (JSON)

Policy คือเอกสาร JSON ที่กำหนดว่าใครทำอะไรกับ resource ไหนได้ ต้องจำโครงสร้างให้ขึ้นใจเพราะออกสอบเป็น JSON บ่อยมาก

  • Version — เวอร์ชันภาษานโยบาย ปัจจุบันใช้ "2012-10-17" เสมอ (ค่าทางการล่าสุด)
  • Id — (optional) ตัวระบุ policy
  • Statement — (required) ประกอบด้วยหนึ่งหรือหลาย statement
  • Sid — (optional) statement id
  • Effect — Allow หรือ Deny
  • Principal — ใคร (account/user/role) ที่ statement นี้มีผล (ใช้ใน resource-based policy)
  • Action — รายการ API actions ที่ allow/deny เช่น s3:GetObject
  • Resource — รายการ ARN ที่ action มีผล
  • Condition — (optional) เงื่อนไขที่ทำให้ statement มีผล
json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowReadSpecificBucket",
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:ListBucket"
      ],
      "Resource": [
        "arn:aws:s3:::my-bucket",
        "arn:aws:s3:::my-bucket/*"
      ],
      "Condition": {
        "IpAddress": { "aws:SourceIp": "203.0.113.0/24" }
      }
    }
  ]
}
Tips สำหรับการสอบ
จำให้แม่น: Version คือ 2012-10-17 (ไม่ใช่วันที่ปัจจุบัน) และ Effect/Action/Resource เป็นองค์ประกอบที่ต้องมี ใน statement ของ identity-based policy ส่วน Principal มีเฉพาะใน resource-based policy (เช่น S3 bucket policy) ไม่มีใน identity-based policy
หมายเหตุ
Resource ต้องระบุ ARN ให้ถูกระดับ — สำหรับ S3 การ list bucket ใช้ ARN ของ bucket (arn:aws:s3:::my-bucket) แต่การอ่าน object ต้องใช้ ARN แบบมี /* (arn:aws:s3:::my-bucket/*) ข้อสอบชอบให้แยกความต่างนี้

03ประเภทของ Policy: Managed vs Inline vs Customer-managed

Policy แบ่งตามวิธีบริหารจัดการได้ 3 แบบหลัก ออกสอบเรื่องความแตกต่างและ use case ของแต่ละแบบ

AWS Managed Policy
สร้างและดูแลโดย AWS เอง (เช่น AdministratorAccess, AmazonS3ReadOnlyAccess) แก้ไขเองไม่ได้ AWS อัปเดต permission ให้อัตโนมัติเมื่อมีบริการ/feature ใหม่ ใช้ซ้ำได้หลาย identity เหมาะกับ use case ทั่วไป
Customer Managed Policy
เราสร้างและดูแลเอง นำกลับมาใช้ซ้ำกับหลาย identity ได้ มี version control (เก็บได้ถึง 5 versions) แก้ได้ และ rollback ได้ เป็นแนวทางที่ AWS แนะนำเมื่อต้องการ custom permission ที่ใช้ซ้ำ
Inline Policy
ผูกตรงกับ identity เดียว (user/group/role) แบบ 1:1 ไม่สามารถนำกลับมาใช้ซ้ำได้ ถ้าลบ identity policy ก็หายไปด้วย เหมาะกับ permission ที่ต้องการความสัมพันธ์แบบ strict one-to-one
คุณสมบัติAWS ManagedCustomer ManagedInline
ใครดูแลAWSเราเรา
นำมาใช้ซ้ำหลาย identityได้ได้ไม่ได้ (1:1)
แก้ไขเนื้อหาไม่ได้ได้ได้
Versioning / rollbackAWS จัดการได้ (สูงสุด 5 versions)ไม่มี
AWS อัปเดตอัตโนมัติใช่ไม่ไม่
Tips สำหรับการสอบ
ถ้าโจทย์ถามถึง 'permission ที่ต้องการใช้ซ้ำหลาย identity และควบคุมเอง' ตอบ Customer Managed Policy / ถ้าถาม 'permission ผูกแน่นกับ identity เดียว ลบ identity แล้ว policy หายไปด้วย' ตอบ Inline Policy

04IAM Roles สำหรับ Services (EC2 & AWS Services)

IAM Role คือ identity ที่ไม่มี credentials ถาวร แต่ให้ entity (เช่น EC2 instance, Lambda, ECS task หรือ user) สวมบทบาท (assume) เพื่อรับ credentials ชั่วคราว (temporary credentials) ผ่าน AWS STS (Security Token Service)

หลักการสำคัญ: เมื่อต้องการให้ AWS service (เช่น EC2) เรียก AWS API อื่น ห้ามฝัง access key ลงใน instance เด็ดขาด ให้ผูก IAM Role กับ instance แทน ระบบจะหมุน credentials ให้อัตโนมัติและปลอดภัยกว่า

องค์ประกอบของ Role

  • Trust policy (assume role policy) — กำหนดว่าใคร (principal) สวมบท role นี้ได้ เช่น ec2.amazonaws.com
  • Permissions policy — กำหนดว่า role นี้ทำอะไรได้บ้างหลังถูกสวมบท
  • การ assume ทำผ่าน sts:AssumeRole ได้ credentials ชั่วคราวมีอายุจำกัด
json
// Trust policy: อนุญาตให้ EC2 service สวมบท role นี้
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": { "Service": "ec2.amazonaws.com" },
      "Action": "sts:AssumeRole"
    }
  ]
}
กับดักข้อสอบ: เปลี่ยน Role แล้ว effect ทันที
เมื่อแก้ permission ของ role ที่ผูกกับ EC2 instance อยู่ การเปลี่ยนแปลงจะ มีผลทันที (effective immediately) ไม่ต้อง restart instance ข้อสอบชอบหลอกว่า 'ต้อง reboot' หรือ 'ต้องสร้าง instance ใหม่'
หมายเหตุ
EC2 instance ดึง credentials ของ role ผ่าน Instance Metadata Service (IMDS) — แนะนำให้ใช้ IMDSv2 (session-based) ซึ่งปลอดภัยกว่า IMDSv1 และป้องกัน SSRF attack ได้ดีกว่า

05Identity-based vs Resource-based Policies

Policy มีสองมุมมองหลักที่ต้องแยกให้ออก: identity-based ผูกกับ identity (user/group/role) และ resource-based ผูกกับ resource (เช่น S3 bucket policy, SQS queue policy, Lambda resource policy)

ประเด็นIdentity-based PolicyResource-based Policy
ผูกกับUser / Group / RoleResource (S3 bucket, SQS, SNS, Lambda)
ระบุ Principalไม่ระบุ (principal คือ identity ที่ผูก)ระบุ Principal ว่าใครเข้าถึงได้
ตัวอย่างCustomer managed policy ผูกกับ userS3 bucket policy, KMS key policy
ใช้ข้าม accountผ่านการ assume roleอนุญาต principal จาก account อื่นโดยตรงได้

กรณีข้าม account (cross-account): เมื่อ principal ถูกสวมบท role (assume role) จะ ไม่นำ identity-based policy เดิมของตัวเองติดไปด้วย (ยกเว้น session policy) — ใช้สิทธิ์ของ role ที่ assume แทน แต่ถ้าใช้ resource-based policy ให้สิทธิ์ข้าม account โดยตรง principal จะใช้สิทธิ์ทั้งของ resource-based policy และ identity-based policy ของตัวเองพร้อมกัน

Tips สำหรับการสอบ
ถ้าโจทย์ให้ allow ทั้ง resource-based policy แต่ identity-based policy ไม่ allow (cross-account ผ่าน resource policy โดยตรง) — สำหรับ resource ในบัญชีเดียวกัน ขอแค่ identity-based หรือ resource-based อย่างใดอย่างหนึ่ง allow ก็เข้าถึงได้ (ตราบใดที่ไม่มี explicit deny)

06Policy Evaluation Logic & Explicit Deny

นี่คือหัวข้อที่ออกสอบบ่อยและสำคัญที่สุดข้อหนึ่ง ต้องเข้าใจลำดับการตัดสินว่าคำขอจะถูก allow หรือ deny

หลักการตัดสิน (เรียงลำดับ)

  • Default คือ implicit deny — ทุกอย่างถูกปฏิเสธโดยปริยายถ้าไม่มีอะไร allow
  • ถ้ามี explicit Allow ที่ตรงกับคำขอ → allow (เว้นแต่มี explicit deny)
  • Explicit Deny ชนะทุกอย่างเสมอ — ถ้ามี Deny ที่ตรงคำขอ ไม่ว่าจะมี Allow กี่อันก็ถูกปฏิเสธ
  • ลำดับจำง่าย: Explicit Deny > Explicit Allow > Implicit Deny (default)
json
// แม้จะมี Allow s3:* อยู่ที่อื่น statement Deny นี้ก็ชนะเสมอ
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyDeleteEvenIfAllowedElsewhere",
      "Effect": "Deny",
      "Action": "s3:DeleteObject",
      "Resource": "arn:aws:s3:::critical-bucket/*"
    }
  ]
}

เมื่อมีหลายชั้นนโยบาย (SCP จาก Organizations, permission boundary, identity-based, resource-based, session policy) การจะ allow ได้ต้อง ผ่านทุกชั้นที่เกี่ยวข้อง และ ไม่มี explicit deny ในชั้นใดเลย

กับดักข้อสอบยอดฮิต
ถ้าโจทย์มี Allow s3:* และมี Deny เฉพาะ s3:DeleteObject อยู่ในนโยบายเดียวกันหรือคนละนโยบาย — คำตอบคือ ทำได้ทุกอย่างยกเว้น DeleteObject เพราะ explicit deny ชนะ explicit allow เสมอ อย่าหลงเลือก 'ทำ DeleteObject ได้'

07Permission Boundaries

Permission Boundary คือ managed policy ที่ใช้เป็น ขอบเขตสูงสุด (maximum permissions) ที่ identity-based policy สามารถให้ได้กับ IAM user หรือ IAM role (ใช้ได้กับ user/role เท่านั้น ไม่ใช้กับ group)

หลักสำคัญ: permission boundary ไม่ได้ให้สิทธิ์ด้วยตัวเอง แต่เป็นตัวจำกัด สิทธิ์ที่ใช้ได้จริง = intersection (ส่วนที่ทับซ้อนกัน) ระหว่าง identity-based policy กับ permission boundary

  • ใช้จำกัดสิทธิ์ของ user/role ไม่ให้เกิน boundary แม้ identity policy จะ allow มากกว่า
  • use case: ให้ developer สร้าง user/role ได้เอง แต่จำกัดไม่ให้ escalate สิทธิ์เกินขอบเขต (delegation)
  • ทำงานร่วมกับ AWS Organizations SCP ได้ — สิทธิ์จริงต้องผ่านทั้ง SCP, boundary, และ identity policy
Tips สำหรับการสอบ
จำสูตร: Effective permissions = identity policy ∩ permission boundary (ต้อง allow ทั้งสองฝั่ง) แต่ explicit deny ในชั้นใดก็ตามก็ยัง override ได้เสมอ ถ้าโจทย์พูดถึง 'จำกัดสิทธิ์สูงสุดที่ delegated admin จะมอบได้' ให้นึกถึง permission boundary

08MFA & Access Keys

MFA (Multi-Factor Authentication) เพิ่มชั้นความปลอดภัยโดยต้องใช้รหัสจากอุปกรณ์ MFA ร่วมกับรหัสผ่าน AWS แนะนำให้เปิด MFA ทั้ง root account และ IAM users ที่มีสิทธิ์สูง

ประเภทอุปกรณ์ MFA

  • Virtual MFA device — แอป เช่น Google Authenticator, Authy (รองรับหลายบัญชีในเครื่องเดียว)
  • Universal 2nd Factor (U2F) Security Key — เช่น YubiKey (รองรับหลาย root/IAM users ในกุญแจเดียว)
  • Hardware Key Fob MFA Device — จาก third party
  • Hardware Key Fob MFA Device for AWS GovCloud (US)

Access Keys & วิธีเข้าถึง AWS

  • AWS Management Console — ป้องกันด้วย password + MFA
  • CLI / SDK — ใช้ Access Keys (Access Key ID + Secret Access Key)
  • Access Keys เป็นความลับ ห้ามแชร์ ผู้ใช้สร้าง/จัดการของตัวเอง
  • Access Key ID เปรียบเหมือน username, Secret Access Key เปรียบเหมือน password
กับดักข้อสอบ
อย่าฝัง access keys ลงในโค้ดหรือ EC2 instance — ถ้าโค้ดรันบน EC2/Lambda/ECS ให้ใช้ IAM Role แทนเสมอ ข้อสอบ scenario มักให้เลือกระหว่าง 'ฝัง access key' กับ 'ใช้ IAM role' — คำตอบที่ถูกต้องคือ IAM Role

09IAM Best Practices & Least Privilege

  • อย่าใช้ root account ยกเว้นตอน setup บัญชีครั้งแรก
  • หนึ่งคน = หนึ่ง IAM user ห้ามแชร์ user ร่วมกัน
  • จัด permission ผ่าน Groups เพื่อบริหารง่าย
  • ใช้ strong password policy และเปิด MFA
  • ใช้ IAM Roles สำหรับ AWS services (EC2/Lambda) แทน access key
  • ใช้ access keys เฉพาะกับ programmatic access ที่จำเป็น และ หมุนเวียน (rotate) เป็นระยะ
  • หลัก least privilege (สิทธิ์น้อยที่สุดเท่าที่จำเป็น) — ให้เฉพาะสิทธิ์ที่ต้องใช้จริง
  • ตรวจสอบสิทธิ์ด้วย Credentials Report และ Access Advisor สม่ำเสมอ
  • อย่าแชร์ IAM users/access keys
Tips สำหรับการสอบ
คำว่า least privilege มักเป็นคำตอบที่ถูกเมื่อโจทย์ถามว่า 'แนวทางที่ปลอดภัยที่สุด/แนะนำที่สุด' ในการให้สิทธิ์ — เลือก policy ที่ให้สิทธิ์เฉพาะ action/resource ที่ต้องใช้ ไม่ใช่ "Action": "*" หรือ AdministratorAccess

10IAM Credentials Report & Access Advisor

AWS มีเครื่องมือสองตัวสำหรับ audit สิทธิ์ ออกสอบเรื่อง 'ใช้ตัวไหนเพื่อทำอะไร' บ่อยมาก ต้องแยกให้ชัด

Credentials Report (ระดับ Account)
รายงานระดับบัญชี ดาวน์โหลดได้เป็นไฟล์ CSV แสดงรายชื่อ users ทั้งหมดและสถานะ credentials ต่างๆ เช่น มี password ไหม เปิด MFA ไหม access key ใช้ครั้งล่าสุดเมื่อไหร่ มี/หมุน key เมื่อไหร่ ใช้ตรวจสอบสุขอนามัยความปลอดภัยทั้งบัญชี
Access Advisor (ระดับ User/Role)
อยู่ใน tab ของแต่ละ user/role แสดง service permissions ที่ถูกมอบให้ และ เวลาที่ใช้ service เหล่านั้นครั้งล่าสุด (last accessed) ช่วยให้เห็นว่าสิทธิ์ไหนไม่เคยถูกใช้ เพื่อตัดออกตามหลัก least privilege
เครื่องมือระดับใช้ทำอะไร
Credentials Reportทั้ง accountดูสถานะ credentials ของ users ทั้งหมด (MFA, password, key rotation) เป็น CSV
Access Advisorราย user/roleดู service ที่มอบสิทธิ์และเวลาใช้ล่าสุด เพื่อลดสิทธิ์ที่ไม่ใช้
Tips สำหรับการสอบ
จำสั้นๆ: Credentials Report = ระดับ account (CSV รายชื่อ users + สถานะ) / Access Advisor = ระดับ user/role (last accessed services) ถ้าโจทย์ถาม 'จะลดสิทธิ์ที่ไม่ได้ใช้ของ user คนหนึ่ง' ตอบ Access Advisor

11Shared Responsibility & CLI ที่ควรรู้

ใน Shared Responsibility Model สำหรับ IAM: AWS รับผิดชอบ โครงสร้างพื้นฐาน, การดูแล infrastructure ของ IAM, configuration/vulnerability analysis และ compliance validation ส่วน ลูกค้ารับผิดชอบ การจัดการ users/groups/roles/policies, เปิด MFA, หมุน key, ใช้ least privilege และตรวจ permission

AWS CLI ที่เกี่ยวข้อง (ควรคุ้น)

bash
# ดูข้อมูล identity ที่กำลังใช้เรียก API (เช็คว่าใช้ role/user ไหน)
aws sts get-caller-identity

# สวมบท role ข้าม account เพื่อรับ temporary credentials
aws sts assume-role \
  --role-arn arn:aws:iam::123456789012:role/MyCrossAccountRole \
  --role-session-name my-session

# สร้าง credentials report และดาวน์โหลด
aws iam generate-credential-report
aws iam get-credential-report
หมายเหตุ
aws sts get-caller-identity มีประโยชน์มากตอน debug — บอกว่า request กำลังใช้ identity ไหน (account, user/role ARN) ช่วยตรวจว่า EC2 ใช้ role ที่ถูกต้องหรือไม่
Tips สำหรับการสอบ
ถ้าโจทย์ถามว่า 'ใครรับผิดชอบการตั้งค่า least privilege และหมุน access key' คำตอบคือ ลูกค้า (customer) ไม่ใช่ AWS — AWS ดูแลแค่ความปลอดภัยของตัว IAM infrastructure เท่านั้น

คำถามทบทวน

ทดสอบความเข้าใจหัวข้อ IAM & AWS CLI

23 ข้อ · เลือกคำตอบเพื่อดูเฉลยและคำอธิบาย

ทำแล้ว 0/23คะแนน 0
  1. 1.ในโครงสร้าง IAM policy JSON ค่าของ field "Version" ที่ถูกต้องและใช้กันในปัจจุบันคืออะไร?

  2. 2.EC2 instance ต้องเรียก AWS API ของ S3 วิธีที่ปลอดภัยและ AWS แนะนำที่สุดในการให้สิทธิ์คืออะไร?

  3. 3.Policy ของ user มี statement Allow s3:* บน bucket หนึ่ง และอีก statement Deny s3:DeleteObject บน bucket เดียวกัน ผลลัพธ์คือ?

  4. 4.ข้อใดอธิบาย Permission Boundary ได้ถูกต้อง?

  5. 5.ต้องการลดสิทธิ์ที่ user คนหนึ่งไม่ได้ใช้งานออก เพื่อทำ least privilege ควรใช้เครื่องมือใด?

  6. 6.ข้อใดเกี่ยวกับ IAM Groups ถูกต้อง?

  7. 7.เปลี่ยน permission policy ของ IAM Role ที่ผูกอยู่กับ EC2 instance ที่กำลังรัน ผลกระทบเป็นอย่างไร?

  8. 8.field ใดใน policy JSON ที่ปรากฏใน resource-based policy แต่ปกติไม่มีใน identity-based policy?

  9. 9.การ assume role ข้าม account เพื่อรับ temporary credentials ใช้ service และ action ใด?

  10. 10.ถ้าไม่มี statement ใดใน policy ที่ allow action ที่ร้องขอ และไม่มี explicit deny ผลลัพธ์เริ่มต้นคือ?

  11. 11.ต้องการ custom policy ที่นำกลับมาใช้ซ้ำกับหลาย user/role และควบคุม version เองได้ ควรใช้ policy ประเภทใด?

  12. 12.อุปกรณ์ MFA ประเภทใดที่เป็น physical security key เช่น YubiKey และรองรับหลาย user ในกุญแจเดียว?

  13. 13.ใน Shared Responsibility Model สำหรับ IAM ข้อใดเป็นความรับผิดชอบของลูกค้า (customer)?

  14. 14.ต้องการ audit ทั้งบัญชีว่า user แต่ละคนเปิด MFA หรือยัง และ access key ถูกหมุนครั้งล่าสุดเมื่อไหร่ ควรใช้อะไร?

  15. 15.Policy มี "Resource": "arn:aws:s3:::my-bucket" และ Action "s3:GetObject" แต่เข้าถึง object ไม่ได้ สาเหตุที่เป็นไปได้มากที่สุดคือ?

  16. 16.หลักการให้สิทธิ์แบบใดที่ AWS แนะนำว่าปลอดภัยที่สุดและมักเป็นคำตอบในข้อสอบเรื่องการออกแบบ permission?

  17. 17.ในการสวมบท role ข้าม account (cross-account assume role) สิ่งใดเกิดขึ้นกับ identity-based policy เดิมของผู้ใช้?

  18. 18.Trust policy ของ IAM Role ทำหน้าที่อะไร?

  19. 19.คำสั่ง AWS CLI ใดใช้ตรวจสอบว่า request ปัจจุบันกำลังใช้ identity ใด (debug ว่า EC2 ใช้ role ถูกหรือไม่)?

  20. 20.S3 bucket ในบัญชีเดียวกับ user — user มี identity-based policy ไม่ได้ allow s3:GetObject แต่ bucket policy (resource-based) allow s3:GetObject ให้ user นั้น ผลลัพธ์คือ (ไม่มี explicit deny ที่ใด)?

  21. 21.ข้อใดถูกต้องเกี่ยวกับ AWS Managed Policy?

  22. 22.องค์กรต้องการให้ developer สร้าง IAM role ได้เอง แต่ไม่ให้สร้าง role ที่มีสิทธิ์เกินขอบเขตที่กำหนด (ป้องกัน privilege escalation) ควรใช้อะไร?

  23. 23.Inline Policy แตกต่างจาก Managed Policy อย่างไรที่สำคัญที่สุด?