本頁說明如何管理現有的工作負載身分集區,以及 Workload Identity Federation 的身分提供者 (IdP)。
您可以使用 Google Cloud 控制台、Google Cloud CLI 或 REST API 管理集區和供應商。
事前準備
建立 workload identity pool。如需操作說明,請參閱 Workload Identity Federation 設定指南。
必要的角色
如要取得管理工作負載身分集區和供應商所需的權限,請要求管理員在專案中授予您下列 IAM 角色:
-
如要查看集區和供應商:身分與存取權管理 Workload Identity 集區檢視者 (
roles/iam.workloadIdentityPoolViewer) -
如要查看、建立、更新及刪除集區和供應商:身分與存取權管理 Workload Identity 集區管理員 (
roles/iam.workloadIdentityPoolAdmin)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這些預先定義的角色具備管理工作負載身分集區和提供者所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要管理 workload identity pool 和提供者,必須具備下列權限:
-
如要查看 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 pool
本節說明如何管理 workload identity pool。
建立集區
如要在專案中建立 workload identity pool,請執行下列操作:
控制台
-
前往 Google Cloud 控制台的「New workload provider and pool」(新增工作負載供應商和集區) 頁面。
-
在「建立身分集區」部分,輸入集區名稱。
Google Cloud 控制台會使用這個名稱建立集區 ID。如要變更集區 ID,請按一下「編輯」。集區 ID 設定後即無法變更。
- 選用:在「Description」(說明) 欄位中輸入集區的說明。
- 選用:如要建立處於停用狀態的集區,請按一下「已啟用集區」切換按鈕。
- 按一下「繼續」。
- 在「將提供者新增至集區」和「設定提供者屬性」部分,為集區設定識別資訊提供者。如需操作說明,請參閱「建立供應商」。
- 按一下 [儲存]。
gcloud
REST
列出集區
如要列出專案中的所有 workload identity pool,請執行下列操作:
控制台
-
前往 Google Cloud 控制台的「Workload Identity Pools」(工作負載身分集區) 頁面。
- 在表格中查看 workload identity pool 清單。
- 選用:如要在清單中納入已刪除的集區和提供者,請按一下「顯示已刪除的集區和提供者」切換鈕。
gcloud
REST
取得集區
如要取得特定工作負載身分集區的詳細資料,請執行下列操作:
控制台
-
前往 Google Cloud 控制台的「Workload Identity Pools」(工作負載身分集區) 頁面。
- 找出要查看的 workload identity pool,然後按一下其顯示名稱。 Google Cloud 控制台會顯示 workload identity pool 的詳細資料。
gcloud
REST
更新集區
您可以啟用或停用 workload identity pool。你也可以變更顯示名稱或說明。
如要更新現有的 workload identity pool,請執行下列操作:
控制台
-
前往 Google Cloud 控制台的「Workload Identity Pools」(工作負載身分集區) 頁面。
- 找出要編輯的 workload identity pool。
- 按一下 workload identity pool 的顯示名稱。
-
如要編輯 workload identity pool 的顯示名稱,請按照下列步驟操作:
- 在「集區詳細資料」頁面中,按一下顯示名稱旁的「編輯」圖示。
- 在隨即顯示的「編輯集區顯示名稱」對話方塊中,更新顯示名稱。
- 按一下 [儲存]。
- 如要停用或啟用工作負載身分集區,請按一下「狀態」切換鈕,然後按一下「停用」或「啟用」。
-
如要編輯說明,請按照下列步驟操作:
- 在「說明」中,按一下說明文字旁的「編輯」圖示 。
- 更新說明。
- 按一下 [儲存]。
gcloud
REST
刪除集區
刪除 workload identity pool 時,系統也會一併刪除其 workload identity pool 提供者。因此,集區中的身分將無法存取Google Cloud 資源。
刪除集區後,你可以在最多 30 天內取消刪除。30 天後,系統就會永久刪除這些資料。在永久刪除集區之前,您無法在建立新的 Workload Identity 集區時重複使用其名稱。
如要刪除 workload identity pool 和其 IdP,請按照下列步驟操作:
控制台
-
前往 Google Cloud 控制台的「Workload Identity Pools」(工作負載身分集區) 頁面。
- 找出要刪除的工作負載身分集區,然後按一下其顯示名稱。
- 依序按一下 「刪除集區」和「刪除」。系統會刪除工作負載身分集區及其 IdP。
gcloud
REST
取消刪除集區
刪除工作負載身分集區後,您可以在最多 30 天內還原。
如要取消刪除集區,請按照下列步驟操作:
控制台
-
前往 Google Cloud 控制台的「Workload Identity Pools」(工作負載身分集區) 頁面。
- 點選「顯示已刪除的集區和提供者」切換鈕。
- 找出要取消刪除的 workload identity pool,然後按一下「還原」圖示。
- 按一下「還原」。系統會還原集區及其提供者。
gcloud
REST
管理 workload identity pool 提供者
本節說明如何管理工作負載身分集區提供者。
建立提供者
如要在現有 workload identity pool 中建立 workload identity pool 提供者,請執行下列操作:
控制台
-
前往 Google Cloud 控制台的「Workload Identity Pools」(工作負載身分集區) 頁面。
- 找出要新增供應商的 workload identity pool,然後點選其「顯示名稱」。
- 按一下「 Add provider」(新增提供者)。
-
選取要建立的供應商類型:
- AWS:Amazon Web Services (AWS) IdP。
- OpenID Connect (OIDC):與 OIDC 相容的 IdP。包括 Microsoft Azure。
-
輸入提供者名稱。
Google Cloud 控制台會使用這個名稱建立提供者 ID。如要變更供應商 ID,請按一下「編輯」。提供者 ID 設定後即無法變更。
-
填寫供應商的其餘欄位:
- AWS:輸入 AWS 帳戶 ID。
-
OIDC:輸入核發者網址。如果是 Azure,核發者網址採用
https://sts.windows.net/AZURE_TENANT_ID格式。如為其他供應商,請參閱供應商的說明文件。
完成後,按一下「繼續」。
-
如要設定屬性對應,請按一下「編輯對應」。屬性對應功能可讓您使用外部身分資訊,將存取權授予某些身分。
-
AWS:這個步驟可以省略。您可以使用預設對應。
詳情請參閱「AWS 和 Azure 的身分識別提供者設定」。
-
OIDC:建議將
google.subject對應至assertion.sub。其他對應則為選填。詳情請參閱「Azure」或「其他 OIDC 供應商」的 IdP 設定。
-
- 選用:如要提供屬性條件 (指定可驗證的身分),請按一下「新增條件」,然後輸入有效的通用運算式語言 (CEL) 運算式。詳情請參閱「屬性條件」。
- 按一下 [儲存]。系統會建立 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 提供者,請執行下列操作:
控制台
-
前往 Google Cloud 控制台的「Workload Identity Pools」(工作負載身分集區) 頁面。
- 如要查看 workload identity pool 的提供者,請點選該集區的「展開節點」圖示。
gcloud
REST
呼叫 projects.locations.workloadIdentityPools.providers.list()。
取得供應商
如要取得特定 workload identity pool 提供者的詳細資料,請按照下列步驟操作:
控制台
-
前往 Google Cloud 控制台的「Workload Identity Pools」(工作負載身分集區) 頁面。
- 找出包含提供者的 workload identity pool,然後點選該集區的「展開節點」圖示。
- 找出要查看的 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 提供者,請執行下列操作:
控制台
前往 Google Cloud 控制台的「Workload Identity Pools」(工作負載身分集區) 頁面。
找出包含提供者的 workload identity pool,然後點選該集區的「展開節點」圖示。
找出要編輯的 Workload Identity 集區供應商,然後按一下其「編輯」圖示。
編輯供應商資訊,然後按一下「儲存」。
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()。
刪除提供者
刪除 workload identity pool 提供者後,提供者的身分將無法存取 Google Cloud 資源。
刪除提供者後,你可以在最多 30 天內取消刪除。30 天後,系統就會永久刪除這些資料。永久刪除供應商前,您無法在建立新供應商時重複使用其名稱。
如要刪除 workload identity pool 提供者,請按照下列步驟操作:
控制台
前往 Google Cloud 控制台的「Workload Identity Pools」(工作負載身分集區) 頁面。
找出包含提供者的 Workload Identity Pool,然後按一下其「顯示名稱」。
在「供應商」窗格中找到要刪除的供應商,然後按一下其 「刪除」圖示。
按一下「刪除」即可刪除供應商。
gcloud
REST
呼叫 projects.locations.workloadIdentityPools.providers.delete()。
取消刪除供應商
刪除 workload identity pool 提供者後,您可以在最多 30 天內復原。如要還原已刪除的供應商,請按照下列步驟操作:
控制台
前往 Google Cloud 控制台的「Workload Identity Pools」(工作負載身分集區) 頁面。
點選「顯示已刪除的集區和提供者」切換鈕。
找出包含提供者的 workload identity pool,然後點選該集區的「展開節點」圖示。
找出要取消刪除的供應商,然後點選「還原」圖示 。
按一下「還原」。供應商已還原。
gcloud
執行 gcloud iam workload-identity-pools providers undelete 指令。
REST
呼叫 projects.locations.workloadIdentityPools.providers.undelete()。
管理 Workload Identity Federation 的限制
您可以透過組織政策限制,限制 Google Cloud 機構資源的使用方式。
本節說明使用 Workload Identity Federation 時建議採用的限制。
管理允許的 IdP
機構管理員可以決定機構允許與哪些 IdP 進行同盟。
如要管理允許的 IdP,請在貴機構的組織政策中啟用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 IdP 的聯盟機制較為特殊,因為驗證聲明所用的公開金鑰是在設定 SAML IdP 時提供。因此,惡意使用者可能會嘗試使用公開金鑰,上傳含有貴機構 IdP 實體 ID 的 SAML 中繼資料文件。在此情境中,使用實體 ID 限制同盟只會產生安全假象。
為降低這項風險,我們強烈建議您只允許在貴機構集中管理的 Google Cloud 專案中,使用 SAML 聯盟建立工作負載身分集區。然後視需要將該工作負載身分集區中的外部身分,授予整個機構的資源存取權。
如要允許來自 SAML IdP 的同盟,請建立允許特殊關鍵字 KEY_UPLOAD 的限制。
gcloud resource-manager org-policies allow constraints/iam.workloadIdentityPoolProviders \ KEY_UPLOAD --organization=ORGANIZATION_NUMBER
您可以重複執行這些指令,允許其他供應商進行同盟。
如要封鎖所有供應商的聯盟,請按照下列步驟操作:
建立包含下列內容的 YAML 檔案:
constraint: constraints/iam.workloadIdentityPoolProviders listPolicy: allValues: DENY
將檔案傳遞給
gcloud resource-manager org-policies set-policy指令:gcloud resource-manager org-policies set-policy FILE_NAME.yaml \ --organization=ORGANIZATION_NUMBER
限制服務帳戶金鑰建立作業
有了 workload identity federation,您就能從 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 Federation
您可以使用 Cloud Monitoring 指標,監控工作負載身分集區和供應商的驗證事件。如需可用指標的清單,請參閱「IAM 指標」。
後續步驟
進一步瞭解 Workload Identity Federation。