本文档介绍了如何使用 Microsoft Entra ID 身份提供方 (IdP) 配置员工身份联合,以及如何管理对Google Cloud的访问权限。然后,联合用户可以访问支持员工身份联合的 Google Cloud 服务。您可以使用 OIDC 协议或 SAML 2.0 协议来联合身份。
准备工作
- 确保您已设置 Google Cloud 组织。
-
安装 Google Cloud CLI。 安装完成后,运行以下命令来初始化 Google Cloud CLI:
gcloud init如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI。
- 在 Microsoft Entra ID 中,确保已为隐式流启用 ID 令牌。如需了解详情,请参阅启用 ID 令牌隐式授权。
- 如需登录,您的 IdP 必须提供已签名的身份验证信息:OIDC IdP 必须提供 JWT,而 SAML IdP 响应必须经过签名。
- 如需接收有关贵组织或Google Cloud 产品的变更的重要信息,您必须提供必要的联系人。如需了解详情,请参阅员工身份联合概览。
费用
员工身份联合是一项免费功能。不过,员工身份联合的详细审核日志记录使用 Cloud Logging。如需了解 Logging 价格,请参阅 Google Cloud Observability 价格。
所需的角色
如需获得配置员工身份联合所需的权限,请让您的管理员为您授予组织的 IAM Workforce Pool Admin (roles/iam.workforcePoolAdmin) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
如果您是在开发或测试环境(而非生产环境)中配置权限,则可以授予 IAM Owner (roles/owner) 基本角色,该角色也可提供员工身份联合的权限。
创建 Microsoft Entra ID 应用
本部分介绍如何使用 Microsoft Entra 管理员门户创建 Microsoft Entra ID 应用。或者,您也可以更新现有应用。如需了解其他详细信息,请参阅在 Microsoft Entra ID 生态系统中建立应用。员工身份池支持使用 OIDC 和 SAML 协议进行联合。
OIDC
如需创建使用 OIDC 协议的 Microsoft Entra ID 应用注册,请执行以下操作:
登录 Microsoft Entra 管理员门户。
依次前往身份 > 应用 > 应用注册。
如需开始配置应用注册,请执行以下操作:
点击 New registration(新注册)。
输入应用的名称。
在 Supported account types(支持的账号类型)中,选择一个选项。
在重定向 URI 部分的选择平台下拉列表中,选择 Web。
在文本字段中输入重定向网址。用户成功登录后,系统会将用户重定向到此网址。如果您要配置对控制台(联合)的访问权限,请使用以下网址格式:
https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID替换以下内容:
WORKFORCE_POOL_ID:您在本文档后面部分创建员工身份池时将使用的员工身份池 ID,例如:entra-id-oidc-poolWORKFORCE_PROVIDER_ID:您在本文档后面部分创建员工身份池提供方时将使用的员工身份池提供方 ID,例如:entra-id-oidc-pool-provider如需了解如何设置 ID 的格式,请参阅 API 文档中的查询参数部分。
如需创建应用注册,请点击注册。
如需使用本指南后面部分提供的示例属性映射,您必须创建自定义
department属性。
建议:作为安全最佳实践,建议您通过执行以下操作来配置群组声明:
前往 Microsoft Entra ID 应用注册。
点击令牌配置。
点击添加群组声明。
选择要返回的群组类型。如需了解详情,请参阅配置群组可选声明。
SAML
如需创建使用 SAML 协议的 Microsoft Entra ID 应用注册,请执行以下操作:
登录 Microsoft Entra 管理员门户。
在左侧导航菜单中,依次前往 Entra ID > 企业应用。
如需开始配置企业应用,请执行以下操作:
依次点击新建应用 > 创建您自己的应用。
在随即显示的创建您自己的应用窗格中,输入应用的名称。
点击创建。
依次前往单点登录 > SAML。
按照如下所示更新 Basic SAML Configuration(基本 SAML 配置)。
在 Identifier (Entity ID)(标识符 [实体 ID])字段中,输入以下值:
https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID替换以下内容:
WORKFORCE_POOL_ID:您在本文档后面部分创建员工身份池时将使用的员工身份池 ID,例如:entra-id-saml-poolWORKFORCE_PROVIDER_ID:您在本文档后面部分创建员工身份池提供方时将使用的员工身份池提供方 ID,例如:entra-id-saml-pool-provider如需了解如何设置 ID 的格式,请参阅 API 文档中的查询参数部分。
在 Reply URL (Assertion Consumer Service URL)(回复网址 [断言消费者服务网址])字段中,输入重定向网址。用户成功登录后,系统会将用户重定向到此网址。如果您要配置对控制台(联合)的访问权限,请使用以下网址格式:
https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID替换以下内容:
WORKFORCE_POOL_ID:员工身份池 IDWORKFORCE_PROVIDER_ID:员工身份提供方 ID
如需启用 IdP 发起的登录,请将中继状态字段设置为以下值:
https://console.cloud.google/如需保存 SAML 应用配置,请点击保存。
如需使用本指南后面部分提供的示例属性映射,您必须创建自定义
department属性。
建议:作为安全最佳实践,建议您通过执行以下操作来配置群组声明:
前往 Microsoft Entra ID 应用。
点击 Single sign-on(单点登录)。
在 Attributes & Claims(属性和声明)部分中,点击 Edit(修改)。
点击添加群组声明。
选择要返回的群组类型。如需了解详情,请参阅使用单点登录配置向 SAML 应用的令牌添加群组声明。
创建员工身份池
gcloud
如需创建员工身份池,请运行以下命令:
gcloud iam workforce-pools create WORKFORCE_POOL_ID \
--organization=ORGANIZATION_ID \
--display-name="DISPLAY_NAME" \
--description="DESCRIPTION" \
--session-duration=SESSION_DURATION \
--location=global
替换以下内容:
WORKFORCE_POOL_ID:您选择用于表示您的 Google Cloud 员工群组的 ID。如需了解如何设置 ID 的格式,请参阅 API 文档中的查询参数部分。ORGANIZATION_ID:员工身份池所属 Google Cloud 组织的数字形式组织 ID。员工身份池可在组织中的所有项目和文件夹中使用。DISPLAY_NAME:可选。您的员工身份池的显示名称。DESCRIPTION:可选。员工身份池说明。SESSION_DURATION:可选。会话时长,以在后面附加s的数字表示,例如3600s。会话时长,用于确定来自此员工池的 Google Cloud 访问令牌、控制台(联合)登录会话和 gcloud CLI 登录会话的有效时长。会话时长默认为 1 小时(3600 秒)。会话时长值必须介于 15 分钟(900 秒)到 12 小时(43200 秒)之间。
控制台
如需创建员工身份池,请执行以下操作:
在 Google Cloud 控制台中,前往员工身份池页面:
为员工身份池选择组织。员工身份池可在组织中的所有项目和文件夹中使用。
点击创建池,然后执行以下操作:
在名称字段中,输入池的显示名称。池 ID 是根据您输入的名称自动派生的,并显示在名称字段下方。您可以点击池 ID 旁边的修改来更新池 ID。
可选:在说明中,输入池的说明。
如需创建员工身份池,请点击下一步。
员工身份池的会话时长默认为 1 小时(3600 秒)。会话时长用于确定来自此员工池的 Google Cloud 访问令牌以及控制台(联合)和 gcloud CLI 登录会话的有效时长。创建池后,您可以更新池以设置自定义会话时长。会话时长必须介于 15 分钟(900 秒)到 12 小时(43200 秒)之间。
创建 Microsoft Entra ID 员工身份池提供方
本部分介绍如何创建员工身份池提供方,以便您的 IdP 用户能够访问 Google Cloud。您可以将提供方配置为使用 OIDC 或 SAML 协议。
创建 OIDC 员工身份池提供方
如需使用 OIDC 协议为 Microsoft Entra ID 应用集成创建员工身份池提供方,请执行以下操作:
如需获取 Microsoft Entra ID 应用的颁发者 URI,请执行以下操作:
- 前往 Microsoft Entra ID 应用注册。
- 点击端点。
- 在新标签页中打开 OpenID Connect metadata document(OpenID Connect 元数据文档)。
- 在 JSON 中,复制
issuer的值。
如需获取 Microsoft Entra ID 应用的客户端 ID,请执行以下操作:
- 前往 Microsoft Entra ID 应用注册。
- 在应用 [客户端] ID 中,复制该值。
如需创建 OIDC 员工身份池提供方以基于网络进行登录,请执行以下操作:
gcloud
如需创建支持 OIDC 协议的提供方,请执行以下操作:
代码流
如需创建使用授权代码流程基于网络进行登录的 OIDC 提供方,请执行以下操作:
在 Microsoft Entra ID 应用中,如需获取客户端密钥,请执行以下操作:
前往 Microsoft Entra ID 应用注册。
在证书和密钥中,点击客户端密钥标签页。
如需添加客户端密钥,请点击 + 新建客户端密钥。
在添加客户端密钥对话框中,根据需要输入信息。
如需创建客户端密钥,请点击添加。
在客户端密钥标签页中,找到新的客户端密钥。
在新客户端密钥的值列中,点击content_copy复制。
在 Google Cloud 控制台中,如需创建使用代码流的 OIDC 提供方,请执行以下操作:
gcloud iam workforce-pools providers create-oidc WORKFORCE_PROVIDER_ID \ --workforce-pool=WORKFORCE_POOL_ID \ --display-name="DISPLAY_NAME" \ --description="DESCRIPTION" \ --issuer-uri="ISSUER_URI" \ --client-id="OIDC_CLIENT_ID" \
--client-secret-value="OIDC_CLIENT_SECRET" \ --web-sso-response-type="code" \ --web-sso-assertion-claims-behavior="merge-user-info-over-id-token-claims" \ --web-sso-additional-scopes="WEB_SSO_ADDITIONAL_SCOPES" \ --attribute-mapping="ATTRIBUTE_MAPPING" \ --attribute-condition="ATTRIBUTE_CONDITION" \ --jwk-json-path="JWK_JSON_PATH" \ --detailed-audit-logging \ --location=global请替换以下内容:
WORKFORCE_PROVIDER_ID:唯一的员工身份池提供方 ID。前缀gcp-已预留,因此不能在员工身份池或员工身份池提供方 ID 中使用。WORKFORCE_POOL_ID:您的 IdP 所关联的员工身份池 ID。DISPLAY_NAME:提供方的可选易记显示名;例如idp-eu-employees。DESCRIPTION:可选的员工提供方说明;例如IdP for Partner Example Organization employees。ISSUER_URI:OIDC 颁发者 URI,采用有效的 URI 格式且以https开头;例如https://example.com/oidc。注意:出于安全原因,ISSUER_URI必须使用 HTTPS 架构。OIDC_CLIENT_ID:向 OIDC IdP 注册的 OIDC 客户端的 ID;该 ID 必须与您的 IdP 颁发的 JWT 的aud声明相匹配。OIDC_CLIENT_SECRET:OIDC 客户端密钥。WEB_SSO_ADDITIONAL_SCOPES:(可选)要发送到 OIDC IdP 以进行控制台(联合)或基于浏览器的 gcloud CLI 登录的额外范围。ATTRIBUTE_MAPPING:属性映射。 对于使用 OIDC 身份验证的 Microsoft Entra ID,我们建议使用以下属性映射:google.subject=assertion.sub, google.groups=assertion.groups, google.display_name=assertion.preferred_username此示例会将 IdP 属性
subject、groups和preferred_username分别映射到 Google Cloud属性google.subject、google.groups和google.display_name。ATTRIBUTE_CONDITION:属性条件;例如,如需将ipaddr属性限制为特定 IP 范围,您可以设置条件assertion.ipaddr.startsWith('98.11.12.')。JWK_JSON_PATH:本地上传的 OIDC JWK 的可选路径。如果未提供此参数, Google Cloud 会改用您的 IdP 的/.well-known/openid-configuration路径来寻找包含公钥的 JWK。如需详细了解本地上传的 OIDC JWK,请参阅管理 OIDC JWK。-
员工身份联合详细审核日志记录会将从 IdP 接收的信息记录到 Logging。详细的审核日志记录有助于排查员工身份池提供方配置的问题。如需了解如何通过详细审核日志记录来排查属性映射错误,请参阅一般属性映射错误。如需了解 Logging 价格,请参阅 Google Cloud Observability 价格。
如需为员工身份池提供方停用详细审核日志记录,请在运行
gcloud iam workforce-pools providers create时省略--detailed-audit-logging标志。如需停用详细审核日志记录,您也可以更新提供方。
locations/global/workforcePools/enterprise-example-organization-employees。
隐式流
如需创建使用隐式流进行 Web 登录的 OIDC 提供方,请执行以下操作:
如需在 Microsoft Entra ID 应用中启用 ID 令牌,请执行以下操作:
- 前往 Microsoft Entra ID 应用注册。
- 在身份验证中,选中 ID 令牌复选框。
- 点击保存。
如需创建提供方,请运行以下命令:
gcloud iam workforce-pools providers create-oidc WORKFORCE_PROVIDER_ID \ --workforce-pool=WORKFORCE_POOL_ID \ --display-name="DISPLAY_NAME" \ --description="DESCRIPTION" \ --issuer-uri="ISSUER_URI" \ --client-id="OIDC_CLIENT_ID" \ --web-sso-response-type="id-token" \ --web-sso-assertion-claims-behavior="only-id-token-claims" \ --web-sso-additional-scopes="WEB_SSO_ADDITIONAL_SCOPES" \ --attribute-mapping="ATTRIBUTE_MAPPING" \ --attribute-condition="ATTRIBUTE_CONDITION" \ --jwk-json-path="JWK_JSON_PATH" \ --detailed-audit-logging \ --location=global请替换以下内容:
WORKFORCE_PROVIDER_ID:唯一的员工身份池提供方 ID。前缀gcp-已预留,因此不能在员工身份池或员工身份池提供方 ID 中使用。WORKFORCE_POOL_ID:您的 IdP 所关联的员工身份池 ID。DISPLAY_NAME:提供方的可选易记显示名;例如idp-eu-employees。DESCRIPTION:可选的员工提供方说明;例如IdP for Partner Example Organization employees。ISSUER_URI:OIDC 颁发者 URI,采用有效的 URI 格式且以https开头;例如https://example.com/oidc。注意:出于安全原因,ISSUER_URI必须使用 HTTPS 架构。OIDC_CLIENT_ID:向 OIDC IdP 注册的 OIDC 客户端的 ID;该 ID 必须与您的 IdP 颁发的 JWT 的aud声明相匹配。WEB_SSO_ADDITIONAL_SCOPES:(可选)要发送到 OIDC IdP 以进行控制台(联合)或基于浏览器的 gcloud CLI 登录的额外范围。ATTRIBUTE_MAPPING:属性映射。 对于使用 OIDC 身份验证的 Microsoft Entra ID,我们建议使用以下属性映射:google.subject=assertion.sub, google.groups=assertion.groups, google.display_name=assertion.preferred_username此示例会将 IdP 属性
subject、groups和preferred_username分别映射到 Google Cloud属性google.subject、google.groups和google.display_name。ATTRIBUTE_CONDITION:属性条件;例如,如需将ipaddr属性限制为特定 IP 范围,您可以设置条件assertion.ipaddr.startsWith('98.11.12.')。JWK_JSON_PATH:本地上传的 OIDC JWK 的可选路径。如果未提供此参数, Google Cloud 会改用您的 IdP 的/.well-known/openid-configuration路径来寻找包含公钥的 JWK。如需详细了解本地上传的 OIDC JWK,请参阅管理 OIDC JWK。-
员工身份联合详细审核日志记录会将从 IdP 接收的信息记录到 Logging。详细的审核日志记录有助于排查员工身份池提供方配置的问题。如需了解如何通过详细审核日志记录来排查属性映射错误,请参阅一般属性映射错误。如需了解 Logging 价格,请参阅 Google Cloud Observability 价格。
如需为员工身份池提供方停用详细审核日志记录,请在运行
gcloud iam workforce-pools providers create时省略--detailed-audit-logging标志。如需停用详细审核日志记录,您也可以更新提供方。
locations/global/workforcePools/enterprise-example-organization-employees。
控制台
代码流
如需创建使用授权代码流程基于网络进行登录的 OIDC 提供方,请执行以下操作:
如需获取 Microsoft Entra ID 客户端密钥,请执行以下操作:
前往 Microsoft Entra ID 应用注册。
在证书和密钥中,点击客户端密钥标签页。
如需添加客户端密钥,请点击 + 新建客户端密钥。
在添加客户端密钥对话框中,根据需要输入信息。
如需创建客户端密钥,请点击添加。
在客户端密钥标签页中,找到新的客户端密钥。
在新客户端密钥的值列中,点击content_copy复制。
在 Google Cloud 控制台中,如需创建使用授权代码流程的 OIDC 提供方,请执行以下操作:
在 Google Cloud 控制台中,前往员工身份池页面:
在员工身份池表中,选择要为其创建提供方的池。
在提供方部分中,点击 添加提供方。
在选择提供方供应商列表中,选择您的 IdP。
如果您的 IdP 未列出,请选择通用身份提供方。
在选择身份验证协议中,选择 OpenID Connect (OIDC)。
在创建提供方部分中,执行以下操作:
- 在名称中,输入提供方的名称。
- 在说明中,输入提供方的说明。
- 在颁发者 (网址) 中,输入颁发者 URI。OIDC 颁发者 URI 必须采用有效的 URI 格式,并以
https开头;例如https://example.com/oidc。 - 在客户端 ID 中,输入向 OIDC IdP 注册的 OIDC 客户端的 ID,该 ID 必须与 IdP 颁发的 JWT 的
aud声明相匹配。 如需创建状态为已启用的提供方,请确保启用提供方处于开启状态。
- 点击继续。
在与 IdP 分享提供方信息部分中,复制相应网址。 在您的 IdP 中,将此网址配置为重定向 URI,以便 IdP 知晓在登录后将断言令牌发送到何处。
点击继续。
在配置 OIDC Web 登录部分中,执行以下操作:
- 在流程类型列表中,选择代码。
在断言声明行为列表中,选择以下任一选项:
- 用户信息和 ID 令牌
- 仅 ID 令牌
在客户端密钥字段中,输入 IdP 提供的客户端密钥。
可选:如果您选择了 Okta 作为 IdP,请在 OpenID、个人资料和邮箱之外的其他范围字段中添加任何额外的 OIDC 范围。
点击继续。
在配置提供方中,您可以配置属性映射和属性条件。如需创建属性映射,请执行以下操作。您可以提供 IdP 字段名称,也可以提供返回字符串的 CEL 格式表达式。
必需:在 OIDC 1 中,输入 IdP 中的主体,例如
assertion.sub。对于使用 OIDC 身份验证的 Microsoft Entra ID,我们建议使用以下属性映射:
google.subject=assertion.sub, google.groups=assertion.groups, google.display_name=assertion.preferred_username此示例会将 IdP 属性
subject、groups和preferred_username分别映射到 Google Cloud属性google.subject、google.groups和google.display_name。可选:如需添加其他属性映射,请执行以下操作:
- 点击添加映射。
- 在 Google n 中(其中 n 为数字),输入一个 Google Cloud支持的密钥。
- 在相应的 OIDC n 字段中,以 CEL 格式输入要映射的 IdP 特定字段的名称。
如果您选择了 Microsoft Entra ID 作为 IdP,则可以增加群组数量。
- 选择使用额外属性。
- 在额外属性颁发者 URI 字段中,输入颁发者网址。
- 在额外属性客户端 ID 字段中,输入客户端 ID。
- 在额外属性客户端密钥字段中,输入客户端密钥。
- 在额外属性类型列表中,选择额外属性的属性类型。
- 在额外属性过滤条件字段中,输入在查询 Microsoft Graph API 以获取群组时使用的过滤条件表达式。
如需创建属性条件,请执行以下操作:
- 点击添加条件。
- 在属性条件中,以 CEL 格式输入条件;例如,如需将
ipaddr属性限制为特定的 IP 范围,您可以设置条件assertion.ipaddr.startsWith('98.11.12.')。
如需启用详细审核日志记录,请在详细日志记录中点击启用属性值审核日志记录切换开关。
员工身份联合详细审核日志记录会将从 IdP 接收的信息记录到 Logging。详细的审核日志记录有助于排查员工身份池提供方配置的问题。如需了解如何通过详细审核日志记录来排查属性映射错误,请参阅一般属性映射错误。如需了解 Logging 价格,请参阅 Google Cloud Observability 价格。
如需为员工身份池提供方停用详细审核日志记录,请在运行
gcloud iam workforce-pools providers create时省略--detailed-audit-logging标志。如需停用详细审核日志记录,您也可以更新提供方。
如需创建提供方,请点击提交。
隐式流
如需创建使用隐式流基于网络进行登录的 OIDC 提供方,请执行以下操作:
如需在 Microsoft Entra ID 应用中启用 ID 令牌,请执行以下操作:
- 前往 Microsoft Entra ID 应用注册。
- 在身份验证中,选中 ID 令牌复选框。
- 点击保存。
在 Google Cloud 控制台中,前往员工身份池页面:
在员工身份池表中,选择要为其创建提供方的池。
在提供方部分中,点击 添加提供方。
在选择提供方供应商列表中,选择您的 IdP。
如果您的 IdP 未列出,请选择通用身份提供方。
在选择身份验证协议中,选择 OpenID Connect (OIDC)。
在创建提供方部分中,执行以下操作:
- 在名称中,输入提供方的名称。
- 在说明中,输入提供方的说明。
- 在颁发者 (网址) 中,输入颁发者 URI。OIDC 颁发者 URI 必须采用有效的 URI 格式,并以
https开头;例如https://example.com/oidc。 - 在客户端 ID 中,输入向 OIDC IdP 注册的 OIDC 客户端的 ID,该 ID 必须与 IdP 颁发的 JWT 的
aud声明相匹配。 - 如需创建状态为已启用的提供方,请确保启用提供方处于开启状态。
- 点击继续。
在与 IdP 分享提供方信息部分中,复制相应网址。 在您的 IdP 中,将此网址配置为重定向 URI,以便 IdP 知晓在登录后将断言令牌发送到何处。
点击继续。
在配置 OIDC Web 登录部分中,执行以下操作:
在流程类型列表中,选择 ID 令牌。
在断言声明行为列表中,选中 ID 令牌。
可选:如果您选择了 Okta 作为 IdP,请在 OpenID、个人资料和邮箱之外的其他范围字段中添加任何额外的 OIDC 范围。
点击继续。
在配置提供方中,您可以配置属性映射和属性条件。如需创建属性映射,请执行以下操作。您可以提供 IdP 字段名称,也可以提供返回字符串的 CEL 格式表达式。
必需:在 OIDC 1 中,输入 IdP 中的主题;例如
assertion.sub。对于使用 OIDC 身份验证的 Microsoft Entra ID,我们建议使用以下属性映射:
google.subject=assertion.sub, google.groups=assertion.groups, google.display_name=assertion.preferred_username此示例会将 IdP 属性
subject、groups和preferred_username分别映射到 Google Cloud属性google.subject、google.groups和google.display_name。可选:如需添加其他属性映射,请执行以下操作:
- 点击添加映射。
- 在 Google n 中(其中 n 为数字),输入一个 Google Cloud支持的密钥。
- 在相应的 OIDC n 字段中,以 CEL 格式输入要映射的 IdP 特定字段的名称。
如果您选择了 Microsoft Entra ID 作为 IdP,则可以增加群组数量。
- 选择使用额外属性。
- 在额外属性颁发者 URI 字段中,输入颁发者网址。
- 在额外属性客户端 ID 字段中,输入客户端 ID。
- 在额外属性客户端密钥字段中,输入客户端密钥。
- 在额外属性类型列表中,选择额外属性的属性类型。
- 在额外属性过滤条件字段中,输入在查询 Microsoft Graph API 以获取群组时使用的过滤条件表达式。
如需创建属性条件,请执行以下操作:
- 点击添加条件。
- 在属性条件中,以 CEL 格式输入条件;例如,如需将
ipaddr属性限制为特定的 IP 范围,您可以设置条件assertion.ipaddr.startsWith('98.11.12.')。
如需启用详细审核日志记录,请在详细日志记录中点击启用属性值审核日志记录切换开关。
员工身份联合详细审核日志记录会将从 IdP 接收的信息记录到 Logging。详细的审核日志记录有助于排查员工身份池提供方配置的问题。如需了解如何通过详细审核日志记录来排查属性映射错误,请参阅一般属性映射错误。如需了解 Logging 价格,请参阅 Google Cloud Observability 价格。
如需为员工身份池提供方停用详细审核日志记录,请在运行
gcloud iam workforce-pools providers create时省略--detailed-audit-logging标志。如需停用详细审核日志记录,您还可以更新提供方。
如需创建提供方,请点击提交。
创建 SAML 2.0 员工身份池提供方
在您的 SAML IdP 中,为 Google Cloud员工身份联合注册一个新应用。
设置 SAML 断言的目标对象。它通常是 IdP 配置中的
SP Entity ID字段。您必须将其设置为以下网址:https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID设置重定向网址,也称为断言使用方服务 (ACS) 网址。如需设置重定向网址,请在 SAML IdP 中找到重定向网址字段,然后执行以下操作之一:
如需通过 Google Cloud 控制台或其他基于浏览器的登录方法来设置基于浏览器的登录,请输入以下网址:
https://auth.cloud.google/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID替换以下内容:
WORKFORCE_POOL_ID:员工身份池 IDWORKFORCE_PROVIDER_ID:您在本文档后面部分创建的员工身份池提供方的 ID。
如需通过 IdP 设置程序化登录,请输入以下网址:
localhost
如需详细了解如何配置控制台登录,请参阅设置用户对控制台的访问权限。
在 Google Cloud中,使用 IdP 的 SAML 元数据文档创建 SAML 员工身份池提供方。您可以从 IdP 下载 SAML 元数据 XML 文档。该文档必须至少包含以下内容:
- 您的 IdP 的 SAML 实体 ID。
- 您的 IdP 的单点登录网址。
- 至少一个签名公钥。 如需详细了解签名密钥,请参阅本指南后面部分的密钥要求。
gcloud
如需保存 Microsoft Entra ID 应用的 SAML 元数据,请执行以下操作:
- 前往 Microsoft Entra ID 应用。
- 点击 Single sign-on(单点登录)。
- 在 SAML Certificates(SAML 证书)部分中,下载 Federation Metadata XML(联合元数据 XML)。
- 将元数据保存为本地 XML 文件。
如需创建 SAML 员工身份池提供方,请运行以下命令:
gcloud iam workforce-pools providers create-saml WORKFORCE_PROVIDER_ID \
--workforce-pool="WORKFORCE_POOL_ID" \
--display-name="DISPLAY_NAME" \
--description="DESCRIPTION" \
--idp-metadata-path="XML_METADATA_PATH" \
--attribute-mapping="ATTRIBUTE_MAPPING" \
--attribute-condition="ATTRIBUTE_CONDITION" \
--detailed-audit-logging \
--location=global
替换以下内容:
WORKFORCE_PROVIDER_ID:提供方 ID。WORKFORCE_POOL_ID:员工身份池 ID。DISPLAY_NAME:显示名称。DESCRIPTION:说明。XML_METADATA_PATH:XML 格式的元数据文件的路径,该文件包含 SAML 身份提供方的配置元数据。ATTRIBUTE_MAPPING:属性映射,例如: 此示例会将 IdP 属性google.subject=assertion.subject, google.groups=assertion.attributes['https://example.com/aliases'], attribute.costcenter=assertion.attributes.costcenter[0]assertion.subject、assertion.attributes['https://example.com/aliases']和assertion.attributes.costcenter[0]分别映射到 Google Cloud属性google.subject、google.groups和google.costcenter。如需了解详情,请参阅属性映射。
ATTRIBUTE_CONDITION:可选的属性条件。例如,要将ipaddr属性限制为特定 IP 范围,您可以设置条件assertion.attributes.ipaddr.startsWith('98.11.12.')。此示例条件可确保只有 IP 地址以98.11.12.开头的用户才能使用此员工提供方登录。
-
员工身份联合详细审核日志记录会将从 IdP 接收的信息记录到 Logging。详细的审核日志记录有助于排查员工身份池提供方配置的问题。如需了解如何通过详细审核日志记录来排查属性映射错误,请参阅一般属性映射错误。如需了解 Logging 价格,请参阅 Google Cloud Observability 价格。
如需为员工身份池提供方停用详细审核日志记录,请在运行
gcloud iam workforce-pools providers create时省略--detailed-audit-logging标志。如需停用详细审核日志记录,您也可以更新提供方。
可选:接受来自 IdP 的加密 SAML 断言
如需让您的 SAML 2.0 IdP 能够生成员工身份联合可接受的加密 SAML 断言,请执行以下操作:
- 在员工身份联合中,执行以下操作:
- 为您的员工身份池提供方创建非对称密钥对。
- 下载包含公钥的证书文件。
- 配置您的 SAML IdP,以使用公钥加密颁发的 SAML 断言。
- 在 IdP 中,执行以下操作:
- 启用断言加密(也称为令牌加密)。
- 上传您在员工身份联合中创建的公钥。
- 确认您的 IdP 生成加密的 SAML 断言。
创建员工身份联合 SAML 断言加密密钥
本部分将指导您创建非对称密钥对,使员工身份联合能够接受加密的 SAML 断言。
Google Cloud 使用私钥来解密 IdP 发出的 SAML 断言。如需创建用于 SAML 加密的非对称密钥对,请运行以下命令。如需了解详情,请参阅支持的 SAML 加密算法。
gcloud iam workforce-pools providers keys create KEY_ID \ --workforce-pool WORKFORCE_POOL_ID \ --provider WORKFORCE_PROVIDER_ID \ --location global \ --use encryption \ --spec KEY_SPECIFICATION
请替换以下内容:
KEY_ID:您选择的键名称WORKFORCE_POOL_ID:池 IDWORKFORCE_PROVIDER_ID:员工身份池提供方 ID-
KEY_SPECIFICATION:密钥规范,可以是rsa-2048、rsa-3072和rsa-4096之一。
创建密钥对后,如需将公钥下载到证书文件中,请执行以下命令。只有员工身份联合可以访问私钥。
gcloud iam workforce-pools providers keys describe KEY_ID \ --workforce-pool WORKFORCE_POOL_ID