管理 Workload Identity 集區和提供者

本頁說明如何管理現有的工作負載身分集區及其身分提供者。

您可以使用 Google Cloud 控制台、Google Cloud CLIREST API 管理集區和供應商。

事前準備

建立 workload identity pool。如要瞭解如何操作,請參閱下列其中一個頁面:

必要的角色

如要取得管理工作負載身分集區和供應商所需的權限,請要求管理員將專案的下列 IAM 角色授予您:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

這些預先定義的角色具備管理 Workload Identity 集區和提供者所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:

所需權限

如要管理 Workload Identity 集區和提供者,必須具備下列權限:

  • 如要查看 workload identity pool 和提供者,請按照下列步驟操作:
    • iam.googleapis.com/workloadIdentityPoolProviders.get
    • iam.googleapis.com/workloadIdentityPoolProviders.list
    • iam.googleapis.com/workloadIdentityPools.get
    • iam.googleapis.com/workloadIdentityPools.list
  • 如要建立、更新及刪除集區和供應商:
    • iam.googleapis.com/workloadIdentityPoolProviders.create
    • iam.googleapis.com/workloadIdentityPoolProviders.delete
    • iam.googleapis.com/workloadIdentityPoolProviders.undelete
    • iam.googleapis.com/workloadIdentityPoolProviders.update
    • iam.googleapis.com/workloadIdentityPools.create
    • iam.googleapis.com/workloadIdentityPools.delete
    • iam.googleapis.com/workloadIdentityPools.undelete
    • iam.googleapis.com/workloadIdentityPools.update

您或許還可透過自訂角色或其他預先定義的角色取得這些權限。

管理 Workload Identity 集區

本節說明如何管理工作負載身分集區。

建立集區

如要在專案中建立 workload identity pool,請按照下列步驟操作:

控制台

前往 Google Cloud 控制台的「Workload Identity Pools」(工作負載身分集區) 頁面。

前往「Workload Identity Pools」(工作負載身分集區)

gcloud

執行 gcloud iam workload-identity-pools create 指令。

REST

呼叫 projects.locations.workloadIdentityPools.create()

列出集區

如要列出專案中的所有 workload identity pool,請執行下列操作:

控制台

前往 Google Cloud 控制台的「Workload Identity Pools」(工作負載身分集區) 頁面。

前往「Workload Identity Pools」(工作負載身分集區)

gcloud

執行 gcloud iam workload-identity-pools list 指令。

REST

呼叫 projects.locations.workloadIdentityPools.list()

取得集區

如要取得特定工作負載身分集區的詳細資料,請執行下列操作:

控制台

  1. 前往 Google Cloud 控制台的「Workload Identity Pools」(工作負載身分集區) 頁面。

    前往「Workload Identity Pools」(工作負載身分集區)

  2. 找出要查看的 Workload Identity 集區,然後按一下 「編輯」圖示。Google Cloud 控制台會顯示 workload identity pool 的詳細資料。

gcloud

執行 gcloud iam workload-identity-pools describe 指令。

REST

呼叫 projects.locations.workloadIdentityPools.get()

更新集區

您可以啟用或停用工作負載身分集區。你也可以變更顯示名稱或說明。

如要更新現有工作負載身分集區,請執行下列操作:

控制台

  1. 前往 Google Cloud 控制台的「Workload Identity Pools」(工作負載身分集區) 頁面。

    前往「Workload Identity Pools」(工作負載身分集區)

  2. 找出要編輯的工作負載身分集區。

  3. 按一下工作負載身分集區的「顯示名稱」

  4. 如要編輯工作負載身分集區的顯示名稱,請按照下列步驟操作:

    1. 在「集區詳細資料」頁面中,按一下顯示名稱旁的「編輯」圖示。

    2. 在隨即顯示的「編輯集區顯示名稱」對話方塊中,更新顯示名稱。

    3. 按一下 [儲存]

  5. 如要停用或啟用工作負載身分集區,請按一下「狀態」切換按鈕,然後按一下「停用」或「啟用」

  6. 如要編輯說明,請按照下列步驟操作:

    1. 在「說明」中,按一下說明文字旁的「編輯」

    2. 更新說明。

    3. 按一下 [儲存]

gcloud

執行 gcloud iam workload-identity-pools update 指令。

REST

呼叫 projects.locations.workloadIdentityPools.patch()

刪除集區

刪除工作負載身分集區時,系統也會刪除其工作負載身分集區提供者。因此集區中的身分會失去資源存取權。Google Cloud

刪除集區後,你可以在最多 30 天內取消刪除。30 天後,系統就會永久刪除這些資料。在永久刪除集區之前,您無法在建立新的工作負載身分集區時重複使用其名稱。

如要刪除工作負載身分集區及其身分提供者,請執行下列操作:

控制台

  1. 前往 Google Cloud 控制台的「Workload Identity Pools」(工作負載身分集區) 頁面。

    前往「Workload Identity Pools」(工作負載身分集區)

  2. 找出要刪除的工作負載身分集區,然後按一下其「編輯」圖示。

  3. 依序按一下 「刪除集區」和「刪除」。系統會刪除 workload identity pool 和其識別資訊提供者。

gcloud

執行 gcloud iam workload-identity-pools delete 指令。

REST

呼叫 projects.locations.workloadIdentityPools.delete()

取消刪除集區

刪除工作負載身分集區後,您可以在最多 30 天內復原。

如要取消刪除集區,請按照下列步驟操作:

控制台

  1. 前往 Google Cloud 控制台的「Workload Identity Pools」(工作負載身分集區) 頁面。

    前往「Workload Identity Pools」(工作負載身分集區)

  2. 按一下「顯示已刪除的集區和提供者」切換按鈕。

  3. 找出要取消刪除的工作負載身分集區,然後按一下其「還原」圖示

  4. 按一下「還原」。系統會還原集區及其提供者。

gcloud

執行 gcloud iam workload-identity-pools undelete 指令。

REST

呼叫 projects.locations.workloadIdentityPools.undelete()

管理 workload identity pool 提供者

本節說明如何管理 Workload Identity 集區提供者。

建立提供者

如要在現有 workload identity pool 中建立 workload identity pool 提供者,請執行下列操作:

控制台

  1. 前往 Google Cloud 控制台的「Workload Identity Pools」(工作負載身分集區) 頁面。

    前往「Workload Identity Pools」(工作負載身分集區)

  2. 找出要新增提供者的 workload identity pool,然後按一下 「編輯」圖示。

  3. 按一下「 Add provider」(新增提供者)

  4. 選取要建立的供應商類型:

    • AWS:Amazon Web Services (AWS) 身分識別提供者。
    • OpenID Connect (OIDC):與 OIDC 相容的識別資訊提供者。包括 Microsoft Azure。
  5. 輸入供應商名稱。

    Google Cloud 控制台會使用這個名稱建立供應商 ID。如要變更供應商 ID,請按一下「編輯」。供應商 ID 設定後即無法變更。

  6. 填寫供應商的其餘欄位:

    • AWS:輸入 AWS 帳戶 ID。
    • OIDC:輸入核發者網址。如果是 Azure,核發者網址的格式為 https://sts.windows.net/AZURE_TENANT_ID。如為其他供應商,請參閱供應商的說明文件。

    完成後,按一下「繼續」

  7. 如要設定屬性對應,請按一下「編輯對應」。屬性對應功能可讓您使用外部身分資訊,將存取權授予某些身分。

  8. 選用:如要提供屬性條件 (指定可驗證的身分),請按一下「新增條件」並輸入有效的通用運算式語言 (CEL) 運算式。詳情請參閱「屬性條件」。

  9. 按一下 [儲存]。系統會建立 workload identity pool 提供者。

gcloud

執行 gcloud iam workload-identity-pools providers create-aws 指令,建立 AWS 提供者。

執行 gcloud iam workload-identity-pools providers create-oidc 指令來建立 OIDC 提供者。包括 Microsoft Azure。

REST

呼叫 projects.locations.workloadIdentityPools.providers.create()

列出供應商

如要列出專案中的 workload identity pool 提供者,請執行下列操作:

