建立自訂角色

本頁說明如何在 Google Distributed Cloud (GDC) 氣隙環境中建立及管理自訂角色。自訂角色可讓您管理存取權,不受預先定義角色提供的標準權限集限制,並根據特定條件設定權限。

自訂角色遵循最低權限原則,可授予執行敏感工作所需的最低存取權,有助於降低安全風險及避免利益衝突。

建立自訂角色可讓您:

  • 定義存取權範圍:選擇在整個機構或所有專案中套用權限,或將權限限制在特定專案。
  • 量身打造精細的存取權:選取預先定義角色中已提供的一或多項權限,自訂特定工作或職責的存取權。

本頁面適用於平台管理員群組的對象,例如 IT 管理員或安全工程師,他們希望安全地管理機構資源的存取權。詳情請參閱 GDC air-gapped 的目標對象說明文件

如要進一步瞭解角色,請參閱「預先定義的角色說明」和「角色定義」。

事前準備

自訂角色存取權是在機構和專案層級管理。只能在建立自訂角色的相同機構或專案中授予存取權。

如要取得建立及管理自訂角色所需的權限,請要求管理員授予下列其中一個角色:

  • 自訂角色機構管理員:在機構或專案中建立及管理自訂角色。這個角色可以更新、列出、查看、停用及刪除自訂角色。

    機構 IAM 管理員使用者可以授予這個角色。

  • 自訂角色專案管理員:在專案中建立及管理自訂角色。這個角色可以更新、列出、查看、停用及刪除自訂角色。

    專案 IAM 管理員使用者可以授予這個角色。

進一步瞭解如何為機構專案指派角色權限。

查看角色和權限

自訂角色是由一組權限組成,您可以將這些權限指派給使用者。 如要建立自訂角色,請從現有的預先定義角色中選取權限,然後根據需求組合這些權限。您可以在自訂角色中加入的權限,取決於您建立角色的範圍:機構或專案。

本節說明如何列出可用的角色 (包括預先定義和自訂角色),以及如何查看角色內的權限。您可以利用這項資訊執行下列操作:

  • 找出新自訂角色的權限:使用 gdcloud CLI 建立自訂角色時,找出 --permissions 旗標所需的特定權限字串。
  • 查看現有角色:檢查所選範圍 (機構或專案) 中,與任何預先定義或自訂角色相關聯的權限。

使用 GDC 控制台或 gdcloud CLI 列出角色並檢查其權限:

控制台

  1. 登入 GDC 控制台。
  2. 在專案選取器中,選取要查看角色的機構或專案。
  3. 在導覽選單中,依序點選「Identity & Access」>「Roles」

    畫面上會顯示可用的預先定義角色和自訂角色清單。

  4. 按一下角色名稱即可查看詳細資料,包括指派的權限。

    目前範圍 (機構或專案) 預先定義角色所列的權限,可納入新的自訂角色。

gdcloud

  1. 確認已安裝 gdcloud CLI。詳情請參閱 gcloud CLI 總覽頁面。
  2. 列出可用的角色:

    gdcloud iam roles list ROLE_TYPE \
      --project=PROJECT
    

    更改下列內容:

    • ROLE_TYPE:要列出的角色類型。有效值為 predefinedcustomall
    • PROJECT:您要查看角色的專案命名空間。如要使用機構範圍的角色,請省略 --project 標記。
  3. 查看角色中的特定權限:

    gdcloud iam roles describe ROLE_NAME \
      --project=PROJECT
    

    更改下列內容:

    • ROLE_NAME:角色的 Kubernetes 資源名稱。
    • PROJECT:您要查看角色權限的專案命名空間。如要使用機構範圍的角色,請省略 --project 標記。

如需更多指令詳細資料和使用範例,請參閱 gdcloud iam roles listgdcloud iam roles describe

建立自訂角色

將預先定義的角色權限分組,建立新的自訂角色。 自訂角色會沿用所建構預先定義角色的 IAM 多區域功能。建立自訂角色後,即可授予使用者存取權

使用 GDC 控制台、gdcloud CLI 或 API 建立自訂角色:

控制台

  1. 登入 GDC 控制台。
  2. 在專案選取器中,選取要建立自訂角色的機構或專案。
  3. 在導覽選單中,依序點選「Identity & Access」>「Roles」
  4. 按一下「建立自訂角色」
  5. 在「Title」(名稱) 欄位中,輸入自訂角色的名稱。
  6. 在「說明」欄位中,提供自訂角色的用途說明。
  7. 在「ID」欄位中,輸入自訂角色的專屬 ID。

    自訂角色 ID 最多可包含 10 個小寫英數字元,且角色建立後即無法變更。

  8. 選取「發布階段」

  9. 選取自訂角色的範圍。

    如果選取「機構」,自訂角色會套用至整個機構的所有資源。如果選取「專案」,自訂角色會套用至機構中的所有現有和日後專案。如要指定哪些專案可以存取自訂角色,請選取「Limit to selected projects」(僅限所選專案)

  10. 按一下 [Add Permissions] (新增權限)

  11. 找出要指派給自訂角色的一或多個支援權限,然後勾選旁邊的核取方塊。

    可用權限僅限於所選範圍。如果您在新增權限後變更範圍,請務必確認先前指派的所有權限都已重設。

  12. 按一下 [儲存]

  13. 按一下 [Create]。

    新的自訂角色會顯示在「角色」頁面中。

