身為雲端專業人員,您或許已經很熟悉 Azure Identity and Access Management (IAM) 架構,而且在採行最佳做法方面也有相關經驗。就 IAM 而言,大家通常會有以下幾個疑慮:
- 管理資源存取權的最佳方法是什麼?
- 如何讓使用者只存取他們真正需要的資源?
在 Azure 中,組織搭配使用 IAM、Azure Active Directory (Azure AD)、使用者、角色及附加的政策,藉此控管不同 Azure 帳戶的存取權。
Azure AD 為多租戶雲端式目錄與身分管理服務,可讓您控制與管理 Azure 資源的存取權。

現在您將學習如何在 Google Cloud 中實施 IAM 控管機制。
總覽
在本實驗室中,您將瞭解如何運用服務帳戶使用者角色及如何授予角色。
目標
在本實驗室中,您將瞭解如何執行下列工作:
- 使用 IAM 實施存取控管機制
- 僅授予特定功能或資源的存取權
- 運用服務帳戶使用者角色
設定實驗室
每個實驗室都會提供新的 Google Cloud 專案和一組資源,讓您在時限內免費使用。
-
按一下「Start Lab」按鈕。如果研究室會產生費用,畫面中會出現選擇付款方式的彈出式視窗。左側的「Lab Details」窗格會顯示下列項目:
- 「Open Google Cloud console」按鈕
- 剩餘時間
- 必須在這個研究室中使用的臨時憑證
- 完成這個實驗室所需的其他資訊 (如有)
-
點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」。
接著,實驗室會啟動相關資源並開啟另一個分頁,當中顯示「登入」頁面。
提示:您可以在不同的視窗中並排開啟分頁。
注意:如果頁面中顯示「選擇帳戶」對話方塊,請點選「使用其他帳戶」。
-
如有必要,請將下方的 Username 貼到「登入」對話方塊。
{{{user_0.username | "Username"}}}
您也可以在「Lab Details」窗格找到 Username。
-
點選「下一步」。
-
複製下方的 Password,並貼到「歡迎使用」對話方塊。
{{{user_0.password | "Password"}}}
您也可以在「Lab Details」窗格找到 Password。
-
點選「下一步」。
重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。
注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。
-
按過後續的所有頁面:
- 接受條款及細則。
- 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
- 請勿申請免費試用。
Google Cloud 控制台稍後會在這個分頁開啟。
注意:如要查看列出 Google Cloud 產品和服務的選單,請點選左上角的「導覽選單」,或在「搜尋」欄位輸入服務或產品名稱。
工作 1:設定兩位使用者
以第一位使用者的身分登入 Cloud 控制台
- 這個實驗室在「連線詳細資料」對話方塊中提供兩個使用者名稱。在無痕視窗用 Qwiklabs 提供的 Username 1 登入 Cloud 控制台,登入方式如往常一樣。請注意,兩個使用者名稱使用同一組密碼。
以第二位使用者的身分登入 Cloud 控制台
- 在無痕視窗中開啟另一個分頁。
- 前往 console.cloud.google.com。
- 點選畫面右上角的「使用者」圖示,然後按一下「新增帳戶」。
- 用 Qwiklabs 提供的 Username 2 登入 Cloud 控制台。
注意:在本實驗室中,如果您登出 Username 1 帳戶,Qwiklabs 會在某些時間點刪除 Username 2 帳戶,因此請保持 Username 1 登入狀態,直到您不需使用 Username 2 為止。
工作 2:使用「身分與存取權管理」控制台
確認目前位於 Username 1 Cloud 控制台分頁。
前往「身分與存取權管理」控制台並瀏覽各種角色
- 前往導覽選單 (
),依序點選「IAM 與管理」>「身分與存取權管理」。
- 點選「授予存取權」,在下拉式選單查看角色。
瀏覽「角色」選單,查看與各種資源聯結的不同角色。
- 點選「取消」。
- 切換至 Username 2 的 Cloud 控制台分頁。
- 前往導覽選單 (
),依序點選「IAM 與管理」>「身分與存取權管理」。瀏覽清單中的資料行,尋找與 Qwiklabs「連線詳細資料」對話方塊中 Username 1 和 Username 2 相關聯的名稱。
注意:Username 2 目前有專案的存取權,但不具有專案擁有者的角色,因此無法編輯任何角色。將游標移至 Username 2 的鉛筆圖示上方即可確認。
- 切換回 Username 1 Cloud 控制台分頁。
- 在「身分與存取權管理」控制台,點選 Username 2 的鉛筆圖示。Username 2 目前具有「檢視者」角色。請勿變更專案角色。
- 點選「取消」。
工作 3:準備好用來測試存取權的資源
建立 bucket 並上傳範例檔案
-
如果您目前並非位於 Username 1 的 Cloud 控制台分頁,請現在切換。
-
前往導覽選單 (
),依序點選「Cloud Storage」>「bucket」。
-
點選「建立 bucket」。
-
指定下列屬性,其餘設定請保持預設狀態:
屬性 |
值 (依指示輸入值或選取選項) |
名稱 |
輸入全域不重複的名稱 |
位置類型 |
多區域 |
注意:請記下 bucket 名稱供後續步驟使用,後續步驟將以 [YOUR_BUCKET_NAME] 代表此名稱
- 點選「建立」。
注意:如果出現「系統會禁止公開存取」提示訊息,且「強制禁止公開存取這個 bucket」選項已勾選,請點選「確認」。
- 點選「上傳檔案」。
- 從本機電腦上傳任何範例檔案。
- 上傳檔案後,找到含有檔案的資料行,點選行末的三點圖示,然後按一下「重新命名」。
- 將檔案重新命名為 sample.txt,再點選「重新命名」。
點選「Check my progress」來確認目標已達成。
建立 bucket 並上傳範例檔案
驗證專案檢視者權限
-
切換至 Username 2 的 Cloud 控制台分頁。
-
依序前往控制台的導覽選單 >「Cloud Storage」>「bucket」。
-
確認 Username 2 可以看見 bucket。
工作 4:移除專案存取權
移除 Username 2 的專案檢視者角色
- 切換到 Username 1 的 Cloud 控制台分頁。
- 前往導覽選單 (
),依序點選「IAM 與管理」>「身分與存取權管理」。
- 選取「Username 2」,然後點選「移除存取權」。
注意:請確認您移除的是 Username 2 的存取權,如果您不小心移除了 Username 1 的存取權,須重新執行本實驗室的步驟!
- 點選「確認」來確認操作。
此時您會發現,該使用者已從清單中消失,沒有存取權了。
點選「Check my progress」來確認目標已達成。
移除專案存取權
確認 Username 2 已沒有存取權
-
切換至 Username 2 的 Cloud 控制台分頁。
-
前往導覽選單 (
),依序點選「Cloud 總覽」>「資訊主頁」。
-
前往導覽選單 (
),依序點選「Cloud Storage」>「bucket」。
系統會顯示錯誤訊息。如果沒有,請重新整理頁面。Username 2 仍是 Google Cloud 帳戶,但無法存取專案。
工作 5:新增儲存空間存取權
新增儲存空間權限
- 從 Qwiklabs「連線詳細資料」對話方塊複製 Username 2 的值。
- 切換到 Username 1 的 Cloud 控制台分頁。
- 前往導覽選單 (
),依序點選「IAM 與管理」>「身分與存取權管理」。
- 點選「授予存取權」來新增使用者。
-
將您從 Qwiklabs「連線詳細資料」對話方塊複製的 Username 2 值貼到「新增主體」。
- 在「請選擇角色」選單中,依序選取「Cloud Storage」>「Storage 物件檢視者」。
- 點選「儲存」。
點選「Check my progress」來確認目標已達成。
新增儲存空間權限
確認 Username 2 具備儲存空間存取權
- 切換至 Username 2 的 Cloud 控制台分頁。
注意:Username 2 不具有專案檢視者角色,無法在控制台查看專案或任何專案資源,但有 Cloud Storage 的存取權。
- 點選「啟用 Cloud Shell」(
) 來開啟 Cloud Shell。如果出現提示訊息,請按一下「繼續」。
- 執行下列指令,查看先前建立的 bucket 內容,其中
[YOUR_BUCKET_NAME]
應換成您建立的不重複 Cloud Storage bucket 名稱:
gcloud storage ls gs://[YOUR_BUCKET_NAME]
您應該會看到 Username 2 具備有限的 Cloud Storage 存取權。
- 關閉 Username 2 的 Cloud 控制台分頁。
實驗室接下來的操作會在 Username 1 的 Cloud 控制台分頁執行。
- 切換到 Username 1 的 Cloud 控制台分頁。
工作 6:設定服務帳戶使用者
在實驗室的這個部分,您會指派限縮的權限給服務帳戶,並瞭解如何運用服務帳戶使用者角色。
建立服務帳戶
- 前往導覽選單 (
),依序點選「IAM 與管理」>「服務帳戶」。
- 點選「+ 建立服務帳戶」。
- 將「服務帳戶名稱」設為 read-bucket-objects。
- 點選「建立並繼續」。
- 在「請選擇角色」選單中,依序選取「Cloud Storage」>「Storage 物件檢視者」。
- 點選「繼續」。
- 點選「完成」。
新增使用者至服務帳戶
- 選取「read-bucket-objects」服務帳戶。
- 點選服務帳戶名稱右側的三點圖示,然後點選「管理權限」。
注意:您會將服務帳戶使用者角色授予使用者,使用者只要能存取 VM,就能在 VM 上使用服務帳戶。您可以針對特定使用者、群組或網域執行這項操作。在這項訓練中,您會將服務帳戶使用者角色授予 Altostrat.com 公司中的所有人。Altostrat.com 是供示範和訓練用的虛構公司。
- 點選「授予存取權」按鈕。指定下列屬性,其餘設定請保持預設狀態:
屬性 |
值 (依指示輸入值或選取選項) |
新增主體 |
altostrat.com |
角色 |
「服務帳戶」>「服務帳戶使用者」 |
- 點選「儲存」。
授予 Compute Engine 存取權
您現在可以為 Altostrat 整個機構授予 Compute Engine 管理員角色。
- 前往導覽選單 (
),依序點選「IAM 與管理」>「身分與存取權管理」。
- 點選「授予存取權」。
- 指定下列屬性,其餘設定請保持預設狀態:
屬性 |
值 (依指示輸入值或選取選項) |
新增主體 |
altostrat.com |
請選擇角色 |
「Compute Engine」>「Compute 執行個體管理員 (v1)」 |
- 點選「儲存」。
注意:這個步驟用於演練對特定使用者的操作。
這項操作讓使用者具備有限的 VM 執行個體存取權。使用者將能透過 SSH 連線至 VM,並執行一些管理工作。
建立 VM 及服務帳戶使用者
- 前往導覽選單 (
),依序點選「Compute Engine」>「VM 執行個體」。
- 點選「建立執行個體」。
- 指定下列屬性,其餘設定請保持預設狀態:
屬性 |
值 (依指示輸入值或選取選項) |
名稱 |
demoiam |
區域 |
|
可用區 |
|
系列 |
E2 |
機型 |
e2-micro (2 個 vCPU,1 GB 記憶體) |
開機磁碟 |
Debian GNU/Linux 11 (bullseye) |
服務帳戶 |
read-bucket-objects |
存取權範圍 |
對各個 API 設定存取權 |
儲存空間 |
讀寫 |
- 點選「建立」。
點選「Check my progress」來確認目標已達成。
設定服務帳戶使用者並建立 VM
工作 7:瞭解服務帳戶使用者角色
現階段您可以讓使用者透過 SSH 連線至 VM,並執行接下來的操作來測試存取權。身為專案擁有者,您已具備服務帳戶使用者角色,因此您只要從 Cloud 控制台使用 SSH 存取 VM,即可模擬使用者的體驗。
您執行的操作和結果會和目標使用者相同。
運用服務帳戶使用者
- 在「demoiam」部分,點選「SSH」來啟動終端機並連線。
- 執行下列指令:
gcloud compute instances list
結果 (輸出內容範例):
ERROR: (gcloud.compute.instances.list) Some requests did not succeed:
- Required 'compute.zones.list' permission for 'projects/qwiklabs-gcp'
發生什麼事?為什麼?
- 從您先前建立的 bucket 複製 sample.txt 檔案。請注意以下結尾的句點是指令的一部分,意思是要複製到「目前位置」:
gcloud storage cp gs://[YOUR_BUCKET_NAME]/sample.txt .
結果 (輸出內容範例):
Copying gs://train-test-iam/sample.txt...
/ [1 files][ 28.0 B/ 28.0 B]
Operation completed over 1 objects/28.0 B.
- 如要重新命名您複製的檔案,請執行下列指令:
mv sample.txt sample2.txt
- 如要將重新命名的檔案複製回 bucket,請執行下列指令:
gcloud storage cp sample2.txt gs://[YOUR_BUCKET_NAME]
結果 (輸出內容範例):
AccessDeniedException: 403 Caller does not have storage.objects.create access to bucket train-test-iam.
注意:發生什麼狀況?
由於您透過 SSH 連線至執行個體,基本上就是以服務帳戶的身分執行操作,具備該帳戶擁有的權限。
啟動執行個體的服務帳戶具有 Storage 檢視者角色,這個角色允許從專案的 GCS bucket 下載物件。
如要列出專案中的執行個體,您必須授予 compute.instance.list 權限,而服務帳戶沒有這項權限,因此您無法列出專案中執行的執行個體。
服務帳戶「具備」下載物件的權限,因此可以從 bucket 下載物件,但由於沒有寫入物件的權限,所以您會收到 403 access denied 訊息。
- 前往導覽選單 (
),依序點選「IAM 與管理」>「身分與存取權管理」。
- 尋找清單中的 read-bucket-objects 資料行,然後點選鉛筆圖示。read-bucket-objects 目前具備「Storage 物件檢視者」角色。變更「角色」,依序點選「Cloud Storage」>「Storage 物件建立者」。
- 點選「儲存」。
- 返回 demoiam 的 SSH 視窗。
- 如要將重新命名的檔案複製回 bucket,請執行下列指令:
gcloud storage cp sample2.txt gs://[YOUR_BUCKET_NAME]
服務帳戶具備正確的權限,因此這次指令會成功執行。
工作 8:回顧
在這個實驗室中,您練習了如何授予及撤銷 IAM 角色,先是針對使用者 Username 2,接著是服務帳戶使用者。您可以分配服務帳戶使用者憑證,並在 VM 中納入憑證,藉以建立有特定用途的授權堡壘主機。
摘要
在 Azure 和 Google Cloud 中,IAM 都是用來安全控管各服務和資源存取權的 Web 服務。您可以運用這項工具管理驗證 (誰有存取權?) 和授權 (他們可以做什麼?) 作業。
您也可以建立及管理不同的主體,例如以下這些項目:
Google Cloud IAM 和 Azure AD 的運作方式有許多相似之處。這兩個系統都提供角色式存取控管、多重驗證和使用者管理等多項功能,能讓您輕鬆保護雲端基礎架構。您還可在這兩個系統中,透過精細的政策委派管理工作及控管資源存取權。
不過,這兩者之間也有一些差異。Google Cloud IAM 採用符合直覺且簡單明瞭的使用者介面,Azure AD 則使用不同的功能,如條件式存取,以及與其他應用程式整合的單一登入功能。
關閉研究室
如果您已完成研究室,請按一下「End Lab」(關閉研究室)。Google Cloud Skills Boost 會移除您使用的資源,並清除所用帳戶。
您可以針對研究室的使用體驗評分。請選取合適的星級評等並提供意見,然後按一下「Submit」(提交)。
星級評等代表您的滿意程度:
- 1 星 = 非常不滿意
- 2 星 = 不滿意
- 3 星 = 普通
- 4 星 = 滿意
- 5 星 = 非常滿意
如果不想提供意見回饋,您可以直接關閉對話方塊。
如有任何想法、建議或指教,請透過「Support」(支援) 分頁提交。
Copyright 2022 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。