Access Keys (存取金鑰),通常是指 IAM User 用來進行 「程式設計存取 (Programmatic Access)」 的憑證。
簡單來說:Access Key 就是給「程式碼」或「指令工具 (CLI)」用的帳號密碼。
以下是關於 Access Keys 的詳細分類、組成與重要知識點:1. Access Keys 的組成 (Components)
一組標準的 Access Key 包含兩個部分,就像帳號與密碼一樣,缺一不可:
- Access Key ID (存取金鑰 ID)角色:像是 使用者名稱 (Username)。格式:通常是 20 個字元的大寫字母與數字,例如 AKIAIOSFODNN7EXAMPLE。可見性:雖然不應該隨意公開,但在系統中是用來識別身分的,相對沒那麼敏感。
- Secret Access Key (私密存取金鑰)角色:像是 密碼 (Password)。格式:40 個字元的亂碼字串,例如 wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY。可見性:極度敏感! 類似私鑰。重要限制:這個 Secret 只會在建立當下顯示一次! 如果你沒存下來或弄丟了,無法找回,只能刪除舊的並建立一組新的。
2. 兩種類型 (Two Types) —— 考試細節
雖然看起來很像,但其實有分「長期」跟「暫時」兩種:
A. 長期憑證 (Long-term Credentials)
- 開頭:Access Key ID 通常以 AKIA 開頭。
- 對象:IAM User。
- 特性:除非你手動刪除或停用,否則永久有效。
- 風險:因為永久有效,一旦洩漏(例如不小心上傳到 GitHub),駭客可以永久存取你的帳號,直到你發現為止。
B. 暫時性憑證 (Temporary Credentials)
- 開頭:Access Key ID 通常以 ASIA 開頭。
- 對象:IAM Role (透過 STS AssumeRole 取得)。
- 特性:除了 ID 和 Secret,還多了一個 Session Token。
- 時效:有時間限制(例如 15 分鐘到 12 小時),過期後自動失效。
- 優點:安全性高,AWS 最佳實踐推薦使用這個。
3. Access Keys 用在哪裡? (Use Cases)
Access Keys 不能用來登入 AWS 網頁主控台 (Console),它是給「機器」用的:
- AWS CLI (Command Line Interface):當你在終端機執行 aws configure 時,需要貼上這組 Key。
- AWS SDK (Software Development Kit):當你寫 Python (boto3)、Java、Node.js 程式要呼叫 AWS API 時使用。
- 第三方工具:例如 Terraform、Ansible、Jenkins 連線到 AWS 時。
4. 最佳實踐與安全性 (Best Practices) —— 考試必考!
AWS 非常強調不要濫用 Access Keys,以下是資安鐵則:
- 絕對不要使用 Root Account 的 Access Key:Root 權限太大且無法限制。如果 Root 有 Access Key,請立刻刪除。
- 不要把 Key 寫死在程式碼裡 (Hard-coding):千萬不要寫在程式碼中然後 git push 到 GitHub。解法:使用環境變數、AWS Secrets Manager,或在 EC2/Lambda 上使用 IAM Role(這是標準答案)。
- 定期輪替 (Rotate Keys):即使沒洩漏,也應該每 90 天更換一次。每個 IAM User 最多只能有 2 組 Access Keys,方便你在不中斷服務的情況下進行輪替(建立新 Key →→ 更新程式 →→ 停用舊 Key →→ 刪除舊 Key)。
- 優先使用 IAM Role:如果你的程式是跑在 EC2 上,不要 建立 IAM User 並把 Access Key 塞進 EC2。正確做法:建立一個 IAM Role 綁定給 EC2,讓程式自動取得暫時性憑證。
5. 常見混淆:Access Key vs. Key Pair

總結
- Access Key 是給程式用的帳號密碼。
- Secret 只會出現一次,沒存到就沒了。
- AKIA 開頭是長期的(危險),ASIA 開頭是暫時的(安全)。
- 能用 IAM Role 就不要用 Access Key。