gdcloud

  1. 確認已安裝 gdcloud CLI。詳情請參閱 gcloud CLI 總覽頁面。
  2. 建立自訂角色:

    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:選用。自訂角色的發布階段。有效值為 ALPHABETAGADISABLED。如果省略這個標記,則預設為 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:選用。自訂角色的發布階段。有效值為 ALPHABETAGADISABLED。如果省略這個欄位,系統會預設為 ALPHA
  • TITLE:自訂角色的簡單易懂名稱。
  • RULES_TYPE:這個欄位會定義規則的範圍。請替換為 globalRules (適用於全域 API 中的權限) 或 zonalRules (適用於區域 API 中的權限)。您無法在同一個 CustomRole 資源中同時使用這兩者。
  • RULES_LIST:標準 Kubernetes RBAC 規則物件的縮排清單。清單中的每個物件都會授予權限。您可以透過 gdcloud iam roles describe 檢查預先定義角色中的權限,判斷正確的 apiGroupsresourcesverbs,如「查看角色及其權限」一文所示。

    以下範例顯示 globalRules 物件中單一項目的結構:

    globalRules:
    - apiGroups: ["storage.global.gdc.goog"]
      resources: ["buckettypes"]
      verbs: ["get", "list", "watch"]
    

    清單中可包含多個項目,每個項目定義一組不同的權限。

管理自訂角色

您有責任管理自訂角色的生命週期。當 Distributed Cloud 新增權限、功能或服務時,會更新預先定義的角色。如果更新內容是刪除預先定義的角色,或是從預先定義的角色中移除權限,依賴這些權限的自訂角色就會無法運作。您必須監控這些更新,並手動調整受影響的自訂角色,確保這些角色繼續正常運作。

您可以編輯、停用或刪除自訂角色,但無法編輯、停用或刪除預先定義的角色。如要查看所有角色及其特定權限的清單,請參閱「查看角色及其權限」。

編輯自訂角色

使用 GDC 控制台、gdcloud CLI 或 API 編輯自訂角色:

控制台

  1. 登入 GDC 控制台。
  2. 在專案選取器中,選取要編輯自訂角色的機構或專案。
  3. 在導覽選單中,依序點選「Identity & Access」>「Roles」
  4. 從角色清單中選取要編輯的自訂角色。
  5. 在自訂角色詳細資料頁面中,按一下「編輯」
  6. 編輯自訂角色詳細資料,例如名稱、說明、ID 或發布階段。
  7. 視需要新增或移除指派的權限。
    1. 按一下「新增權限」,從可用權限清單中選取。
    2. 如要移除已指派的權限,請勾選要移除的權限旁邊的核取方塊,然後按一下「移除」
  8. 按一下 [儲存]

    系統會顯示訊息,確認已儲存變更。

gdcloud

  1. 確認已安裝 gdcloud CLI。詳情請參閱 gcloud CLI 總覽頁面。
  2. 編輯自訂角色:

    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:選用。自訂角色的發布階段。有效值為 ALPHABETAGADISABLED。如果省略這個標記,則預設為 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:選用。自訂角色的發布階段。有效值為 ALPHABETAGADISABLED。如果省略這個欄位,系統會預設為 ALPHA
  • TITLE:自訂角色的簡單易懂名稱。
  • RULES_TYPE:這個欄位會定義規則的範圍。請替換為 globalRules (適用於全域 API 中的權限) 或 zonalRules (適用於區域 API 中的權限)。您無法在同一個 CustomRole 資源中同時使用這兩者。
  • RULES_LIST:標準 Kubernetes RBAC 規則物件的縮排清單。清單中的每個物件都會授予權限。您可以透過 gdcloud iam roles describe 檢查預先定義角色中的權限,判斷正確的 apiGroupsresourcesverbs,如「查看角色及其權限」一文所示。

    以下範例顯示 globalRules 物件中單一項目的結構:

    globalRules:
    - apiGroups: ["storage.global.gdc.goog"]
      resources: ["buckettypes"]
      verbs: ["get", "list", "watch"]
    

    清單中可包含多個項目,每個項目定義一組不同的權限。

停用自訂角色

停用的自訂角色仍會保留在角色清單中,且仍可指派給使用者,但不會生效。您隨時可以重新啟用自訂角色。

使用 GDC 控制台、gdcloud CLI 或 API 停用自訂角色:

控制台

  1. 登入 GDC 控制台。
  2. 在專案選取器中,選取要停用自訂角色的機構或專案。
  3. 在導覽選單中,依序點選「Identity & Access」>「Roles」
  4. 在角色清單中,選取要停用的自訂角色。
  5. 在自訂角色詳細資料頁面中,按一下「停用」

gdcloud

  1. 確認已安裝 gdcloud CLI。詳情請參閱 gcloud CLI 總覽頁面。
  2. 停用自訂角色:

    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 檢查預先定義角色中的權限,判斷正確的 apiGroupsresourcesverbs,如「查看角色及其權限」一文所示。

    以下範例顯示 globalRules 物件中單一項目的結構:

    globalRules:
    - apiGroups: ["storage.global.gdc.goog"]
      resources: ["buckettypes"]
      verbs: ["get", "list", "watch"]
    

    清單中可包含多個項目,每個項目定義一組不同的權限。

刪除自訂角色

系統會永久移除已刪除的角色,但您可以建立同名的新角色。

使用 gdcloud CLI 或 API 刪除自訂角色:

gdcloud

  1. 確認已安裝 gdcloud CLI。詳情請參閱 gcloud CLI 總覽頁面。
  2. 刪除自訂角色:

    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 檔案的路徑。這個檔案與您用來建立或更新角色的檔案相同。