控制台

  1. 前往 Google Cloud 控制台的「Workload Identity Pools」(工作負載身分集區) 頁面。

    前往「Workload Identity Pools」(工作負載身分集區)

  2. 如要查看 workload identity pool 的提供者,請按一下集區的「展開節點」圖示。

gcloud

執行 gcloud iam workload-identity-pools providers list 指令。

REST

呼叫 projects.locations.workloadIdentityPools.providers.list()

取得供應商

如要取得特定 workload identity pool 提供者的詳細資料,請執行下列操作:

控制台

  1. 前往 Google Cloud 控制台的「Workload Identity Pools」(工作負載身分集區) 頁面。

    前往「Workload Identity Pools」(工作負載身分集區)

  2. 找出包含提供者的 workload identity pool,然後點選該集區的「展開節點」圖示。

  3. 找出要查看的 workload identity pool 提供者,然後按一下其 「編輯」圖示。Google Cloud 控制台會顯示供應商的詳細資訊。

gcloud

執行 gcloud iam workload-identity-pools providers describe 指令。

REST

呼叫 projects.locations.workloadIdentityPools.providers.get()

更新供應商

您可以啟用或停用 workload identity pool 提供者。你也可以更新帳戶資訊、屬性對應關係、顯示名稱和說明。

如要更新現有的 workload identity pool 提供者,請執行下列操作:

控制台

  1. 前往 Google Cloud 控制台的「Workload Identity Pools」(工作負載身分集區) 頁面。

    前往「Workload Identity Pools」(工作負載身分集區)

  2. 找出包含提供者的 workload identity pool,然後點選該集區的「展開節點」圖示。

  3. 找出要編輯的 Workload Identity 服務供應商,然後按一下 「編輯」圖示。

  4. 編輯供應商資訊,然後按一下「儲存」

gcloud

執行 gcloud iam workload-identity-pools providers update-aws 指令,更新 AWS 供應商。

執行 gcloud iam workload-identity-pools providers update-oidc 指令,更新 OIDC 供應商。包括 Microsoft Azure。

REST

呼叫 projects.locations.workloadIdentityPools.providers.patch()

刪除供應商

刪除工作負載身分集區提供者後,提供者的身分將無法存取 Google Cloud 資源。

刪除供應商後,你可以在最多 30 天內取消刪除。30 天後,系統就會永久刪除這些資料。永久刪除供應商之前,您無法在建立新供應商時重複使用其名稱。

如要刪除工作負載身分集區提供者,請按照下列步驟操作:

控制台

  1. 前往 Google Cloud 控制台的「Workload Identity Pools」(工作負載身分集區) 頁面。

    前往「Workload Identity Pools」(工作負載身分集區)

  2. 找出含有提供者的 workload identity pool,然後按一下其「編輯」圖示

  3. 在「提供者」窗格中,找到要刪除的提供者,然後按一下其 「刪除」圖示。

  4. 按一下「刪除」即可刪除供應商。

gcloud

執行 gcloud iam workload-identity-pools providers delete 指令。

REST

呼叫 projects.locations.workloadIdentityPools.providers.delete()

取消刪除供應商

刪除工作負載身分集區提供者後,您可以在 30 天內復原。如何取消刪除供應商:

控制台

  1. 前往 Google Cloud 控制台的「Workload Identity Pools」(工作負載身分集區) 頁面。

    前往「Workload Identity Pools」(工作負載身分集區)

  2. 按一下「顯示已刪除的集區和提供者」切換按鈕。

  3. 找出包含提供者的 workload identity pool,然後點選該集區的「展開節點」圖示。

  4. 找出要取消刪除的供應商,然後按一下其「還原」圖示。

  5. 按一下「還原」。提供者已還原。

gcloud

執行 gcloud iam workload-identity-pools providers undelete 指令。

REST

呼叫 projects.locations.workloadIdentityPools.providers.undelete()

管理 Workload Identity 聯盟的限制

您可以使用機構政策限制,限制 Google Cloud 機構中資源的使用方式。

本節說明使用工作負載身分聯盟時建議採用的限制。

限制識別資訊提供者設定

機構管理員可以決定機構允許與哪些身分識別提供者聯合。

