AWS Security Token Service (AWS STS) 是 AWS 中負責 「產生暫時性安全憑證 (Temporary Security Credentials)」 的服務。
一句話總結:它就像是飯店櫃檯,負責發給房客一張「有時效性」的房卡(暫時憑證)。這張卡只能在入住期間(例如 1 小時)使用,時間一到自動失效,就算被偷走,駭客也無法長期利用。
它是 IAM Role (角色) 背後真正運作的引擎。每當你「扮演 (Assume)」一個角色時,其實就是 STS 發了一組暫時的鑰匙給你。1. 核心概念 (Core Concepts)
A. 暫時性憑證 vs. 長期憑證
- 長期憑證 (IAM User):Access Key ID + Secret Access Key。除非手動刪除,否則永久有效。風險高。
- 暫時性憑證 (STS):Access Key ID (開頭通常是 ASIA...)Secret Access KeySession Token (這是最重要的區別!一定要有這個 Token 才能通過驗證)Expiration (失效時間,通常 15 分鐘 ~ 12 小時)
B. AssumeRole (扮演角色)
這是 STS 最常用的 API 指令。
- 動作:使用者或服務呼叫 sts:AssumeRole。
- 結果:STS 驗證你的身分後,回傳上述那一組「暫時性憑證」給你。
- 用途:讓你獲得該 Role 所擁有的權限。
2. 四大主要使用場景 (Use Cases)
STS 是解決「如何安全地授權給非本帳號實體」的關鍵:
1. 跨帳號存取 (Cross-Account Access)
- 情境:你公司有兩個 AWS 帳號,開發帳號 (Dev) 的使用者想要管理生產帳號 (Prod) 的 S3。
- 做法:在 Prod 帳號建立一個 Role (信任 Dev 帳號)。Dev 使用者呼叫 STS AssumeRole 來扮演 Prod 的 Role。Dev 使用者暫時獲得 Prod 的權限。
- 好處:不需要在 Prod 帳號為每個人建立 IAM User。
2. 身分聯合 (Identity Federation) —— 企業內部
- 情境:公司員工平時是用 Active Directory (AD) 登入電腦,不想在 AWS 再記一組帳號密碼。
- 做法:使用 SAML 2.0 整合。員工登入 AD →→ AD 呼叫 STS →→ STS 發暫時憑證 →→ 員工登入 AWS Console。
- 好處:單一登入 (SSO)。
3. Web 身分聯合 (Web Identity Federation) —— App 使用者
- 情境:你的手機 App 允許使用者用 Facebook / Google / Amazon 帳號登入,並直接上傳照片到 S3。
- 做法:使用 OpenID Connect (OIDC)。App 取得 Google Token →→ 呼叫 STS (AssumeRoleWithWebIdentity) →→ 換取 AWS 暫時憑證 →→ 上傳 S3。(註:現在更推薦使用 Amazon Cognito 來包裝這層邏輯,但底層還是 STS)。
4. EC2 / Lambda 的 IAM Role
- 情境:當你把 IAM Role 綁定給 EC2 時。
- 幕後:EC2 內的應用程式去存取 Metadata Service 時,其實是 AWS 在背景自動幫你呼叫了 STS,把暫時憑證塞給 EC2。這就是為什麼你不需要把 Access Key 寫在程式碼裡。
3. 進階功能:DecodeAuthorizationMessage
這是一個很特殊的 STS API,考試偶爾會考:
- 情境:當你在操作 AWS 時被拒絕,錯誤訊息是一串 亂碼 (Encoded Message)。
- 解法:你需要有 sts:DecodeAuthorizationMessage 權限,然後用 CLI 執行這個指令,才能把那串亂碼解碼成人類看得懂的文字(例如:「你缺少了 s3:PutObject 權限」)。
4. 考試關鍵字 (Keywords)
- Temporary security credentials (暫時性安全憑證)。
- Session Token (看到這個就代表是 STS 發的)。
- AssumeRole (扮演角色)。
- Identity Federation / SAML 2.0 / Active Directory (企業登入 AWS)。
- Cross-account access (跨帳號存取)。
- Identity Broker (身分代理人,通常指負責跟 STS 溝通的中間軟體)。
總結
只要題目提到 「暫時性權限」、「不建立 IAM User 就能存取 AWS」、「跨帳號」 或 「SSO 登入」,背後的黑手都是 AWS STS。


















