在前一篇,我們探索了 AWS 的網路基礎 —— VPC。
有了網路邊界之後,雲端服務之間可以安全地連線與隔離。
但接下來還有一個更關鍵的問題:
「誰能登入你的 AWS?誰能刪除資料?誰能動到伺服器?」
這,就是 AWS 的安全核心 —— IAM(Identity and Access Management)。
💡 一句話理解:
IAM 是 AWS 的身分與權限控管系統,負責決定「誰能做什麼」。
IAM 的全名是 Identity and Access Management,
它幫助我們在雲端中安全地管理:
換句話說,VPC 解決「資料怎麼流」,
IAM 則解決「人與服務能不能動這些資料」。
想像你開了一家公司:
如果沒有 IAM,
那所有人都能進 AWS 控制台、刪資料、上傳亂七八糟的檔案 😱
IAM 的目標是確保:
名稱 | 定義 | 舉例 |
---|---|---|
User | 真實使用者帳號(開發者、管理員) | 你的個人登入帳號 |
Group | 一群使用者,方便統一設定權限 | 後端開發組 / 財務組 |
Role | 給服務使用的「臨時身分」 | EC2 或 Lambda 角色 |
Policy | JSON 格式的權限規則,定義能做什麼事 | 允許 s3:GetObject 讀取檔案 |
一個典型的 Policy(權限規則)長這樣:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-ithome-bucket/*"
}
]
}
它的意思是:
「允許這個使用者從指定的 S3 bucket 讀取檔案。」
IAM 的權限設計有兩個層面:
✅ AWS 的安全哲學:「一切都預設禁止,除非被允許。」
也就是說,沒有被 Policy 明確授權的動作,都會被拒絕。
應用場景 | 做法 |
---|---|
開發團隊多人共用 AWS | 為每個人建立 IAM User,分配對應權限 |
EC2 要存取 S3 | 建立 IAM Role 掛到 EC2 上(不用明文金鑰) |
前端要讀取特定 S3 內容 | 建立具有限制的 Policy,允許 s3:GetObject |
CI/CD Pipeline 部署 | 為 GitHub Actions 或 CodeBuild 建立部署角色 |
給使用者只需要的權限,不多不少。
不要為方便而附加「AdministratorAccess」。
不要共用 root 帳號或同一組 Access Key,
建立各自的 IAM User 並開啟 MFA。
金鑰容易洩漏;Role 可安全地授權給 EC2、Lambda。
使用 AWS CloudTrail 或 IAM Access Analyzer,
檢查是否有過度開放的權限。
服務 | IAM 的角色 |
---|---|
EC2 | 使用 IAM Role 存取 S3 或 RDS |
Lambda | 以 Role 執行雲端任務(安全且短期) |
S3 | 透過 Policy 管控誰能上傳、讀取 |
CloudWatch / CloudTrail | 搭配 IAM 記錄操作紀錄與審查行為 |
今天,我們理解了 AWS 的核心安全哲學:
網路的安全靠 VPC,行為的安全靠 IAM。
VPC 幫你築起圍牆,
而 IAM 幫你決定「誰能進出、能做什麼」。
掌握 IAM,就等於掌握了 AWS 的「金鑰」。
它不只是設定權限的工具,更是保障整個雲端架構安全的最後防線。