AWS IAM 使用者與群組權限管理

A comprehensive guide to AWS IAM users and groups management, including best practices for access control and security

前言

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 使用者

  1. 登入 AWS 管理主控台,開啟 IAM 主控台
  2. 在導覽窗格中選擇「使用者」
  3. 選擇「新增使用者」
  4. 輸入使用者名稱
  5. 選擇存取類型:
    • 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 政策類型

  1. AWS 受管政策:由 AWS 建立和管理的獨立政策
  2. 客戶受管政策:您在 AWS 帳戶中建立和管理的獨立政策
  3. 內嵌政策:直接嵌入在使用者、群組或角色中的政策

政策結構

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 設定,確保它們符合組織的最新需求和安全標準。

參考資源

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy