cover

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

設置IAM

你的 AWS 帳號有幾個人在用?每個人都用 Root 登入嗎?如果答案是「對」,這篇你得認真看。

先講結論

IAM 的核心觀念就一句話:給每個人剛好夠用的權限,不多不少。 用 Group 管理權限、用 Policy 定義能做什麼、用 MFA 擋住被盜的風險。搞懂這三件事,你的 AWS 帳號就安全了八成。


為什麼你不該用 Root 帳戶做日常操作?

Root 帳戶就像你家的萬能鑰匙——能開所有的門,包括那扇「刪除整個帳號」的門。

我見過最慘的案例:某個團隊所有人共用 Root 帳號,結果有人不小心把 production 的 S3 bucket 砍了。因為大家都用同一個帳號,連是誰幹的都查不出來。

所以第一件事:建 IAM 使用者,Root 帳號鎖起來只做帳務管理。


建立 User Group:批次管理權限

一個一個使用者去設權限?等團隊超過 5 個人你就會崩潰。用 Group 管理才是正解。

常見的 Group 配置:

GroupPolicy誰該加進去
AdminsAdministratorAccess你(但也要三思)
DevelopersPowerUserAccess工程師
ReadOnlyReadOnlyAccessPM、監控人員
BillingBilling財務、老闆
DatabaseAdmins自定義 RDS/DynamoDB 權限DBA

我的建議:即使你是唯一的管理員,也別直接用 Root。開一個 Admins group,建一個 IAM user 給自己用。這是紀律問題。

操作步驟

  1. AWS Console → 搜尋 IAM → 左側選「User groups」
  2. 點「Create group」→ 取名(例如 Developers
  3. 在「Attach permissions policies」選對應的 policy
  4. 搞定

建立 IAM 使用者

  1. IAM → Users → Add user
  2. 輸入使用者名稱,勾選「AWS Management Console access」
  3. 設密碼(建議勾「首次登入必須改密碼」)
  4. 加入對應的 Group
  5. 建立完成後,把登入 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 還是會擋住。適合拿來防手滑。


權限管理的四個鐵則

  1. 最小權限原則:只給完成工作需要的權限,不確定就先不給,需要再開
  2. MFA 一定要開:Root 帳號和所有有 Console 權限的 IAM user 都要
  3. 用 Tag 管理資源:幫每個資源打上 team, environment, project 標籤,帳單追蹤和權限管理都會輕鬆很多
  4. 定期檢查:每季看一次,離職的人帳號還在嗎?不用的權限還掛著嗎?

延伸閱讀


權限管理不性感,但它是你和天價帳單之間唯一的防線。