检查点
Create a custom role using a YAML file
/ 20
Create a custom role using flags
/ 20
Update a custom role using a YAML file
/ 15
Update a custom role using flags
/ 15
Disabling a custom role
/ 15
Undeleting a custom role
/ 15
IAM 自訂角色
GSP190
總覽
Cloud IAM 可提供合適的資源權限管理工具,並具備簡潔和高度自動化的特性,您不會直接授予使用者權限,而是向他們授予繫結了一或多個權限的「角色」。這麼做可將公司內部的職務對應至相關的群組與角色。使用者只會取得完成工作所需的存取權,管理員也能輕鬆將預設權限授予整個使用者群組。
Cloud IAM 中有兩種角色:
- 預先定義角色
- 自訂角色
預先定義角色是由 Google 建立及維護。角色權限會視需要自動更新,例如 Google Cloud 加入新功能或服務時。
自訂角色是由使用者定義,可繫結一或多個支援的權限以滿足特定需求。自訂角色並非由 Google 維護,因此當 Google Cloud 加入新的權限、功能或服務時,自訂角色不會自動更新。將一或多個可用 Cloud IAM 權限結合,即可建立自訂角色。擁有權限的使用者才能對 Google Cloud 資源執行特定操作。
課程內容
在本實驗室中,您將建立、更新、刪除與還原自訂角色。
先備知識
如想獲得最佳學習成效,建議您熟悉 IAM 角色的概念。
設定和需求
點選「Start Lab」按鈕前的須知事項
請詳閱以下操作說明。研究室活動會計時,而且中途無法暫停。點選「Start Lab」 後就會開始計時,讓您瞭解有多少時間可以使用 Google Cloud 資源。
您將在真正的雲端環境中完成實作研究室活動,而不是在模擬或示範環境。為達此目的,我們會提供新的暫時憑證,讓您用來在研究室活動期間登入及存取 Google Cloud。
如要完成這個研究室活動,請先確認:
- 您可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
- 是時候完成研究室活動了!別忘了,活動一開始將無法暫停。
如何開始研究室及登入 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 控制台稍後會在這個分頁開啟。
啟動 Cloud Shell
Cloud Shell 是搭載多項開發工具的虛擬機器,提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作。Cloud Shell 提供指令列存取權,方便您使用 Google Cloud 資源。
- 點按 Google Cloud 控制台上方的「啟用 Cloud Shell」圖示 。
連線完成即代表已通過驗證,且專案已設為您的 PROJECT_ID。輸出內容中有一行宣告本工作階段 PROJECT_ID 的文字:
gcloud
是 Google Cloud 的指令列工具,已預先安裝於 Cloud Shell,並支援 Tab 鍵自動完成功能。
- (選用) 您可以執行下列指令來列出使用中的帳戶:
-
點按「授權」。
-
輸出畫面應如下所示:
輸出內容:
- (選用) 您可以使用下列指令來列出專案 ID:
輸出內容:
輸出內容範例:
gcloud
的完整說明,請前往 Google Cloud 並參閱「gcloud CLI overview guide」(gcloud CLI 總覽指南)。
設定專案區域
請執行以下指令來設定專案區域:
IAM 自訂角色簡介
Cloud IAM 也提供建立自訂 Cloud IAM 角色的功能。您可以建立具有一或多個權限的自訂 Cloud IAM 角色,然後將這個自訂角色授予使用者。Cloud IAM 還提供 UI 和 API,能用於建立及管理自訂角色。
重要事項:自訂角色可讓您實施最低權限原則,確保機構中的使用者與服務帳戶只具有執行預期職務所需的權限。
將一或多個可用 Cloud IAM 權限結合,即可建立自訂角色。擁有權限的使用者才能對 Google Cloud 資源執行特定操作。
在 Cloud IAM 的通行做法中,權限皆以下列格式表示:
例如:compute.instances.list
權限可讓使用者列出自己擁有的 Compute Engine 執行個體;而 compute.instances.stop
則能讓使用者停止 VM。
權限通常 (但並非絕對) 與 REST 方法有 1:1 的對應關係。也就是說,每個 Google Cloud 服務對於擁有的每個 REST 方法,都有關聯的權限。如要呼叫方法,呼叫者就需要有相關權限。例如:topic.publish()
的呼叫者需要 pubsub.topics.publish
權限。
自訂角色只可用於向相同專案或機構授予政策中的權限,這些專案或機構擁有自訂角色下層的角色或資源。您無法針對某個專案或機構擁有的資源,授予另一個專案或機構的自訂角色。
所需權限和角色
如要建立自訂角色,呼叫者必須擁有 iam.roles.create
權限。
使用者 (包括機構管理員) 如果不是擁有者,就必須指派為「機構角色管理員」角色 (roles/iam.organizationRoleAdmin) 或「IAM 角色管理員」角色 (roles/iam.roleAdmin)。「IAM 安全性審查者」角色 (roles/iam.securityReviewer) 提供了查看自訂角色的功能,但不含管理功能。
自訂角色的使用者介面位於 Cloud 控制台的「IAM 角色」下方。這個介面只提供給具有建立或管理自訂角色權限的使用者。根據預設,只有專案擁有者可建立新的角色。專案擁有者可以透過為相同專案中的其他使用者授予「IAM 角色管理員」角色,來控制這項功能的存取權。而對機構而言,只有機構管理員能授予「機構角色管理員」角色。
準備建立自訂角色
建立自訂角色前,您可能會想瞭解以下內容:
- 哪些權限可套用至資源
- 可對資源授予哪些角色
- 角色的中繼資料是什麼
工作 1:檢視資源的可用權限
建立自訂角色前,您可能會想知道哪些權限可套用至資源。您可以透過 gcloud 指令列工具、Cloud 控制台或 IAM API,取得可套用到資源及階層下方資源的所有權限。例如,您能夠取得可套用在機構和機構內專案的所有權限。
- 執行下列指令,取得專案可用權限的清單:
輸出內容:
工作 2:取得角色中繼資料
在建立自訂角色前,建議您取得預先定義角色和自訂角色的中繼資料。角色中繼資料包括角色 ID 和角色擁有的權限。您可以使用 Cloud 控制台或 IAM API 查看中繼資料。
- 如要查看角色中繼資料,請使用下列指令,將
[ROLE_NAME]
替換為要查看的角色,例如roles/viewer
或roles/editor
:
輸出內容範例 (roles/viewer):
工作 3:查看可針對資源授予的角色
您可以使用 gcloud iam list-grantable-roles
指令,傳回可套用到特定資源的所有角色清單。
- 請執行下列
gcloud
指令,從專案列出可授予的角色:
輸出內容應如下所示:
工作 4:建立自訂角色
如要建立自訂角色,呼叫者必須擁有 iam.roles.create
權限。根據預設,專案或機構的擁有者具備這個權限,並且能建立和管理自訂角色。
使用者 (包括機構管理員) 如果不是擁有者,就必須指派為機構角色管理員角色,或 IAM 角色管理員角色。
請使用 gcloud iam roles create
指令建立新的自訂角色,方法有兩種:
- 提供包含角色定義的 YAML 檔案
- 使用標記指定角色定義
建立自訂角色時,您必須使用 --organization [ORGANIZATION_ID]
或 --project [PROJECT_ID]
標記,指定角色應用於機構層級或專案層級。下列各個範例是在專案層級中建立自訂角色。
在接下來的幾節中,您要在專案層級建立自訂角色。
使用 YAML 檔案建立自訂角色
您可以建立包含自訂角色定義的 YAML 檔案,這個檔案必須按照以下方式建構:
各個預留位置值如下所述:
-
[ROLE-TITLE]
是角色的好記名稱,例如 Role Viewer。 -
[ROLE_DESCRIPTION]
是角色的相關簡短說明,例如 My custom role description。 -
[LAUNCH_STAGE]
表示角色在推出生命週期中的階段,例如 ALPHA、BETA 或 GA。 -
includedPermissions
指定要加入自訂角色中的一或多個權限的清單,例如 iam.roles.get。
- 讓我們開始吧!請執行下列指令,建立角色定義 YAML 檔案:
- 在 YAML 檔案中加入這個自訂角色定義:
-
接著依序按下 CTRL+X 鍵、Y 鍵和 ENTER 鍵,儲存並關閉檔案。
-
請執行以下
gcloud
指令:
如果角色建立成功,系統會傳回以下回應:
點選「Check my progress」,確認目標已達成。
使用標記建立自訂角色
接下來請使用旗標方法建立新的自訂角色。這些旗標的格式與 YAML 檔案類似,因此您可以輕鬆瞭解指令的建構方式。
- 執行下列
gcloud
指令,使用旗標建立新角色:
輸出內容範例:
點選「Check my progress」,確認目標已達成。
工作 5:列出自訂角色
- 如要列出自訂角色,請執行以下
gcloud
指令,並指定專案層級或機構層級的自訂角色:
輸出內容範例:
如要列出已刪除的角色,您也可以指定 --show-deleted
標記。
- 如要列出預先定義角色,則執行以下
gcloud
指令:
工作 6:更新現有自訂角色
這是更新資源中繼資料的常見模式,以自訂角色為例:首先讀取角色的目前狀態,在本機上更新資料,然後傳送已修改的資料以供寫入。如果有兩個以上的獨立程序同時嘗試相同順序,這個模式可能會產生衝突。
例如,如果專案有兩位擁有者同時嘗試對角色執行彼此衝突的變更,有些變更可能會失敗。
Cloud IAM 能透過在自訂角色中使用 etag
屬性來解決這個問題。這個屬性可用於確認自訂角色自上一次要求以來是否變更。當您使用 etag 值對 Cloud IAM 提出要求時,Cloud IAM 會比較要求中的 etag 值和與自訂角色相關聯的現有 etag 值。只有在兩個 etag 值彼此相符時,系統才會執行寫入變更。
您可以透過以下任一方法,使用 gcloud iam roles update
指令更新自訂角色。
- 內含已更新角色定義的 YAML 檔案
- 指定已更新角色定義的旗標
更新自訂角色時,您必須使用 --organization [ORGANIZATION_ID]
或 --project [PROJECT_ID]
標記,指定這個角色應用於機構層級或專案層級。下列各個範例是在專案層級中建立自訂角色。
describe
指令可傳回角色定義,並包含專門用於辨識角色目前版本的 etag 值。您必須在已更新角色定義中提供 etag 值,以確保並行角色變更並未遭到覆寫。
使用 YAML 檔案更新自訂角色
- 執行下列
gcloud
指令來取得角色目前的定義,並將[ROLE_ID]
替換為 editor。
describe
指令傳回以下輸出內容:
-
複製輸出內容,用於在接下來的步驟中建立新的 YAML 檔案。
-
使用編輯器建立
new-role-definition.yaml
檔案:
- 貼上前一個指令的輸出內容,然後在
includedPermissions
下方新增以下兩個權限:
完成後,YAML 檔案將如下所示:
-
接著依序按下 CTRL+X 鍵、Y 鍵和 ENTER 鍵,儲存並關閉檔案。
-
接著使用
update
指令來更新檔案。執行下列gcloud
指令,將[ROLE_ID]
替換為 editor:
如果角色更新成功,系統會傳回以下回應:
點選「Check my progress」,確認目標已達成。
使用標記更新自訂角色
您可以使用相應的標記,更新角色定義的各個部分。如需 SDK 參考文件中所有可用旗標的清單,請參閱 gcloud iam roles update 主題。
使用下列旗標新增或移除權限:
-
--add-permissions
:為角色新增一或多個以半形逗號分隔的權限。 -
--remove-permissions
:移除角色中一或多個以半形逗號分隔的權限。
或者,您可以透過 --permissions [PERMISSIONS]
標記指定新權限,並提供以半形逗號分隔的權限清單來取代現有的權限清單。
- 執行下列
gcloud
指令,使用標記將權限新增到 viewer 角色:
如果角色更新成功,系統會傳回以下回應:
點選「Check my progress」,確認目標已達成。
工作 7:停用自訂角色
角色停用後,與角色相關的所有政策繫結都會停用,這代表系統不會授予角色中的權限 (即使您將角色授予使用者)。
如要停用現有自訂角色,最簡單的方式就是使用 --stage
旗標,並將其設為 DISABLED。
- 執行下列
gcloud
指令,停用 viewer 角色:
如果角色更新成功,系統會傳回以下回應:
點選「Check my progress」,確認目標已達成。
工作 8:刪除自訂角色
- 您可以使用
gcloud iam roles delete
指令刪除自訂角色。刪除後,角色將處於未啟用狀態,且無法用來建立新的 IAM 政策繫結:
輸出內容範例:
系統刪除角色後,現有的繫結仍會存在,但處於停用狀態。角色可以在 7 天內取消刪除。7 天後,這個角色就會進入永久刪除程序,程序將持續進行 30 天。37 天後,角色 ID 即可再次使用。
工作 9:還原自訂角色
- 您可以在 7 天內還原角色。已刪除角色會處於「停用」狀態。如要還原角色,請更新
--stage
旗標:
點選「Check my progress」,確認目標已達成。
恭喜!
在這個實驗室,您建立並管理了 IAM 中的自訂角色。
後續步驟/瞭解詳情
如想進一步瞭解 IAM,請參閱「Cloud Identity and Access Management」。
Google Cloud 教育訓練與認證
協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。
使用手冊上次更新日期:2024 年 4 月 15 日
實驗室上次測試日期:2023 年 7 月 13 日
Copyright 2024 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。