本頁說明如何在 Google Distributed Cloud (GDC) 氣隙環境中建立及管理自訂角色。自訂角色可讓您管理存取權,不受預先定義角色提供的標準權限集限制,並根據特定條件設定權限。
自訂角色遵循最低權限原則,可授予執行敏感工作所需的最低存取權,有助於降低安全風險及避免利益衝突。
建立自訂角色可讓您:
- 定義存取權範圍:選擇在整個機構或所有專案中套用權限,或將權限限制在特定專案。
- 量身打造精細的存取權:選取預先定義角色中已提供的一或多項權限,自訂特定工作或職責的存取權。
本頁面適用於平台管理員群組的對象,例如 IT 管理員或安全工程師,他們希望安全地管理機構資源的存取權。詳情請參閱 GDC air-gapped 的目標對象說明文件。
如要進一步瞭解角色,請參閱「預先定義的角色說明」和「角色定義」。
事前準備
自訂角色存取權是在機構和專案層級管理。只能在建立自訂角色的相同機構或專案中授予存取權。
如要取得建立及管理自訂角色所需的權限,請要求管理員授予下列其中一個角色:
自訂角色機構管理員:在機構或專案中建立及管理自訂角色。這個角色可以更新、列出、查看、停用及刪除自訂角色。
機構 IAM 管理員使用者可以授予這個角色。
自訂角色專案管理員:在專案中建立及管理自訂角色。這個角色可以更新、列出、查看、停用及刪除自訂角色。
專案 IAM 管理員使用者可以授予這個角色。
查看角色和權限
自訂角色是由一組權限組成,您可以將這些權限指派給使用者。 如要建立自訂角色,請從現有的預先定義角色中選取權限,然後根據需求組合這些權限。您可以在自訂角色中加入的權限,取決於您建立角色的範圍:機構或專案。
本節說明如何列出可用的角色 (包括預先定義和自訂角色),以及如何查看角色內的權限。您可以利用這項資訊執行下列操作:
- 找出新自訂角色的權限:使用 gdcloud CLI 建立自訂角色時,找出
--permissions旗標所需的特定權限字串。 - 查看現有角色:檢查所選範圍 (機構或專案) 中,與任何預先定義或自訂角色相關聯的權限。
使用 GDC 控制台或 gdcloud CLI 列出角色並檢查其權限:
控制台
- 登入 GDC 控制台。
- 在專案選取器中,選取要查看角色的機構或專案。
在導覽選單中,依序點選「Identity & Access」>「Roles」。
畫面上會顯示可用的預先定義角色和自訂角色清單。
按一下角色名稱即可查看詳細資料,包括指派的權限。
目前範圍 (機構或專案) 預先定義角色所列的權限,可納入新的自訂角色。
gdcloud
- 確認已安裝 gdcloud CLI。詳情請參閱 gcloud CLI 總覽頁面。
列出可用的角色:
gdcloud iam roles list 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」(名稱) 欄位中,輸入自訂角色的名稱。
- 在「說明」欄位中,提供自訂角色的用途說明。
在「ID」欄位中,輸入自訂角色的專屬 ID。
自訂角色 ID 最多可包含 10 個小寫英數字元,且角色建立後即無法變更。
選取「發布階段」。
選取自訂角色的範圍。
如果選取「機構」,自訂角色會套用至整個機構的所有資源。如果選取「專案」,自訂角色會套用至機構中的所有現有和日後專案。如要指定哪些專案可以存取自訂角色,請選取「Limit to selected projects」(僅限所選專案)。
按一下 [Add Permissions] (新增權限)。
找出要指派給自訂角色的一或多個支援權限,然後勾選旁邊的核取方塊。
可用權限僅限於所選範圍。如果您在新增權限後變更範圍,請務必確認先前指派的所有權限都已重設。
按一下 [儲存]。
按一下 [Create]。
新的自訂角色會顯示在「角色」頁面中。
gdcloud
- 確認已安裝 gdcloud CLI。詳情請參閱 gcloud 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 資源名稱。您可以在「角色定義」頁面中,或使用 gdcloud iam roles list 指令,找到角色的 Kubernetes 資源名稱。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 中的權限)。您無法在同一個CustomRole資源中同時使用這兩者。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」。
- 從角色清單中選取要編輯的自訂角色。
- 在自訂角色詳細資料頁面中,按一下「編輯」。
- 編輯自訂角色詳細資料,例如名稱、說明、ID 或發布階段。
- 視需要新增或移除指派的權限。
- 按一下「新增權限」,從可用權限清單中選取。
- 如要移除已指派的權限,請勾選要移除的權限旁邊的核取方塊,然後按一下「移除」。
按一下 [儲存]。
系統會顯示訊息,確認已儲存變更。
gdcloud
- 確認已安裝 gdcloud CLI。詳情請參閱 gcloud CLI 總覽頁面。
編輯自訂角色:
gdcloud iam roles update ROLE_ID \ --title=TITLE \ --description=DESCRIPTION \ --permissions=PERMISSIONS --stage=LAUNCH_STAGE更改下列內容:
ROLE_ID:自訂角色的專屬 ID。TITLE:自訂角色的簡單易懂名稱。DESCRIPTION:自訂角色用途的說明。PERMISSIONS:以半形逗號分隔的權限清單,列出要授予自訂角色的權限。如要瞭解如何找出正確的權限字串,請參閱「查看角色及其權限」。每個權限字串都必須按照 gdcloud iam roles create 中的指引格式設定,其中
iamRoleName是包含權限的預先定義角色 Kubernetes 資源名稱。您可以在「角色定義」頁面中,或使用 gdcloud iam roles list 指令,找到角色的 Kubernetes 資源名稱。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 中的權限)。您無法在同一個CustomRole資源中同時使用這兩者。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。詳情請參閱 gcloud 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 中的權限)。您無法在同一個CustomRole資源中同時使用這兩者。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。詳情請參閱 gcloud CLI 總覽頁面。
刪除自訂角色:
gdcloud iam roles delete ROLE_ID --project=PROJECT更改下列內容:
ROLE_ID:自訂角色的專屬 ID。PROJECT:您要刪除自訂角色的專案命名空間。如未指定--project旗標,系統會刪除機構範圍的角色。
如需更多資訊和使用範例,請參閱 gdcloud iam roles delete。
API
使用 kubectl 刪除 CustomRole 自訂資源:
kubectl delete -f CUSTOM_ROLE
將 CUSTOM_ROLE 替換為 CustomRole YAML 檔案的路徑。這個檔案與您用來建立或更新角色的檔案相同。