如要管理允許使用的身分識別提供者,請在貴機構的機構政策中啟用constraints/iam.workloadIdentityPoolProviders清單限制。這項限制會指定允許的供應商的簽發者 URI。您可以使用 Google Cloud 控制台Google Cloud CLI 啟用這項限制。

如要只允許從 AWS 連結,請使用 URI https://sts.amazonaws.com 建立單一限制。以下範例說明如何使用 gcloud CLI 建立這項限制:

gcloud resource-manager org-policies allow constraints/iam.workloadIdentityPoolProviders \
     https://sts.amazonaws.com --organization=ORGANIZATION_NUMBER

您也可以指定哪些 AWS 帳戶 ID 有權存取您的Google Cloud 資源。如要指定帳戶 ID,請使用 constraints/iam.workloadIdentityPoolAwsAccounts 清單限制條件:

gcloud resource-manager org-policies allow constraints/iam.workloadIdentityPoolAwsAccounts \
    ACCOUNT_ID --organization=ORGANIZATION_NUMBER

如要只允許來自一個 OIDC 提供者的同盟,請使用允許的提供者 issuer_uri 建立單一限制。舉例來說,下列項目只允許來自特定 Azure 租戶的同盟:

gcloud resource-manager org-policies allow constraints/iam.workloadIdentityPoolProviders \
     https://sts.windows.net/AZURE_TENANT_ID --organization=ORGANIZATION_NUMBER

SAML 身分識別提供者的聯盟是特例,因為用於驗證聲明的公開金鑰是在設定時提供,而不是直接從身分識別提供者擷取。因此,惡意使用者可能會嘗試上傳 SAML 中繼資料文件,其中包含貴機構身分提供者的實體 ID,但公開金鑰是他們有權存取私密金鑰的金鑰。在此情境中,依實體 ID 限制同盟只會產生安全假象。因此,我們強烈建議您只允許在機構集中管理的 Google Cloud 專案中,建立允許 SAML 聯盟的工作負載身分集區。然後,您就能將存取機構資源的權限授予該工作負載身分集區中的外部身分。

如要允許來自 SAML 識別資訊提供者的同盟,請建立允許特殊關鍵字 KEY_UPLOAD 的限制。

gcloud resource-manager org-policies allow constraints/iam.workloadIdentityPoolProviders \
     KEY_UPLOAD --organization=ORGANIZATION_NUMBER

您可以重複執行這些指令,允許其他供應商進行同盟。

如要封鎖所有供應商的同盟:

  1. 建立包含下列內容的 YAML 檔案:

    constraint: constraints/iam.workloadIdentityPoolProviders
    listPolicy:
      allValues: DENY
  2. 將檔案傳遞給 gcloud resource-manager org-policies set-policy 指令:

    gcloud resource-manager org-policies set-policy FILE_NAME.yaml \
        --organization=ORGANIZATION_NUMBER

限制服務帳戶金鑰建立功能

Workload Identity 聯盟可讓您從 Google Cloud 外部 Google Cloud 存取資源,不必使用服務帳戶金鑰。如果您從未使用服務帳戶金鑰進行驗證,可以停用金鑰建立功能,降低風險。

如要停用服務帳戶金鑰建立功能,請在貴機構的機構政策中強制執行 iam.disableServiceAccountKeyCreation 布林限制。您也可以強制執行 iam.disableServiceAccountKeyUpload 布林值限制,停用服務帳戶的公開金鑰上傳功能。

您可以使用 Google Cloud 主控台gcloud CLI 啟用這些限制。舉例來說,下列 gcloud CLI 指令會同時啟用這兩項限制:

gcloud resource-manager org-policies enable-enforce \
    constraints/iam.disableServiceAccountKeyCreation \
    --organization=ORGANIZATION_NUMBER
gcloud resource-manager org-policies enable-enforce \
    constraints/iam.disableServiceAccountKeyUpload \
    --organization=ORGANIZATION_NUMBER

監控 Workload Identity 聯盟

您可以使用 Cloud Monitoring 指標,監控工作負載身分集區和供應商的驗證事件。如需可用指標清單,請參閱「IAM 指標」。

後續步驟

進一步瞭解 Workload Identity Federation