0. 前言
權限管理一直以來是最重要的議題,攸關安全性與組織性。
那我們就來看看 IAM 到底如何組成以及如何分派權限吧!
1. 重點
2. 內容
2.1. 關於 IAM
該服務用於安全管理 AWS 資源的訪問權限,控制用戶是否能訪問特定資源以確保安全和規範。
在普遍的 IAM 架構我們會有 Policy 去綁定多個 Permission,而我們可以配套給 Group(群組)與 User(個別),另外針對 AWS 服務則是配與 Role(角色)。那在下圖我就配上生活案例搭配解釋。
![](https://babaochou2420.com/wp-content/uploads/2024/08/aws_20240803-Page-2.drawio-2.png)
而在除了官方預設的 Policy 與 Role 都是可以另外建置的,而 Policy 的架構則主要由 Effect (效果), Actions(操作權限), Resource(資源) 組成,並另外能加上 Principal(對象), Condition(條件)。
在下方的範例則是表示 “針對所有 Principal 除了 Condition 中的帳戶之外一律拒絕其對指定 S3 Bucket 的任何操作” 。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "UsePrincipalArnInsteadOfNotPrincipalWithDeny",
"Effect": "Deny",
"Action": "s3:*",
"Principal": "*",
"Resource": [
"arn:aws:s3:::BUCKETNAME/*",
"arn:aws:s3:::BUCKETNAME"
],
"Condition": {
"ArnNotEquals": {
"aws:PrincipalArn": "arn:aws:iam::444455556666:user/user-name"
}
}
}
]
}
那在組織中我們肯定不可能給予每個員工管理員權限,而是給予相匹配的最小權限阻止其讀取與業務無關的資源,甚至盜竊組織重要資源。
我們就準備示範如何透過 IAM 建立子帳戶來操作 AWS 介面吧。
事前提醒
由於 AWS 官方目前建議採用 Identity Centre 來管控組織分帳戶,在下一篇章我們會進行介紹。
但現今仍不少公司業務為求快速簡便而慣用 IAM 服務,因此以下實作主要用於示範,建議各位實作後進行刪除,或者純看以下的過程即可。
2.2. IAM Group 的建立
我們首先進到的是群組的概念,卽在內部的用戶會自動繼承相關的權限。我們從 IAM 面板的左側選單找到 User Groups 並進入介面。
![](https://babaochou2420.com/wp-content/uploads/2024/08/Screenshot_104-Copy-1024x463.png)
進到介面後我們壓下右上側的 Create group 按鈕開始進行建置。
![](https://babaochou2420.com/wp-content/uploads/2024/08/Screenshot_103-1024x464.png)
那我們在範例中建立個群組並取作 aws_admin 代表該群組擁有 AWS 所有服務的管理員權限。那目前我們沒有建立任何 User 就先跳過中間的步驟,而權限的部分這邊從簡而選取 AdministratorAccess 套用最大的 Full Access ,完成過後就可以建立群組了。
![](https://babaochou2420.com/wp-content/uploads/2024/08/Screenshot_105-1024x464.png)
建立完成過後我們應該能立即看到在頁面上顯示,就可以進到下一步了。
![](https://babaochou2420.com/wp-content/uploads/2024/08/Screenshot_106-1024x142.png)
2.3. IAM User 的建立
事前提醒
由於我事先準備後續教材,截圖的版面可能與各位不同,關於 Identity Centre 的部份請忽略它。
那接著我們就要進到 Users 介面來準備建立 IAM 帳號。
![](https://babaochou2420.com/wp-content/uploads/2024/08/Screenshot_107-1024x462.png)
直接點擊右上側的 Create user 按鈕進行用戶的建立。
![](https://babaochou2420.com/wp-content/uploads/2024/08/Screenshot_108-1024x464.png)
由於在下一期我們會透過 Identity Centre 來取代建立 IAM 用戶的形式,我們就先隨便幫它取個名字為 tmp_admin 代表是暫時性的管理員帳戶。接著請勾選正下方的 access to … Console 才能讓用戶從官方的登入介面進到網頁介面之中。那這邊為了方便我先取消掉要重置密碼的設定。
![](https://babaochou2420.com/wp-content/uploads/2024/08/Screenshot_109-1024x464.png)
進入下一步看下權限的設立方式,Copy 是從其他 User 複製權限我們就不多談了,這邊來體驗另兩種建立方式:Add to group 與 Attach policy。
我們先體驗 Attach policy 齁,阿其實就跟剛剛添加權限到 Group 相同的感覺,我們就不多加嘗試了。
![](https://babaochou2420.com/wp-content/uploads/2024/08/Screenshot_110-1024x463.png)
接著我們回到預設的 Add to group,選擇我們剛才設定的 aws_admin 群組。那雖然說同處同個 Group 但實際上我們還能另外設置 boundary 限縮該 User 的權限,但我們就先跳過並進到下一步。
![](https://babaochou2420.com/wp-content/uploads/2024/08/image-5-1024x464.png)
再來檢查一下設置並按下 Create user 建立新的 User 在 Group 之中。
![](https://babaochou2420.com/wp-content/uploads/2024/08/Screenshot_111-1024x464.png)
建立完成後我們會生成三個資料,這邊直接下載 csv 資料進行保存齁。
那反正實作完我就會將該帳戶刪除,後續該 IAM 的 Account ID 就懶著遮了。但 Account ID 本身也能用於一些處理因此各位盡量不要洩漏,正如我在先前的截圖中都有遮住 root 的 Account ID 。
![](https://babaochou2420.com/wp-content/uploads/2024/08/Screenshot_112-1024x464.png)
2.3.1. MFA 設置
建立完成後先別急著測試登入,這邊先帶各位看下怎麼去設定 IAM User 的 MFA 機制。首先點擊 User name 進入到管理介面之中。
![](https://babaochou2420.com/wp-content/uploads/2024/08/Screenshot_113-1024x161.png)
這邊額外說明下,雖然我們是透過 Group 的方式來建立用戶,但在後續我們是可以在此頁面給此 User 新增額外的權限。那總之我們進到 Security 分頁來調整重要的安全設定。
![](https://babaochou2420.com/wp-content/uploads/2024/08/Screenshot_114-1024x497.png)
在這邊我們也能夠取消該 User 網頁介面登入的許可,那這邊就先留意下這邊可以建立 MFA 就好。
![](https://babaochou2420.com/wp-content/uploads/2024/08/Screenshot_115-1024x464.png)
2.3.2. 介面登入
接著我們複製 sign-in link 貼到瀏覽器後,登出 root 帳戶的 AWS Console 來嘗試當入該 IAM 帳號吧。那這個網址的用途就只是會自動填入 IAM 的 Account ID,也就是連結開頭的 12 位碼。接著輸入我們的用戶名稱 tmp_admin 並貼上在 csv 檔案中的用戶密碼。
![](https://babaochou2420.com/wp-content/uploads/2024/08/Screenshot_116-1024x427.png)
成功進到我們的頁面,各位也能發現在右上角的用戶名稱為剛所設定的 User 名稱就代表完成了。
![](https://babaochou2420.com/wp-content/uploads/2024/08/Screenshot_117-1024x84.png)
2.4. 清除練習資源
因為相對我們下次要講得方法簡便許多,針對小型案件與臨時權限不少的企業仍採用 IAM 進行配發,因此本篇還是稍微介紹下建立與登入 IAM 用戶的方式。
但現在 AWS 官方也本身不太推薦使用 IAM 開設子用戶,主要在於 IAM 的管理與授權很常需要變動,且其 Access / Secret Key 申請後不會自動更新,過往造成不少管理的糾紛案件。
又由於 AWS 本身沒有 Project 的概念,通常都是分出很幾個帳戶作為 Project 進行使用,這樣任何人員都需要好幾把金鑰去應對不同的公司帳戶。
後續我們將採用 Identity Centre 去結合 Single Sign-On 的優點來進行帳戶的分立,那我們接著重新登入我們的 root 帳戶,來把剛練習的資源都砍砍掉。
我們首先到 Users 介面勾選 tmp_admin 並點選 Delete 依照操作進行 User 的刪除。
![](https://babaochou2420.com/wp-content/uploads/2024/08/Screenshot_118-1024x464.png)
接著再來到 User Groups 同樣勾選 aws_admin 並透過 Delete 依照操作進行刪除。
![](https://babaochou2420.com/wp-content/uploads/2024/08/Screenshot_119-1-1024x464.png)
如此我們就移除乾淨本篇有異動並稍有安全風險的資源囉。
3. 後話
簡單的認識 IAM 其架構與建立子帳戶的方式,但當組織龐大的時候越來越難管理又還可能員工要領好幾把鑰匙。甚至是員工或顧客不想辦理 AWS 帳號。
那針對這個議題 AWS 後來就推出了 Identity Centre 並結合 SSO 進行快捷的單一登入,並方便組織進行分帳戶的組合管理。那我們下期就來看看又如何從組織分配帳戶呢?
4. 參考
[1] How IAM works? – AWS Doc
https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html