Beyond Basic IAM
ทบทวนเร็วๆ: IAM = Users + Groups + Roles + Policies ภายใน AWS account ของคุณเอง เหมาะกับการจัดการพนักงาน/ระบบในองค์กรของคุณที่เข้าถึง AWS
แต่ในโลกจริงเรามักเจอ use case ที่ IAM พื้นฐานทำไม่ได้ดี เช่น external users, ผู้ใช้ mobile/web app เป็นล้านคน, ผู้ใช้ที่อยู่ใน on-prem Active Directory, หรือการบริหาร multi-account — ตรงนี้คือที่มาของ Advanced Identity services
External / federated users
ผู้ใช้ที่ login ด้วย Google, Facebook, Apple, หรือ on-prem AD แล้วต้องการเข้าถึง AWS — ไม่ควรสร้าง IAM user ให้แต่ละคน
Web / Mobile app users
แอปพลิเคชันที่มีผู้ใช้หลักล้าน — ใช้ Cognito จัดการ sign-up / sign-in / MFA แทนการสร้าง IAM users
On-prem Active Directory
องค์กรที่มี Windows AD อยู่แล้ว ต้องการให้ user ใน AD เข้า AWS ได้ — ใช้ Directory Services
Multi-account SSO
บริษัทที่มี AWS account หลายตัว (dev, staging, prod) — ใช้ IAM Identity Center login ครั้งเดียวเข้าได้ทุก account
AWS STS (Security Token Service)
AWS STS คือบริการที่ออก temporary, limited-privilege credentials ให้กับ users หรือ services ที่ต้องการเข้าถึง AWS resources โดยที่ไม่ต้องใช้ long-term access keys
- Temporary credentials — มีอายุจำกัด (configurable expiration ตั้งแต่ 15 นาที ไปจนถึงหลายชั่วโมง)
- Limited privilege — ได้สิทธิ์เฉพาะที่ Role หรือ federation policy กำหนดไว้
- หมดอายุอัตโนมัติ — ลด risk ของ credentials รั่วไหล (ไม่ต้อง rotate เอง)
- ทำงานเบื้องหลังของ IAM Roles — ทุกครั้งที่ assume role จริงๆ STS เป็นคนออก token ให้
Use Case 1: Identity Federation
ผู้ใช้ภายนอก (on-prem AD, social login, SAML) ได้รับ STS token สำหรับเข้า AWS โดยไม่ต้องสร้าง IAM user
Use Case 2: Cross-Account Access
User ใน account A assume role ใน account B — STS ออก temp credentials ให้ใช้กับ account B
Use Case 3: IAM Roles for EC2
EC2 instance มี role attached — STS ออก temp credentials ให้ instance ใช้เรียก AWS services (วิธีที่ AWS แนะนำ)
Amazon Cognito
Amazon Cognito คือบริการ identity สำหรับ web และ mobile app users (อาจมีถึงหลักล้านคน) — แทนที่จะสร้าง IAM user ให้แต่ละคน เราสร้าง user ใน Cognito
Cognito User Pools (CUP)
Sign-in สำหรับ app users — รองรับ sign up, sign in, MFA, password reset, email/phone verification หลังจาก login สำเร็จจะคืน JSON Web Token (JWT) ให้แอป
Cognito Identity Pools (Federated Identities)
ออก AWS credentials ให้ user เข้าถึง AWS resources ตรงๆ (เช่น S3, DynamoDB) — ใช้ต่อจาก User Pool หรือ social login ก็ได้
- Integrate กับ social identity providers: Facebook, Google, Amazon, Apple
- รองรับ OIDC และ SAML 2.0 สำหรับ enterprise federation
- รองรับผู้ใช้จำนวนมหาศาล (สเกลได้ถึงหลักล้าน)
- เหมาะกับ mobile app, web app, IoT devices ที่มีผู้ใช้ภายนอกองค์กร
Microsoft Active Directory (AD) Background
Active Directory (AD) คือบริการที่อยู่บน Windows Server พร้อม AD Domain Services ใช้กันอย่างแพร่หลายในองค์กร — เป็น database ของ objects ทุกอย่างในองค์กร
- User Accounts — บัญชีพนักงานทุกคน
- Computers — เครื่องคอมในองค์กร
- Printers — เครื่องพิมพ์
- File Shares — โฟลเดอร์ที่แชร์ในเครือข่าย
- Security Groups — กลุ่มสิทธิ์
AWS Directory Services
AWS Directory Services คือกลุ่มบริการที่ช่วยใช้/integrate Active Directory บน AWS — มี 3 ตัวเลือกหลัก
AWS Managed Microsoft AD
สร้าง AD ของจริง ใน AWS — จัดการ users ใน cloud ได้, รองรับ MFA, สามารถสร้าง trust relationship เชื่อมกับ on-prem AD ได้ (เหมาะกับ hybrid)
AD Connector
เป็น directory gateway (proxy) ที่ redirect คำขอกลับไปยัง on-prem AD — users และ data ยังอยู่ on-prem ทั้งหมด AWS เป็นเพียงทางผ่าน
Simple AD
AD-compatible managed directory บน AWS — ราคาประหยัด แต่ เชื่อมกับ on-prem AD ไม่ได้ เหมาะกับ workload เล็กๆ ที่ไม่ต้องการ feature เต็มของ Microsoft AD
AWS IAM Identity Center (formerly AWS SSO)
AWS IAM Identity Center (เดิมชื่อ AWS Single Sign-On / AWS SSO) คือบริการ One login ที่เข้าถึงได้หลาย AWS account และ business application พร้อมกัน
- Login portal เดียว — user เข้าได้ทุก AWS account ที่ได้รับสิทธิ์
- Integrate กับ AWS Organizations — จัดการสิทธิ์ข้าม account ได้สะดวก
- Integrate กับ business apps: Salesforce, Box, Microsoft 365, ฯลฯ
- รองรับ identity sources หลายแบบ: built-in IAM Identity Center, AD Connector (เชื่อม on-prem AD), หรือ external SAML 2.0 IdP
- ช่วยลดภาระการสร้าง IAM user แยกในแต่ละ account
Comparison: When to Use Each
ตารางสรุปว่าเมื่อไรควรใช้บริการตัวไหน — ออกสอบบ่อยมาก!
IAM
Users ภายใน AWS account ของคุณเอง — พนักงาน, services, scripts ที่ต้องเข้าถึง AWS resource
AWS STS
Temporary credentials สำหรับ federation, cross-account access หรือ EC2/Lambda assume role
Amazon Cognito
App users (web/mobile) — ผู้ใช้แอปพลิเคชันภายนอก (ลูกค้า) ที่อาจมีหลักล้านคน
Directory Services
Integrate กับ Microsoft Active Directory — ทั้ง managed AD บน AWS และเชื่อมกับ on-prem AD
IAM Identity Center
SSO ข้ามหลาย AWS account + business apps — login เดียวเข้าได้ทุกที่
Summary
- IAM = users / groups / roles ภายใน account — ของพื้นฐาน
- STS ออก temporary credentials ให้ federation, cross-account, EC2 roles (15 นาที ถึงหลายชั่วโมง)
- Cognito = identity สำหรับ web/mobile app users — User Pools (sign-in, JWT) + Identity Pools (AWS credentials)
- Directory Services 3 แบบ: Managed Microsoft AD (full AD ใน AWS, trust ได้), AD Connector (proxy ไป on-prem), Simple AD (AD-compatible เล็กๆ)
- IAM Identity Center (AWS SSO) = one login เข้าได้หลาย AWS account + business apps
- หลักการสำคัญ: ห้าม embed access keys ใน code — ใช้ Role + STS แทนเสมอ