本页面介绍如何管理现有的工作负载身份池及其身份提供商。
您可以使用 Google Cloud 控制台、Google Cloud CLI 或 REST API 管理池和提供商。
准备工作
创建工作负载身份池。请参阅以下某个页面,了解操作方法:
所需的角色
如需获得管理工作负载身份池和提供商所需的权限,请让管理员向您授予项目的以下 IAM 角色:
- IAM Workload Identity Pool Viewer (
roles/iam.workloadIdentityPoolViewer
)(如需查看池和提供方) - IAM Workload Identity Pool Admin (
roles/iam.workloadIdentityPoolAdmin
)(如需查看、创建、更新和删除池和提供方)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
这些预定义角色具有管理工作负载身份池和提供商所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需管理工作负载身份池和提供方,您需要具备以下权限:
-
如需查看工作负载身份池和提供商:
-
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
-
-
管理工作负载身份池
本部分介绍如何管理工作负载身份池。
创建池
如需在项目中创建工作负载身份池,请执行以下操作:
控制台
在 Google Cloud 控制台中,转到 Workload Identity 池页面。
gcloud
REST
列出池
如需列出项目中的所有工作负载身份池,请执行以下操作:
控制台
在 Google Cloud 控制台中,转到 Workload Identity 池页面。
gcloud
REST
获取池
如需获取特定工作负载身份池的详细信息,请执行以下操作:
控制台
在 Google Cloud 控制台中,转到 Workload Identity 池页面。
找到您要查看的工作负载身份池,然后点击其
修改图标。Google Cloud 控制台会显示有关工作负载身份池的详细信息。
gcloud
REST
更新池
您可以启用或停用工作负载身份池。您还可以更改其显示名或说明。
如需更新现有工作负载身份池,请执行以下操作:
控制台
在 Google Cloud 控制台中,转到 Workload Identity 池页面。
找到您要修改的工作负载身份池,然后点击其
修改图标。如需停用或启用工作负载身份池,请点击状态切换开关,然后点击停用或启用。
如需修改显示名,请点击显示名旁边的
修改。更新名称,然后点击保存。如需修改说明,请使用 gcloud CLI 或 REST API。
gcloud
REST
删除池
删除工作负载身份池时,其工作负载身份池提供商也将一同删除。因此,池中的身份将无法再访问 Google Cloud 资源。
您最长可以在删除后 30 天内恢复删除池。30 天后,系统会永久删除提供商。在系统永久删除某个池之前,您不能在创建新的工作负载身份池时重复使用该池的名称。
如需删除工作负载身份池及其身份提供商,请执行以下操作:
控制台
在 Google Cloud 控制台中,转到 Workload Identity 池页面。
找到您要删除的工作负载身份池,然后点击其
修改图标。点击
删除池,然后点击删除。工作负载身份池及其身份提供商会被删除。
gcloud
REST
恢复删除池
您最长可以在删除后 30 天内恢复已删除的工作负载身份池。
如需恢复删除池,请执行以下操作:
控制台
在 Google Cloud 控制台中,转到 Workload Identity 池页面。
点击显示已删除的池和提供商切换开关。
找到您要恢复删除的工作负载身份池,然后点击其
恢复图标。点击恢复。系统会恢复池及其提供商。
gcloud
REST
管理工作负载身份池提供方
本部分介绍如何管理工作负载身份池提供方。
创建提供商
如需在现有工作负载身份池中创建工作负载身份池提供方,请执行以下操作:
控制台
在 Google Cloud 控制台中,转到 Workload Identity 池页面。
找到要向其中添加提供商的工作负载身份池,然后点击其
修改图标。点击
添加提供商。选择要创建的提供商类型:
- AWS:Amazon Web Services (AWS) 身份提供商。
- OpenID Connect (OIDC):与 OIDC 兼容的身份提供商。这包括 Microsoft Azure。
输入提供商的名称。
Google Cloud 控制台将使用该名称创建提供商 ID。如需更改提供商 ID,请点击修改。提供商 ID 创建后便无法更改。
填写提供商的剩余字段:
- AWS:输入您的 AWS 账号 ID。
- OIDC:输入颁发者网址。对于 Azure,颁发者网址采用
https://sts.windows.net/AZURE_TENANT_ID
格式。对于其他提供商,请参阅相关提供商的文档。
完成操作后,请点击继续。
如需配置特性映射,请点击修改映射。通过特性映射,您可以使用有关外部身份的信息来授予对其中一部分身份的访问权限。
AWS:这是可选步骤;您可以使用默认映射。
如需了解详情,请参阅 AWS 身份提供商设置。
OIDC:我们建议您将
google.subject
映射到assertion.sub
。其他映射为可选。如需了解详情,请参阅 Azure 身份提供商设置或 OIDC 身份提供商设置。
可选:如需提供用于指定可进行身份验证的身份的特性条件,请点击添加条件并输入有效的通用表达式语言 (CEL) 表达式。如需了解详情,请参阅特性条件。
点击保存。创建了工作负载身份池提供商。
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()
。
列出提供商
如需列出项目中的工作负载身份池提供商,请执行以下操作:
控制台
在 Google Cloud 控制台中,转到 Workload Identity 池页面。
如需查看工作负载身份池的提供商,请点击该池的
展开节点图标。
gcloud
REST
调用 projects.locations.workloadIdentityPools.providers.list()
。
获取提供商
如需获取特定工作负载身份池提供方的详细信息,请执行以下操作:
控制台
在 Google Cloud 控制台中,转到 Workload Identity 池页面。
找到包含提供商的工作负载身份池,然后点击池的
展开节点图标。找到要查看的工作负载身份池提供商,然后点击其
修改图标。Google Cloud 控制台会显示有关提供商的详细信息。
gcloud
执行 gcloud iam workload-identity-pools providers describe
命令。
REST
调用 projects.locations.workloadIdentityPools.providers.get()
。
更新提供商
您可以启用或停用工作负载身份池提供商。您还可以更新其账号信息及其特性映射,以及它的显示名和说明。
如需更新现有工作负载身份池提供方,请执行以下操作:
控制台
在 Google Cloud 控制台中,转到 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()
。
删除提供商
删除工作负载身份池提供商后,提供商的身份将无法再访问 Google Cloud 资源。
您最长可以在删除后 30 天内恢复删除提供商。30 天后,系统会永久删除提供商。在系统永久删除某个提供商之前,您不能在创建新的提供商时重复使用该提供商的名称。
如需删除工作负载身份池提供商,请执行以下操作:
控制台
在 Google Cloud 控制台中,转到 Workload Identity 池页面。
找到包含该提供商的工作负载身份池,然后点击其
修改图标。在提供商窗格中,找到要删除的提供商,然后点击其
删除图标。点击删除以删除该提供商。
gcloud
REST
调用 projects.locations.workloadIdentityPools.providers.delete()
。
恢复删除提供商
您最长可以在删除后 30 天内恢复已删除的工作负载身份池提供方。如需恢复删除的提供商,请执行以下操作:
控制台
在 Google Cloud 控制台中,转到 Workload Identity 池页面。
点击显示已删除的池和提供商切换开关。
找到包含提供商的工作负载身份池,然后点击池的
展开节点图标。找到要恢复删除的提供商,然后点击其
恢复图标。点击恢复。该提供商将被恢复。
gcloud
执行 gcloud iam workload-identity-pools providers undelete
命令。
REST
调用 projects.locations.workloadIdentityPools.providers.undelete()
。
管理工作负载身份联合的限制条件
您可以使用组织政策限制条件来限制 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 是一个可供恶意用户访问私钥的公钥。在此情况下,通过实体 ID 限制联合只能提供安全假象。因此,我们强烈建议您仅允许在组织集中管理的 Google Cloud 项目中创建工作负载身份池,以允许进行 SAML 联合。然后,您可以向该工作负载身份池中的外部身份授予您组织中各项资源的访问权限。
如需允许来自 SAML 身份提供商的联合,请创建一个允许特殊关键字 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
限制服务账号密钥的创建
工作负载身份联合允许您从 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
监控工作负载身份联合
您可以使用 Cloud Monitoring 指标来监控工作负载身份池和提供方的身份验证事件。如需查看可用指标的列表,请参阅 IAM 指标。