在前幾天的文章裡,我們已經介紹了 Data Lakehouse 的基礎、資料來源以及 Amazon S3 與資料格式的重要性。
但如果要真正開始在 AWS 上進行實作,僅有架構、資料、儲存空間還不夠,我們還需要一套「門禁系統」,來確保誰能使用、誰能修改,誰不應該看到什麼資源。
這個「門禁系統」就是 AWS 的 IAM (Identity and Access Management)。
當你建立 AWS 帳號時,會得到一個 Root 帳號。
Root 帳號擁有所有權限,可以建立或刪除任何資源,但也因為權限過大,一旦外洩將帶來巨大風險。
👉 因此,AWS 的最佳實務是:
User(使用者)
Group(群組)
Role(角色)
Policy(政策)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:GetObject"],
"Resource": ["arn:aws:s3:::anime-lake/*"]
}
]
}
👉 簡易解讀:
Step 1. 建立 Role (給開發人員用)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["s3:GetObject"],
"Resource": ["arn:aws:s3:::anime-lake/*"]
}
]
}
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:root"
},
"Action": "sts:AssumeRole"
}
]
}
👉 這代表:只要是帳號 123456789012 底下的 IAM User/Group,都能 Assume 這個 Role。
Step 2. 建立 Group 並允許成員 Assume Role
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::123456789012:role/DeveloperRole"
}
]
}
👉 這代表:這個 Policy 不直接給 S3 權限,而是允許群組內的使用者去 Assume DeveloperRole。
Step 3. 使用者繼承群組權限
範例總結:
👉 這就是 AWS 推崇的「間接授權模式」:
User/Group 不直接擁有資源存取權限,而是透過 Role 來取得。
IAM 是 AWS 世界的第一道防線,也是治理的起點。
理解 IAM 的 User、Group、Role、Policy,不僅能確保資料安全,也能避免日後管理混亂。
本篇我們初步理解了 IAM 的觀念與核心元素,並學會了它們之間的關係。
下篇我們將進入 「DAY8 雲端基礎章-建立帳號與 IAM 實作」,實際操作 AWS 帳號初始化、設定 MFA、建立 IAM 使用者與群組,完成第一個安全環境的基礎建設。
[1] What is IAM?
[2] Security Pillar - AWS Well-Architected Framework