
AWS IAM:別讓權限管理變成你的資安破口

你的 AWS 帳號有幾個人在用?每個人都用 Root 登入嗎?如果答案是「對」,這篇你得認真看。
先講結論
IAM 的核心觀念就一句話:給每個人剛好夠用的權限,不多不少。 用 Group 管理權限、用 Policy 定義能做什麼、用 MFA 擋住被盜的風險。搞懂這三件事,你的 AWS 帳號就安全了八成。
為什麼你不該用 Root 帳戶做日常操作?
Root 帳戶就像你家的萬能鑰匙——能開所有的門,包括那扇「刪除整個帳號」的門。
我見過最慘的案例:某個團隊所有人共用 Root 帳號,結果有人不小心把 production 的 S3 bucket 砍了。因為大家都用同一個帳號,連是誰幹的都查不出來。
所以第一件事:建 IAM 使用者,Root 帳號鎖起來只做帳務管理。
建立 User Group:批次管理權限
一個一個使用者去設權限?等團隊超過 5 個人你就會崩潰。用 Group 管理才是正解。
常見的 Group 配置:
| Group | Policy | 誰該加進去 |
|---|---|---|
| Admins | AdministratorAccess | 你(但也要三思) |
| Developers | PowerUserAccess | 工程師 |
| ReadOnly | ReadOnlyAccess | PM、監控人員 |
| Billing | Billing | 財務、老闆 |
| DatabaseAdmins | 自定義 RDS/DynamoDB 權限 | DBA |
我的建議:即使你是唯一的管理員,也別直接用 Root。開一個 Admins group,建一個 IAM user 給自己用。這是紀律問題。
操作步驟
- AWS Console → 搜尋 IAM → 左側選「User groups」
- 點「Create group」→ 取名(例如
Developers) - 在「Attach permissions policies」選對應的 policy
- 搞定
建立 IAM 使用者
- IAM → Users → Add user
- 輸入使用者名稱,勾選「AWS Management Console access」
- 設密碼(建議勾「首次登入必須改密碼」)
- 加入對應的 Group
- 建立完成後,把登入 URL 和密碼給他:
https://<Your_AWS_Account_ID>.signin.aws.amazon.com/console/登入資訊只會顯示一次,錯過就要重設密碼。提醒新使用者第一次登入就開 MFA。
自定義 Policy:精準控制權限
內建的 policy 太粗了?你可以自己寫 JSON policy,精確到「只能讀某個 S3 bucket」這種程度:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::example-bucket"
},
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::example-bucket/*"
}
]
}這個 policy 讓使用者只能看到 example-bucket 裡面有什麼檔案、下載檔案,但不能上傳或刪除。
還有一個進階武器叫 Permissions Boundary——它設定了一個使用者「最多能有」的權限上限。就算你不小心附加了 AdministratorAccess,boundary 還是會擋住。適合拿來防手滑。
權限管理的四個鐵則
- 最小權限原則:只給完成工作需要的權限,不確定就先不給,需要再開
- MFA 一定要開:Root 帳號和所有有 Console 權限的 IAM user 都要
- 用 Tag 管理資源:幫每個資源打上
team,environment,project標籤,帳單追蹤和權限管理都會輕鬆很多 - 定期檢查:每季看一次,離職的人帳號還在嗎?不用的權限還掛著嗎?
延伸閱讀
權限管理不性感,但它是你和天價帳單之間唯一的防線。