前言
AWS Identity and Access Management (IAM) 是 AWS 提供的一項重要服務,讓您能夠安全地控制對 AWS 服務和資源的存取權限。透過 IAM,您可以建立和管理 AWS 使用者和群組,並使用權限來允許或拒絕他們對 AWS 資源的存取。
IAM 簡介
什麼是 IAM?
IAM 是一項免費的 AWS 服務,可讓您管理對 AWS 服務和資源的存取權限。使用 IAM,您可以:
- 建立使用者和群組:為組織中的人員建立個別的 AWS 使用者帳戶
- 授予權限:控制使用者可以執行哪些操作
- 實施最小權限原則:只授予完成任務所需的最低權限
- 啟用多重要素驗證 (MFA):為帳戶增加額外的安全層
IAM 的核心元件
| 元件 | 說明 |
|---|
| 使用者 (Users) | 代表與 AWS 互動的人員或服務 |
| 群組 (Groups) | 使用者的集合,可以一次為多個使用者指定權限 |
| 角色 (Roles) | 可以由需要的實體暫時承擔的身份 |
| 政策 (Policies) | 定義權限的 JSON 文件 |
使用者建立與管理
建立 IAM 使用者
- 登入 AWS 管理主控台,開啟 IAM 主控台
- 在導覽窗格中選擇「使用者」
- 選擇「新增使用者」
- 輸入使用者名稱
- 選擇存取類型:
- AWS 管理主控台存取:適用於需要登入主控台的使用者
- 程式設計存取:適用於需要使用 API、CLI 或 SDK 的應用程式
使用 AWS CLI 建立使用者
1
2
3
4
5
6
7
8
| # 建立新使用者
aws iam create-user --user-name NewUser
# 為使用者建立存取金鑰
aws iam create-access-key --user-name NewUser
# 為使用者設定登入密碼
aws iam create-login-profile --user-name NewUser --password MyPassword123!
|
管理使用者認證
建議定期輪換使用者的存取金鑰和密碼:
1
2
3
4
5
6
7
8
| # 列出使用者的存取金鑰
aws iam list-access-keys --user-name UserName
# 停用存取金鑰
aws iam update-access-key --user-name UserName --access-key-id AKIAIOSFODNN7EXAMPLE --status Inactive
# 刪除存取金鑰
aws iam delete-access-key --user-name UserName --access-key-id AKIAIOSFODNN7EXAMPLE
|
群組設定
為什麼使用群組?
群組讓您能夠為多個使用者指定相同的權限,這比為每個使用者單獨設定權限更有效率。當使用者加入群組時,會自動繼承該群組的所有權限。
建立和管理群組
1
2
3
4
5
6
7
8
9
10
11
| # 建立群組
aws iam create-group --group-name Developers
# 將使用者新增至群組
aws iam add-user-to-group --user-name NewUser --group-name Developers
# 從群組移除使用者
aws iam remove-user-from-group --user-name NewUser --group-name Developers
# 列出群組中的使用者
aws iam get-group --group-name Developers
|
常見的群組配置範例
| 群組名稱 | 用途 | 建議權限 |
|---|
| Administrators | 完整管理權限 | AdministratorAccess |
| Developers | 開發人員 | PowerUserAccess |
| ReadOnlyUsers | 唯讀存取 | ReadOnlyAccess |
| BillingAdmins | 帳單管理 | Billing |
政策 (Policy) 設定
IAM 政策類型
- AWS 受管政策:由 AWS 建立和管理的獨立政策
- 客戶受管政策:您在 AWS 帳戶中建立和管理的獨立政策
- 內嵌政策:直接嵌入在使用者、群組或角色中的政策
政策結構
IAM 政策使用 JSON 格式撰寫:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| {
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowS3ReadAccess",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::my-bucket",
"arn:aws:s3:::my-bucket/*"
]
}
]
}
|
政策元素說明
| 元素 | 說明 |
|---|
| Version | 政策語言版本,建議使用 “2012-10-17” |
| Statement | 包含一個或多個權限陳述的陣列 |
| Sid | 陳述識別碼(選填) |
| Effect | 允許 (Allow) 或拒絕 (Deny) |
| Action | 要允許或拒絕的操作 |
| Resource | 操作適用的資源 |
| Condition | 政策生效的條件(選填) |
附加政策至群組
1
2
3
4
5
6
| # 附加 AWS 受管政策
aws iam attach-group-policy --group-name Developers --policy-arn arn:aws:iam::aws:policy/AmazonEC2FullAccess
# 建立並附加客戶受管政策
aws iam create-policy --policy-name MyCustomPolicy --policy-document file://policy.json
aws iam attach-group-policy --group-name Developers --policy-arn arn:aws:iam::123456789012:policy/MyCustomPolicy
|
最佳實務
1. 保護根帳戶
- 不要使用根帳戶進行日常操作
- 為根帳戶啟用 MFA
- 不要建立根帳戶的存取金鑰
- 使用強密碼
2. 遵循最小權限原則
只授予使用者完成任務所需的最低權限:
1
2
3
4
5
6
7
8
9
10
11
12
13
| {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:StartInstances",
"ec2:StopInstances"
],
"Resource": "arn:aws:ec2:ap-northeast-1:123456789012:instance/i-1234567890abcdef0"
}
]
}
|
3. 使用群組管理權限
- 建立群組並將政策附加至群組
- 將使用者新增至適當的群組
- 避免直接將政策附加至使用者
4. 啟用多重要素驗證 (MFA)
為所有使用者啟用 MFA,特別是具有管理權限的使用者:
1
2
3
4
5
| # 建立虛擬 MFA 裝置
aws iam create-virtual-mfa-device --virtual-mfa-device-name UserMFA --outfile /tmp/QRCode.png --bootstrap-method QRCodePNG
# 啟用 MFA
aws iam enable-mfa-device --user-name UserName --serial-number arn:aws:iam::123456789012:mfa/UserMFA --authentication-code1 123456 --authentication-code2 654321
|
5. 定期審查和輪換認證
- 定期檢視 IAM 認證報告
- 輪換存取金鑰(建議每 90 天)
- 移除不再需要的使用者和權限
1
2
3
4
5
| # 產生認證報告
aws iam generate-credential-report
# 取得認證報告
aws iam get-credential-report --output text --query Content | base64 -d
|
6. 使用政策條件增加安全性
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "ec2:*",
"Resource": "*",
"Condition": {
"IpAddress": {
"aws:SourceIp": "203.0.113.0/24"
},
"Bool": {
"aws:MultiFactorAuthPresent": "true"
}
}
}
]
}
|
總結
AWS IAM 是管理 AWS 資源存取權限的基礎服務。透過正確設定使用者、群組和政策,您可以:
- 確保只有授權的人員可以存取特定資源
- 簡化權限管理流程
- 提高整體安全性
- 符合法規遵循要求
記住,安全是一個持續的過程。定期審查和更新您的 IAM 設定,確保它們符合組織的最新需求和安全標準。
參考資源