iT邦幫忙

2025 iThome 鐵人賽

DAY 24
0
自我挑戰組

一路side project - 學習筆記系列 第 24

[Day 24] GCP x IAM 權限控管 [學習筆記]

  • 分享至 

  • xImage
  •  

什麼是 IAM(Identity & Access Management)?

IAM 是一套「確認身分、授與權限、記錄行為」的制度與技術,確保正確的人/服務在正確的時間、用正確的方式,存取正確的資源。

為什麼我們需要 IAM

  • 安全:避免未授權存取與誤刪誤改。

  • 合規:滿足稽核與法規(如 ISO 27001、GDPR)。

  • 效率:用角色/群組一次到位,減少逐一手動配權。

IAM 的三大核心要素

  • 身分(Identity):誰?— 人員、服務帳號、機器。

  • 驗證(Authentication):真的就是你嗎?— 密碼、MFA、金鑰、憑證。

  • 授權(Authorization):你能做什麼?— 角色、政策、群組、範圍。

  • 補充:稽核(Audit) 會把「做了什麼、什麼時候、由誰」完整留下足跡。

常見模式

  • SSO 單一登入、MFA 多因素驗證

  • RBAC(角色為主)/ABAC(屬性為主)

  • 最小權限(Least Privilege)、零信任(Zero Trust)

  • JIT/JEA:臨時提權/只允許必要操作

  • PAM(特權帳號管理)、IGA(治理與審批流程)

Cloud IAM: Qwik Start

接下來跟著course練習用兩個不同的帳號在 Google Cloud 上操作:

Username 1(Owner):像專案大老闆,幾乎無限制,擁有最高權限,可以新增/刪除員工、管理所有資源。
Username 2(Viewer):像實習生,只能看、不能改。

後面實際操作四個 Tasks(探索 IAM 介面 → 建 Bucket 測試 → 移除專案存取 → 指定 Storage 物件讀取角色)一步步驗證上面的核心觀念,尤其是:

  • 「角色決定能做什麼」(Owner vs Viewer)
  • 「範圍決定在哪裡能做」(專案層級 vs 特定服務/資源)
  • 「最小權限」(只給完成任務所需的 Storage Object Viewer)

4 Tasks:

  • Task 1:認識專案層級 Basic/原始角色(Owner/Editor/Viewer)
  • Task 2:Owner 建資源、Viewer 只能看
  • Task 3:移除存取後 → 立即遭拒
  • Task 4:改給 精準角色(Storage Object Viewer)→ GUI 看不到整個專案,但用 gsutil 指向指定資源可讀,展現最小權限與範圍

Task 1. Explore the IAM console and project level roles

  • 熟悉 IAM 的管理介面,並了解三種最基本的「原始角色 (Primitive Roles)

Username 1 (大老闆) 的視角:

  1. 回到 Username 1 Cloud Console page.

  2. 進入 Navigation menu > IAM & Admin > IAM. 現在會在 "IAM & Admin" console.

  3. 點擊頁面最上面的 +GRANT ACCESS (授予存取權)

  4. 往下滑到 Basic 查看 basic roles:

    1. Owner (擁有者):權力最大,可以管理專案裡的所有資源、帳單,甚至可以決定其他人的權限。
    2. Editor (編輯者):權力次之,可以修改所有資源,但不能管人或管錢。
    3. Viewer (檢視者):權力最小,只能看,不能碰。

    https://ithelp.ithome.com.tw/upload/images/20251007/201547641NjBk60UuV.png

    https://ithelp.ithome.com.tw/upload/images/20251007/201547645QIpwiQnXp.png

  5. 點擊 CANCEL (取消) 離開 ,這裡只是讓你看看,證明了他就是 Owner,不用真的新增。

Username 2 (實習生) 的視角:

  1. 切換到 Username 2 的視窗,並進入同一個 IAM 頁面
  2. 會在名單上看到 Username 2 的角色被標示為 Viewer
  • 最關鍵的發現:頁面頂部的 +GRANT ACCESS 按鈕是灰色的,無法點擊
    展示了 Viewer 的限制——他沒有權力去指派工作或新增成員。

    https://ithelp.ithome.com.tw/upload/images/20251007/20154764Icf2xaT2aj.png

