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

STS และการทำ Cross-Account Access

บริการสร้าง Credential ชั่วคราว และการให้สิทธิ์ข้ามบัญชี

วีซ่าเข้าประเทศ

การทำ Cross-account เหมือนการขอวีซ่าไปต่างประเทศ — ประเทศปลายทาง (Account B) ต้องตั้งกฎอนุญาต (Trust Policy) ให้คนจากประเทศต้นทาง (Account A) เข้ามาได้ ส่วนฝั่งต้นทางก็ต้องอนุญาตให้พนักงานตัวเองเดินทางไปได้ด้วย

AWS STS (Security Token Service) คือบริการหลังบ้านที่ทำหน้าที่ "เสก" Credential ชั่วคราว (Access Key, Secret Key, Session Token) ที่มีวันหมดอายุ เมื่อใดก็ตามที่คุณสวม Role (AssumeRole) STS จะเป็นคนออกกุญแจให้คุณ

  • Cross-Account Access (การเข้าถึงข้ามบัญชี) — แทนที่จะสร้าง IAM User ใหม่ใน Account B ให้แอดมินใน Account B สร้าง Role และตั้ง Trust Policy อนุญาตให้ Account A สวม (Assume) Role นี้ได้
  • แอดมิน Account A ก็ต้องสร้างนโยบายให้ User ของตนสามารถใช้สิทธิ์ sts:AssumeRole กับ Role ใน Account B ได้
  • เมื่อ User จาก A ต้องการทำงานใน B จะเรียกใช้ STS เพื่อขอรับ Credential ชั่วคราว

สรุป Key Takeaways

  • STS คือตัวสร้างกุญแจชั่วคราว (Temporary Credentials) เมื่อมีการสวม Role
  • Cross-Account Access ทำได้ผ่านการ AssumeRole ข้ามบัญชี
  • ต้องมีการอนุญาตจากทั้ง 2 ฝั่ง (Trust Policy ฝั่งปลายทาง, IAM Policy ฝั่งต้นทาง)

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

Cross-account access ที่ถูกต้องทำยังไง

สร้าง role ในบัญชีปลายทางที่ trust บัญชีต้นทาง แล้วให้คน/ระบบต้นทาง AssumeRole ผ่าน STS ได้ credential ชั่วคราว — ห้ามแชร์ access key ข้ามบัญชีเด็ดขาด โจทย์ "บริษัท A ให้ vendor B เข้าถึง S3 ของตน" = cross-account role + external ID

External ID ใน trust policy มีไว้ทำไม

กันปัญหา confused deputy — เมื่อให้ third party สวม role ของเรา external ID เป็นรหัสลับร่วมที่ third party ต้องแนบตอน AssumeRole กันคนอื่นหลอกใช้ vendor นั้นสวม role เราแทน — เจอคำว่า third party access ให้มองหา external ID

ลองทำ Quiz ท้ายบท

คำถามแนวข้อสอบของโมดูลนี้ 5 ข้อ · เฉลยทันที

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