今天延續介紹上篇的 IAM 身份與權限管理
4.IAM Group:群組
如果每個人都設定權限這樣會非常麻煩
因此可以建立一個像是 Frontend Group,然後把 Policy 掛在 Group:
Frontend Group
│
└── S3 Read Policy
↑
┌──────┼──────┐
SS C Amy Jack
這樣加入這個 Group 的 User,就會取得 Group 所擁有的權限。
所以 Group = 一群 IAM User 的權限集合管理方式。
5.IAM Policy:權限規則
這是 IAM 最核心的東西。
Policy = 告訴 AWS「允許 / 拒絕哪些操作」的規則。
例如:允許讀取 S3 Bucket。
實際 IAM Policy 是 JSON:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "s3:GetObject",
"Resource": "*"
}
]
}
先看三個最重要的東西:
| 欄位 | 意思 |
|---|---|
| Effect | Allow 還是 Deny |
| Action | 可以執行什麼操作 |
| Resource | 可以操作什麼資源 |
所以可以把 Policy 想成:
Effect
「允許嗎?」
Action
「允許做什麼?」
Resource
「可以對誰做?」
例如:
Allow
↓
s3:GetObject
↓
某個 S3 Bucket
意思就是「允許讀取這個 S3 Bucket 裡面的物件。」
6.IAM Role:角色
Role 是初學 AWS 最容易搞混、但實務上非常重要的概念。
可以把 Role 理解成:「可以暫時被某個人或 AWS 服務取得的權限身分。」
例如你建立一台 EC2,現在 EC2 裡面的程式需要讀取 S3,你不應該把 AWS 帳號密碼寫在程式,這是很危險的做法。
正確方式是:
EC2
│
│ assume
↓
IAM Role
│
↓
S3 Read Policy
│
↓
S3
也就是 EC2 取得 IAM Role,透過 Role 的權限存取 S3。
7.User vs Role 到底差在哪?
| IAM User | IAM Role | |
|---|---|---|
| 代表 | 一個固定身分 | 可被取得的角色 |
| 常見用途 | 人 | AWS Service / App / 跨帳號 |
| 長期憑證 | 可以有 | 通常使用暫時憑證 |
| EC2 存取 S3 | ❌ 不推薦 | ✅ 推薦 |
| Lambda 存取 DynamoDB | ❌ 不推薦 | ✅ 推薦 |
用公司的概念來比喻:
IAM User
=
「你是公司員工 Shenny」
IAM Role
=
「你現在戴上 DevOps 管理員的工作帽」
Role 比較像:暫時取得某個角色所具有的權限。