iT邦幫忙

2021 iThome 鐵人賽

DAY 24
0
IT管理

無限手套 AWS 版:掌控一切的 5 + 1 雲端必學主題系列 第 24

Day 24 權限寶石:IAM 權限管理 架構解析

https://ithelp.ithome.com.tw/upload/images/20210929/20100951afkBYYXe9Z.jpg

今天我們要來介紹 AWS IAM 的架構概念,那我們開始吧!

AWS IAM 架構介紹

IAM 裡面有個重要元件叫做 Policy,是用來規範某人使用 AWS 資源的權限,而在 Policy 之下有兩個類別,分別為 Identity-based policy 與 Resouce-based policy,如下圖:
https://ithelp.ithome.com.tw/upload/images/20210913/201009512yQKVQ9Yoq.png

Identity-based policy 介紹

每一個 Identity-based policy 中有多個 Statement ,這邊用 * 符號代表多個(圖#1),而每一個 Statement 只會歸屬於一個 Policy (圖#2),而 Statement 就是更細部去定義如何去使用特定的 AWS 服務,Statement 之中有三大要素:

  1. Effect,這次要開放/阻擋權限。
  2. Action,允許某個服務做什麼動作,譬如說到 S3 Bucket 新增檔案等。
  3. Resource,指名這次的 Statement 要去針對哪一個 AWS Resource,所以每一個 Resource 都會去連接到某一個 AWS Service,譬如說指定某一個 S3 Bucket,或者針對某一台 RDS Instance 等。如下圖:

https://ithelp.ithome.com.tw/upload/images/20210913/20100951xuwL0cDdxB.png

Identity-based policy 要套用給誰呢?

在 IAM 中有一個叫 User 的東西,也就是常見的登錄帳號,每一個 Policy 可以被多個 User 使用,而每一個 User 也可以擁有多個 Policy (下圖中的 * 符號代表多個)。

除了 User 以外,IAM 還提供給我們 Group,每一個 Group 可以涵蓋多個 User,每一個 User 可以同時存在於多個 Group 中。

而 Group 與 Policy 之間的關係也一樣,一個 Policy 可以被多個 Group 使用,Group 也可以同時套用多個 Policy。如下圖:
https://ithelp.ithome.com.tw/upload/images/20210913/20100951LbYmpUWgYL.png

Role 介紹

除了 User 與 Group 之外,IAM 還提供給我們 Role 作使用,一個 Policy 可以同時給多個 Role 使用,一個 Role 也可以套用多個 Policy。

Role 主要目的,就是讓「不是登錄帳號」的其他東西(譬如說不是Group/User),來使用 AWS 的 Service (例如 EC2 Instance),透過這個方式就可以將 AWS Service 連接到 IAM 服務之中。舉例,當我創造一個 EC2 Instance 時同時創建一個 Role,讓他可以去連接到 S3 Bucket 的權限。如下圖:
https://ithelp.ithome.com.tw/upload/images/20210913/20100951qxf4geqVg9.png

Resource-based policy 介紹

與 Identity-based policy 相同,每一個 Resource-based policy 中有多個 Statement (下圖中的 * 符號代表多個),而每一個 Statement 只會歸屬於一個 Policy (圖中以數字 1 代表此關係)。不過 Statement 中的 Resource (下圖紅框)與上述介紹有不同的意義,這邊特別寫上 self 來表示。

通常在設定 Resource-based policy 時,通常是去各個服務的介面設定,譬如說在某個 S3 Bucket 的介面下,去設定 Resource-based policy,而 Resource (下圖紅框)就表示此 S3 Bucket 本身。
https://ithelp.ithome.com.tw/upload/images/20210913/20100951eX0DLwnvjN.png

Resource-based policy 要套用給誰呢?

要決定套用給誰,必須使用 Statement 的 Principal 欄位(下圖粉色),若想使 User 能使用 AWS Service,就必須在 Principal 裡進行設定。如下圖:
https://ithelp.ithome.com.tw/upload/images/20210913/20100951qwZTSSA66W.png

https://ithelp.ithome.com.tw/upload/images/20210913/20100951OxjKox8EFN.png

Identity-based policy 與 Resource-based policy 套用差別

Identity-based policy: 可以看到 User、Group 與 Role,他們是在 Policy level,一套用就是整個 Policy 底下的 Statement 一次套用(下圖#1)

Resource-based policy: 而 Principal 則不是,Principal 是在 Statement level,換言之,在每一個 Statement 都要做一次 Principal 的設定(下圖#2)

除此之外 Identity-based policy 有重複使用的概念,設定好一次就可以套用給 User/Group/Role (下圖#3)

Resource-based policy 在每一次撰寫時都要到 Service 底下去做設定,跨 Service 之間無法重複使用(下圖#4)
https://ithelp.ithome.com.tw/upload/images/20210913/20100951OvwfnBl5Uf.png

小結

從不同角度看 Policy 的功用:

  1. Identity-based policy 的面向是針對某個人(User/Group/Role)。
  2. Resource-based policy 的角度,是站在資源本身看這個世界,就像是守門者,要規範誰可以使用 Service。

整理結果如下圖:
https://ithelp.ithome.com.tw/upload/images/20210913/20100951SJvLuupDSA.png

那以上是這次對 IAM 架構的介紹。

What's Next?

那麼明天,我們將接著看到「權限寶石:【Lab】IAM User 建立與使用(上)」!


上一篇
Day 23 資料寶石:【Lab】RDS架構 建立自己的第一台雲端資料庫 (下)
下一篇
Day 25 權限寶石:IAM User 建立與使用(上)
系列文
無限手套 AWS 版:掌控一切的 5 + 1 雲端必學主題30

尚未有邦友留言

立即登入留言