AWS IAM 入門教學:掌控雲端權限的核心鑰匙
AWS Identity and Access Management (IAM) 是 AWS 安全架構的基石。在雲端世界中,安全性永遠是第一優先,而 IAM 就是控制「誰 (Authentication)」可以對「什麼資源」做「什麼動作 (Authorization)」的守門員。
這篇文章將帶你快速理解 IAM 的核心概念,並分享幾個在實務上必須遵守的最佳實踐。
什麼是 IAM?
IAM 是一個免費的 AWS 全球性服務(Global Service),這意味著你不需要在每個 Region 單獨設定,設定一次即可套用到所有區域。它主要負責兩件事:
- 認證 (Authentication): 確認你是誰(例如:User ID 和 Password,或 Access Key)。
- 授權 (Authorization): 確認你能做什麼(例如:能不能讀取 S3 Bucket,能不能開啟 EC2)。
IAM 四大核心元件
要搞懂 IAM,必須先理解這四個名詞:Users, Groups, Roles, Policies。
1. Users (使用者)
代表一個實體的人或應用程式。
- Root User (根使用者): 註冊 AWS 帳號時建立的第一個使用者,擁有至高無上的權限( billing 權限、關閉帳號等)。日常操作絕對不應該使用 Root User。
- IAM User: 你為團隊成 員或應用程式建立的個別帳號。每個 User 有自己的憑證(密碼或 Access Keys)。
2. Groups (群組)
使用者的集合。將權限賦予 Group,所有在該 Group 內的 User 就會自動繼承這些權限。
- Best Practice: 盡量將權限綁定在 Group 上,而不是直接綁定在個別 User 身上。這樣當人員異動時,只需改變 Group 成員即可,管理更輕鬆。
3. Roles (角色)
Role 是一個「臨時」的身份,它沒有固定的密碼或 Access Key。它像是一頂「帽子」,誰戴上這頂帽子,誰就擁有對應的權限。
- 使用場景:
- AWS 服務: 讓 EC2 機器或 Lambda 函數有權限去讀取 S3 (不再需要把 Key 存在 code 裡)。
- 跨帳號存取: 讓 A 帳號的使用者可以臨時操作 B 帳號的資源。
- 身分聯合 (Federation): 允許使用 Google/Facebook 或公司 AD 登入,登入後扮演某個 Role。
4. Policies (政策)
定義權限的 JSON 文件。你可以把 Policy 貼在 User, Group 或 Role 上。
一個典型的 Policy 包含:
- Effect:
Allow或Deny(AWS 預設為隱式 Deny,除非顯式 Allow) - Action: 允許的操作 (例如
s3:ListBucket) - Resource: 操作的對象 (例如特定 Bucket 的 ARN)
Policy 範例 (唯讀 S3):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:List*", "s3:Get*"],
"Resource": "*"
}
]
}