本頁面說明如何在 Google Distributed Cloud (GDC) 實體隔離方案中,建立及管理自訂角色。自訂角色可讓您管理預先定義的角色中標準權限集以外的存取權,讓您根據特定條件設定權限。
自訂角色遵循最小權限原則,可授予執行機密工作所需的最低存取權,降低安全風險並避免利益衝突。
建立自訂角色後,您可以:
- 定義存取權範圍:選擇在整個組織、所有專案中套用權限,或僅限於特定專案。
- 自訂精細存取權:選取一或多個預先定義的角色已具備的權限,自訂特定工作或職責的存取權。
自訂角色會受限於建立時的範圍。自訂角色的存取權只能在建立自訂角色的相同組織或專案中授予。
本頁面適用於平台管理員群組中的對象,例如 IT 管理員或資安工程師,他們希望安全地管理組織資源的存取權。詳情請參閱「GDC 實體隔離方案說明文件的目標對象」。
如要進一步瞭解角色,請參閱「預先定義的角色說明」和「角色定義」。
事前準備
建立或管理自訂角色前,您必須要求必要權限並準備環境。
要求 IAM 組織角色
如要在機構或專案中建立、更新及刪除自訂角色,請與 IAM 機構組織管理員聯絡,要求取得自訂角色機構管理員 (custom-role-org-admin) 角色。
進一步瞭解如何指派機構的角色權限。
要求 IAM 專案角色
如要在特定專案中建立、更新及刪除自訂角色,請與 IAM 專案管理員聯絡,要求取得自訂角色專案管理員 (custom-role-project-admin) 角色。
進一步瞭解如何指派專案的角色權限。
準備環境
如要使用指令列工具建立或管理自訂角色,請完成下列設定:
如要搭配
kubectl使用 API,請完成下列額外設定:- 安裝 kubectl CLI。
- 產生全域 API 伺服器的 kubeconfig 檔案,設定
kubectl存取權。
查看角色及其權限
自訂角色是由一組可指派給使用者的權限組成。如要建立自訂角色,請從現有的預先定義角色中選取權限,並依需求組合。自訂角色可包含的權限,取決於您建立角色的範圍:組織或專案。
本節說明如何列出可用的角色 (包括預先定義和自訂角色),以及查看角色中的權限。您可以運用這項資訊執行下列操作:
- 找出新自訂角色的權限:瞭解使用 gdcloud CLI 建立自訂角色時,
--permissions旗標所需的特定權限字串。 - 查看現有角色:檢查所選範圍 (組織或專案) 內,與任何預先定義或自訂角色相關聯的權限。
使用 GDC 控制台或 gdcloud CLI 列出角色並檢查其權限:
控制台
- 登入 GDC 控制台。
- 在專案選取器中,選取要查看角色的組織或專案。
在導覽選單中,依序點選「Identity & Access」>「Roles」。
畫面會顯示可用的預先定義和自訂角色清單。
按一下角色名稱,即可查看詳細資料,包括指派的權限。
在目前範圍 (組織或專案) 中,預先定義的角色列出的權限,可納入新的自訂角色。
gdcloud
- 確認已安裝 gdcloud CLI。詳情請參閱「gdcloud CLI 總覽」頁面。
列出可用角色:
gdcloud iam roles list \ --type=ROLE_TYPE \ --project=PROJECT更改下列內容:
ROLE_TYPE:要列出的角色類型。有效值為predefined、custom或all。PROJECT:要查看角色的專案命名空間。如果是組織範圍的角色,請省略--project旗標。
查看角色中的特定權限:
gdcloud iam roles describe ROLE_NAME \ --project=PROJECT更改下列內容:
ROLE_NAME:角色的 Kubernetes 資源名稱PROJECT:要查看角色權限的專案命名空間。如果是組織範圍的角色,請省略--project旗標。
如要進一步瞭解指令和使用範例,請參閱 gdcloud iam roles list 和 gdcloud iam roles describe。
建立自訂角色
將預先定義角色的權限分組,建立新的自訂角色。自訂角色會繼承預先定義角色的 IAM 多可用區功能。建立自訂角色後,您可以授予使用者存取權。
使用 GDC 控制台、gdcloud CLI 或 API 建立自訂角色:
控制台
- 登入 GDC 控制台。
- 在專案選取器中,選取要建立自訂角色的組織或專案。
- 在導覽選單中,依序點選「Identity & Access」>「Roles」。
- 按一下「建立自訂角色」。
- 在「Title」(標題) 欄位中,輸入自訂角色的標題。
- 在「Description」(說明) 欄位中,說明自訂角色的用途。
在「ID」欄位中,輸入自訂角色的專屬 ID。
自訂角色 ID 最多可包含 10 個小寫英數字元,且在建立角色後即無法變更。
選取「Launch stage」(推出階段)。
選取自訂角色的範圍。
如果選取「Organization」(組織),自訂角色會套用至整個組織的所有資源。如果選取「Projects」(專案),自訂角色會套用至組織中所有現有和未來的專案。如要指定哪些專案可以存取自訂角色,請選取「Limit to selected projects」(僅限所選專案)。
按一下 [Add Permissions] (新增權限)。
找出要指派給自訂角色的一或多項支援權限,然後勾選旁邊的核取方塊。
可用的權限僅限於所選範圍。如果在新增權限後變更範圍,必須確認所有先前指派的權限都會重設。
按一下 [儲存]。
按一下 [Create]。
新的自訂角色會顯示在「Roles」(角色) 頁面。
gdcloud
- 確認已安裝 gdcloud CLI。詳情請參閱「gdcloud CLI 總覽」頁面。
建立自訂角色:
gdcloud iam roles create ROLE_ID \ --title=TITLE \ --description=DESCRIPTION \ --permissions=PERMISSIONS --stage=LAUNCH_STAGE更改下列內容:
ROLE_ID:自訂角色的專屬 ID。自訂角色 ID 最多可包含 10 個小寫英數字元,且可包含連字號。角色建立後,自訂角色 ID 即無法變更。TITLE:自訂角色的簡單易懂名稱DESCRIPTION:自訂角色的用途說明PERMISSIONS:以半形逗號分隔的清單,列出要授予自訂角色的權限如要進一步瞭解如何找出正確的權限字串,請參閱「查看角色及其權限」。每個權限字串都必須按照 gdcloud iam roles create 中的指引設定格式,其中
iamRoleName是包含權限的預先定義的角色 Kubernetes 資源名稱。如要查看角色的 Kubernetes 資源名稱,請前往「Role definitions」(角色定義) 頁面,或使用 gdcloud iam roles list 指令。LAUNCH_STAGE:選用。自訂角色的推出階段。有效值為ALPHA、BETA、GA或DISABLED。如果省略這個旗標,則預設為ALPHA。
如需必要和選用旗標的完整清單,以及使用範例,請參閱 gdcloud iam roles create。
或者,您也可以在 YAML 檔案中定義自訂角色,並使用
--file旗標:gdcloud iam roles create ROLE_ID --file=YAML_FILE_PATH將
YAML_FILE_PATH替換為 YAML 檔案的路徑,該檔案包含必要和選用旗標。如果使用--file旗標,系統會忽略所有其他旗標,例如--title、--description和--permissions。
API
使用 kubectl 建立並套用 CustomRole 自訂資源:
kubectl apply -f - <<EOF
apiVersion: iam.global.gdc.goog/v1
kind: CustomRole
metadata:
name: ROLE_NAME
namespace: NAMESPACE
spec:
metadata:
description: DESCRIPTION
id: ROLE_ID
scope: SCOPE
stage: LAUNCH_STAGE
title: TITLE
RULES_TYPE:
- RULES_LIST
EOF
更改下列內容:
ROLE_NAME:角色的 Kubernetes 資源名稱NAMESPACE:自訂角色的命名空間。請使用platform建立組織範圍的角色和多項專案。如果是專案範圍角色和單一專案,請使用專案命名空間 (例如my-project)。DESCRIPTION:自訂角色的用途說明ROLE_ID:自訂角色的專屬 ID。自訂角色 ID 最多可包含 10 個小寫英數字元,且可包含連字號。自訂角色 ID 在角色建立後即無法變更。SCOPE:針對在platform命名空間中建立的角色,請使用organization。如要使用在專案命名空間中建立的角色,請使用project。LAUNCH_STAGE:選用。自訂角色的推出階段。有效值為ALPHA、BETA、GA或DISABLED。如果省略這個欄位,預設值為ALPHA。TITLE:自訂角色的簡單易懂名稱RULES_TYPE:規則的範圍。請替換為globalRules(全域 API 權限)、zonalRules(可用區 API 權限),或兩者皆替換。RULES_LIST:標準 Kubernetes RBAC 規則物件的縮排清單。清單中的每個物件都會授予權限。您可以使用gdcloud iam roles describe檢查預先定義角色中的權限,判斷正確的apiGroups、resources和verbs,如「查看角色及其權限」所示。以下範例顯示
globalRules物件中單一項目的結構:globalRules: - apiGroups: ["storage.global.gdc.goog"] resources: ["buckettypes"] verbs: ["get", "list", "watch"]您可以在清單中加入多個項目,每個項目定義一組不同的權限。
管理自訂角色
您必須負責管理自訂角色的生命週期。Distributed Cloud 新增權限、功能或服務時,會更新預先定義的角色。如果刪除預先定義的角色,或移除預先定義角色的權限,可能會導致依賴這些權限的自訂角色無法運作。您必須監控這些更新,並手動調整受影響的自訂角色,確保這些角色能繼續正常運作。
您可以編輯、停用或刪除自訂角色,但無法編輯、停用或刪除預先定義的角色。如要查看所有角色及其特定權限的清單,請參閱「查看角色及其權限」。
編輯自訂角色
使用 GDC 控制台、gdcloud CLI 或 API 編輯自訂角色:
控制台
- 登入 GDC 控制台。
- 在專案選取器中,選取要編輯自訂角色的組織或專案。
- 在導覽選單中,依序點選「Identity & Access」>「Roles」。
- 從角色清單中,選取要編輯的自訂角色。
- 在自訂角色詳細資料頁面,按一下「Edit」(編輯)。
- 編輯自訂角色詳細資料,例如標題、說明、ID 或推出階段。
- 視需要新增或移除指派的權限。
- 按一下「Add permissions」(新增權限),從可用權限清單中選取。
- 如要移除已指派的權限,請勾選要移除的權限旁的核取方塊,然後按一下「Remove」(移除)。
按一下 [儲存]。
系統會顯示訊息,確認已儲存變更。
gdcloud
- 確認已安裝 gdcloud CLI。詳情請參閱「gdcloud CLI 總覽」頁面。
編輯自訂角色:
gdcloud iam roles update ROLE_ID \ --title=TITLE \ --description=DESCRIPTION \ --permissions=PERMISSIONS --stage=LAUNCH_STAGE更改下列內容:
ROLE_ID:自訂角色的專屬 IDTITLE:自訂角色的簡單易懂名稱DESCRIPTION:自訂角色的用途說明PERMISSIONS:以半形逗號分隔的清單,列出要授予自訂角色的權限如要進一步瞭解如何找出正確的權限字串,請參閱「查看角色及其權限」。每個權限字串都必須按照 gdcloud iam roles create 中的指引設定格式,其中
iamRoleName是包含權限的預先定義的角色 Kubernetes 資源名稱。如要查看角色的 Kubernetes 資源名稱,請前往「Role definitions」(角色定義) 頁面,或使用 gdcloud iam roles list 指令。LAUNCH_STAGE:選用。自訂角色的推出階段。有效值為ALPHA、BETA、GA或DISABLED。如果省略這個旗標,則預設為ALPHA。
如需必要和選用旗標的完整清單,以及使用範例,請參閱「gdcloud iam roles update」。
或者,您也可以在 YAML 檔案中更新自訂角色,並使用
--file旗標:gdcloud iam roles update ROLE_ID --file=YAML_FILE_PATH將
YAML_FILE_PATH替換為 YAML 檔案的路徑,該檔案包含更新後的必要和選用旗標。如果使用--file旗標,系統會忽略所有其他旗標,例如--title、--description和--permissions。
API
使用 kubectl 編輯 CustomRole 自訂資源:
kubectl apply -f - <<EOF
apiVersion: iam.global.gdc.goog/v1
kind: CustomRole
metadata:
name: ROLE_NAME
namespace: NAMESPACE
spec:
metadata:
description: DESCRIPTION
id: ROLE_ID
scope: SCOPE
stage: LAUNCH_STAGE
title: TITLE
RULES_TYPE:
- RULES_LIST
EOF
更改下列內容:
ROLE_NAME:角色的 Kubernetes 資源名稱NAMESPACE:自訂角色的命名空間。請使用platform建立組織範圍的角色和多項專案。如果是專案範圍角色和單一專案,請使用專案命名空間 (例如my-project)。DESCRIPTION:自訂角色的用途說明ROLE_ID:自訂角色的專屬 ID。自訂角色 ID 最多可包含 10 個小寫英數字元,且可包含連字號。自訂角色 ID 在角色建立後即無法變更。SCOPE:針對在platform命名空間中建立的角色,請使用organization。如要使用在專案命名空間中建立的角色,請使用project。LAUNCH_STAGE:選用。自訂角色的推出階段。有效值為ALPHA、BETA、GA或DISABLED。如果省略這個欄位,預設值為ALPHA。TITLE:自訂角色的簡單易懂名稱RULES_TYPE:規則的範圍。請替換為globalRules(全域 API 權限)、zonalRules(可用區 API 權限),或兩者皆替換。RULES_LIST:標準 Kubernetes RBAC 規則物件的縮排清單。清單中的每個物件都會授予權限。您可以使用gdcloud iam roles describe檢查預先定義角色中的權限,判斷正確的apiGroups、resources和verbs,如「查看角色及其權限」所示。以下範例顯示
globalRules物件中單一項目的結構:globalRules: - apiGroups: ["storage.global.gdc.goog"] resources: ["buckettypes"] verbs: ["get", "list", "watch"]您可以在清單中加入多個項目,每個項目定義一組不同的權限。
停用自訂角色
停用的自訂角色仍會保留在角色清單中,且仍可指派給使用者,但不會生效。您隨時可以重新啟用自訂角色。
使用 GDC 控制台、gdcloud CLI 或 API 停用自訂角色:
控制台
- 登入 GDC 控制台。
- 在專案選取器中,選取要停用自訂角色的組織或專案。
- 在導覽選單中,依序點選「Identity & Access」>「Roles」。
- 在角色清單中,選取要停用的自訂角色。
- 在自訂角色詳細資料頁面,按一下「停用」。
gdcloud
- 確認已安裝 gdcloud CLI。詳情請參閱「gdcloud CLI 總覽」頁面。
停用自訂角色:
gdcloud iam roles update ROLE_ID --stage=DISABLED更改下列內容:
ROLE_ID:自訂角色的專屬 ID
詳情請參閱「gdcloud iam roles update」。
API
將 stage 欄位變更為 DISABLED,即可停用 CustomRole 自訂資源。確認所有其他欄位都與要停用的自訂角色目前值相符。
kubectl apply -f - <<EOF
apiVersion: iam.global.gdc.goog/v1
kind: CustomRole
metadata:
name: ROLE_NAME
namespace: NAMESPACE
spec:
metadata:
description: DESCRIPTION
id: ROLE_ID
scope: SCOPE
stage: DISABLED
title: TITLE
RULES_TYPE:
- RULES_LIST
EOF
更改下列內容:
ROLE_NAME:角色的 Kubernetes 資源名稱NAMESPACE:自訂角色的命名空間。請使用platform建立組織範圍的角色和多項專案。如果是專案範圍角色和單一專案,請使用專案命名空間 (例如my-project)。DESCRIPTION:自訂角色的用途說明ROLE_ID:自訂角色的專屬 ID。自訂角色 ID 最多可包含 10 個小寫英數字元,且可包含連字號。自訂角色 ID 在角色建立後即無法變更。SCOPE:針對在platform命名空間中建立的角色,請使用organization。如要使用在專案命名空間中建立的角色,請使用project。TITLE:自訂角色的簡單易懂名稱RULES_TYPE:規則的範圍。請替換為globalRules(全域 API 權限)、zonalRules(可用區 API 權限),或兩者皆替換。RULES_LIST:標準 Kubernetes RBAC 規則物件的縮排清單。清單中的每個物件都會授予權限。您可以使用gdcloud iam roles describe檢查預先定義角色中的權限,判斷正確的apiGroups、resources和verbs,如「查看角色及其權限」所示。以下範例顯示
globalRules物件中單一項目的結構:globalRules: - apiGroups: ["storage.global.gdc.goog"] resources: ["buckettypes"] verbs: ["get", "list", "watch"]您可以在清單中加入多個項目,每個項目定義一組不同的權限。
刪除自訂角色
刪除的角色會從系統中永久移除,但您可以建立同名的新角色。
使用 gdcloud CLI 或 API 刪除自訂角色:
gdcloud
- 確認已安裝 gdcloud CLI。詳情請參閱「gdcloud CLI 總覽」頁面。
刪除自訂角色:
gdcloud iam roles delete ROLE_ID --project=PROJECT更改下列內容:
ROLE_ID:自訂角色的專屬 IDPROJECT:要刪除自訂角色的專案命名空間。如未指定--project旗標,系統會刪除組織範圍的角色。
如需更多資訊和使用範例,請參閱 gdcloud iam roles delete。
API
使用 kubectl 刪除 CustomRole 自訂資源:
kubectl delete -f CUSTOM_ROLE
將 CUSTOM_ROLE 替換為 CustomRole YAML 檔案的路徑。這個檔案與您用來建立或更新角色的檔案相同。