ข้ามไปเนื้อหาหลัก
ความปลอดภัย· ~8 นาที· อัปเดตล่าสุด

IAM: Users, Groups, Roles และ Policies

สี่องค์ประกอบหลักของ Identity and Access Management และหลัก Least Privilege

ระบบบัตรพนักงานของบริษัท

User คือบัตรพนักงานประจำตัว · Group คือ "แผนก" — ตั้งกฎว่าแผนกบัญชีเข้าห้องเอกสารได้ ทุกคนในแผนกก็ได้สิทธิ์นั้นทันที · Role คือ "เสื้อกั๊กผู้รับเหมา" ที่ใครได้รับอนุญาตก็หยิบมาสวมชั่วคราวแล้วต้องคืน · Policy คือกฎที่เขียนว่าบัตร/เสื้อแบบไหนเปิดประตูบานไหนได้

สี่องค์ประกอบของ IAM

  • IAM User — ตัวตนสำหรับคนหรือแอปหนึ่งราย ล็อกอินคอนโซลด้วยรหัสผ่าน หรือเรียก API ด้วย access key
  • IAM Group — ที่รวม users เพื่อจัดการสิทธิ์เป็นชุด เช่น กลุ่ม Admins, Developers, Finance — แนบ policy ที่กลุ่มครั้งเดียว
  • IAM Role — ตัวตนที่ไม่มี credentials ถาวร ให้คน/บริการ "assume" (สวม) แล้วได้สิทธิ์ชั่วคราว เช่น EC2 สวม role เพื่ออ่าน S3
  • IAM Policy — เอกสาร JSON ที่ระบุว่า Allow/Deny ทำ action อะไร กับ resource ไหน — เอาไปแนบกับ user, group หรือ role

IAM เป็นบริการ global และฟรี

IAM ไม่ผูกกับ Region — user และ policy ที่สร้างใช้ได้ทั่วทุก Region ของบัญชี และไม่มีค่าใช้จ่าย จุดที่ควรรู้เพิ่มคือ IAM Identity Center (ชื่อเดิม AWS SSO) สำหรับองค์กรที่อยากให้พนักงานล็อกอินครั้งเดียวเข้าได้หลายบัญชี AWS — ระดับ CLF จำแค่ว่า "ล็อกอินรวมศูนย์หลายบัญชี = Identity Center" ก็พอ

สรุป Key Takeaways

  • User = ตัวตนถาวร · Group = มัดรวม users · Role = ตัวตนชั่วคราวที่สวมได้ · Policy = เอกสาร JSON กำหนดสิทธิ์
  • ให้บริการ (เช่น EC2) เข้าถึงบริการอื่นด้วย Role ไม่ใช่ฝัง access key
  • ยึดหลัก Least Privilege เสมอ — ให้สิทธิ์เท่าที่จำเป็นต่องาน

คำถามที่พบบ่อย

User, Group, Role ต่างกันอย่างไรแบบเร็วๆ

User = ตัวตนถาวรของ "คน/ระบบหนึ่งราย" มีรหัสผ่านหรือ access key ของตัวเอง · Group = กลุ่มของ users ไว้แปะ policy ทีเดียวถึงทุกคน (เช่น กลุ่ม Developers) · Role = ตัวตนชั่วคราวที่ "สวม" ได้ ไม่มีรหัสผ่านประจำ เหมาะให้บริการ AWS หรือคนจากบัญชีอื่นมาสวมเพื่อทำงานชั่วคราว

ทำไมให้ EC2 ใช้ Role แทนการฝัง access key

access key ที่ฝังในเครื่อง/ในโค้ดรั่วง่ายและหมุนเวียนยาก — ให้ EC2 สวม IAM Role แทน จะได้ credentials ชั่วคราวที่หมดอายุเองอัตโนมัติ ข้อสอบถามแนวนี้บ่อยมาก: "วิธีที่ปลอดภัยที่สุดให้แอปบน EC2 เข้าถึง S3" = ใช้ IAM Role

Least Privilege คืออะไร

ให้สิทธิ์ "น้อยที่สุดเท่าที่งานต้องใช้" — พนักงานที่แค่ต้องอ่านรายงานใน S3 ก็ให้สิทธิ์อ่าน bucket นั้น ไม่ใช่ให้ AdministratorAccess เผื่อไว้ เจอคำว่า least privilege ในช้อยส์เมื่อไหร่ มักเป็นทิศทางของคำตอบที่ถูก

อ่านจบแล้วอย่าลืมทำเครื่องหมาย