小結:讓我們從介面上可以直觀地感受到了 Owner 和 Viewer 的權力差異。

Task 2. Prepare a Cloud Storage bucket for access testing

  1. 切換回 Username 1 (大老闆) 的視窗

  2. 建立一個儲存桶 (Create a bucket):身為 Owner,Username 1 有權力建立新的資源。
    Navigation menu > Cloud Storage > Buckets,點擊 +CREATE 。[流程和之前同]

    Property Value

    | Name: | globally unique name (create it yourself!) and click CONTINUE. |
    | Location Type: | Multi-Region |

  3. 上傳一個範例檔案 (Upload a sample file)Username 1 在這個檔案櫃裡放了一份名叫 sample.txt 的文件。

    1. 在bucket details page 點 UPLOAD FILES
    2. 隨便從自己電腦檔案中上傳
    3. 重新命名為 sample.txt
  4. 切換到 Username 2 (實習生) 的視窗

  5. 驗證存取權Username 2 也去看了這個儲存桶 (Navigation menu > Cloud Storage > Buckets)。他可以成功看到這個檔案櫃 (bucket) 和裡面的文件 (sample.txt)。
    這證明了 Viewer 的特性:只能看,不能碰。他無法上傳、刪除或修改任何東西。

小結:驗證了 Viewer 具有「唯讀」的權限。

Task 3. Remove project access

  • Owner 如何「開除」一個成員,讓他完全失去專案的存取權
  1. 切換回 Username 1 (大老闆) 的視窗
  2. 移除 Username 2 的權限
    • 回到 IAM 頁面 (Navigation menu > IAM & Admin > IAM)
    • 找到 Username 2 那一列,點擊旁邊的鉛筆圖示(編輯)。
    • 點擊角色旁邊的垃圾桶圖示,然後儲存。
    • 這一步操作就像大老闆把 Username 2 從員工名冊上劃掉,並收回他的門禁卡。
  3. 切換到 Username 2 (被開除的實習生) 的視窗
  4. 驗證失去存取權
    • Username 2 再次嘗試去看 Cloud Storage 的儲存桶
    • 這次他會看到一個權限錯誤 (permission error) 的訊息。因為他的門禁卡已經失效,他連公司大門都進不去了

小結:知道如何移除一個人的所有權限,並驗證移除後的效果。

Task 4. Add Cloud Storage permissions

  1. 在 Lab Connection 中複製 Username 2 的名字,切換回 Username 1 (大老闆) 的視窗

  2. 授予 Username 2 一個特定的角色

    • Username 1 重新給 Username 2 一個臨時任務

    • (Navigation menu > IAM & Admin > IAM)點擊 +GRANT ACCESS,把 Username 2 加回來。

    • 不給予通用的 Viewer 角色,而是給具體的角色:Storage Object Viewer (儲存空間物件檢視者)

    • 這個新角色的權限是:「你不能在公司裡隨便逛,但我給你一把鑰匙,這把鑰匙只能打開那個特定的檔案櫃,讓你查看裡面的文件。」

      https://ithelp.ithome.com.tw/upload/images/20251007/20154764kWCfGJCVoG.png

  3. 切換到 Username 2 (拿到特殊鑰匙的實習生) 的視窗

  4. 驗證新的存取權

    • 切換回 Username 2 再次嘗試從圖形介面(網頁)去看 Cloud Storage,失敗了! 因為他沒有(Project Viewer)的權限。
    • 接著,打開 Cloud Shell(一個內建的指令列工具)。
    • 執行指令 gsutil ls gs://[YOUR_BUCKET_NAME],這個指令的意思是「直接用鑰匙去開那個指定的檔案櫃,告訴我裡面有什麼」。
    • 結果成功了! 他看到了 sample.txt

小結:展示了 最小權限原則 (Principle of Least Privilege)。Username 2 沒有權限瀏覽整個專案,但他被賦予了剛好能完成任務的最小權限——查看特定儲存桶內的物件。


上一篇
[Day 23] x Cloud Storage CLI 快速入門:從建立儲存桶到公開檔案 [學習筆記]
下一篇
[Day 25] Cloud Monitoring x 第一個警告(Alert)
系列文
一路side project - 學習筆記25
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言