管理员工身份池提供方

本指南介绍如何使用员工身份联合执行常见操作。如需设置员工身份联合,请参阅以下指南:

准备工作

  1. 您必须设置 Google Cloud 组织。

  2. 安装 Google Cloud CLI。 安装完成后,运行以下命令来初始化 Google Cloud CLI:

    gcloud init

    如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI

管理池

本部分介绍如何管理员工身份池。

创建池

如需创建员工池,请执行以下命令:

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 秒)之间。

控制台

如需创建员工身份池,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往员工身份池页面:

    转到“员工身份池”

  2. 为员工身份池选择组织。员工身份池可在组织中的所有项目和文件夹中使用。

  3. 点击创建池,然后执行以下操作:

    1. 名称字段中,输入池的显示名称。池 ID 是根据您输入的名称自动派生的,并显示在名称字段下方。您可以点击池 ID 旁边的修改来更新池 ID。

    2. 可选:在说明中,输入池的说明。

    3. 如需创建员工身份池,请点击下一步

员工身份池的会话时长默认为 1 小时(3600 秒)。会话时长用于确定来自此员工池的 Google Cloud 访问令牌以及控制台(联合)和 gcloud CLI 登录会话的有效时长。创建池后,您可以更新池以设置自定义会话时长。会话时长必须介于 15 分钟(900 秒)到 12 小时(43,200 秒)之间。

描述池

gcloud

如需使用 gcloud CLI 描述特定的员工池,请执行以下命令:

gcloud iam workforce-pools describe WORKFORCE_POOL_ID \
    --location=global

WORKFORCE_POOL_ID 替换为您在创建员工池时选择的池 ID。

控制台

如需使用 Google Cloud 控制台描述特定员工池,请执行以下操作:

  1. 进入员工身份池页面。

    转到“员工身份池”

  2. 员工池中,选择相应池

列出池

gcloud

如需列出组织中的员工池,请执行以下命令:

gcloud iam workforce-pools list \
    --organization=ORGANIZATION_ID \
    --location=global

ORGANIZATION_ID 替换为您的组织 ID。

控制台

如需使用 Google Cloud 控制台列出员工池,请执行以下操作:

  1. 进入员工身份池页面。

    转到“员工身份池”

  2. 在表格中,查看池列表。

更新池

gcloud

如需更新特定的员工池,请执行以下命令:

gcloud iam workforce-pools update WORKFORCE_POOL_ID \
    --description=DESCRIPTION \
    --location=global

替换以下内容:

  • WORKFORCE_POOL_ID:员工池 ID
  • DESCRIPTION:池的说明

控制台

如需使用 Google Cloud 控制台更新特定员工池,请执行以下操作:

  1. 进入员工身份池页面。

    转到“员工身份池”

  2. 在表格中,选择相应池。

  3. 更新池参数。

  4. 点击保存池

删除池

gcloud

如需删除员工身份池,请执行以下命令:

gcloud iam workforce-pools delete WORKFORCE_POOL_ID \
    --location=global

WORKFORCE_POOL_ID 替换为员工池 ID。

控制台

如需使用 Google Cloud 控制台删除特定员工池,请执行以下操作:

  1. 进入员工身份池页面。

    转到“员工身份池”

  2. 员工池中,针对要删除的池点击删除

  3. 按照补充说明操作。

恢复删除池

您可以恢复在过去 30 天内删除的员工身份池。

如需恢复删除的池,请执行以下命令:

gcloud iam workforce-pools undelete WORKFORCE_POOL_ID \
    --location=global

WORKFORCE_POOL_ID 替换为员工池 ID。

在员工池中配置提供方

本部分介绍如何使用 gcloud 命令配置员工身份池提供方:

创建 OIDC 提供方

本部分介绍如何为 OIDC IdP 创建员工身份池提供方。

gcloud

代码流

如需创建使用授权代码流程进行 Web 登录的 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属性映射。以下是属性映射示例:
    google.subject=assertion.oid
    google.groups=assertion.groups,
    attribute.costcenter=assertion.costcenter
    此示例会将 OIDC 断言中的 IdP 属性 subjectgroupscostcenter 分别映射到 google.subjectgoogle.groupsattribute.costcenter 属性。
  • ATTRIBUTE_CONDITION属性条件;例如 assertion.role == 'gcp-users'。本示例条件可确保仅具有 gcp-users 角色的用户才能使用此提供方登录。
  • 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 标志。如需停用详细审核日志记录,您也可以更新提供方

在命令响应中,POOL_RESOURCE_NAME 是池的名称;例如 locations/global/workforcePools/enterprise-example-organization-employees

隐式流

如需创建使用隐式流进行 Web 登录的 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" \
    --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属性映射。以下是属性映射示例:
    google.subject=assertion.oid
    google.groups=assertion.groups,
    attribute.costcenter=assertion.costcenter
    此示例会将 OIDC 断言中的 IdP 属性 subjectgroupscostcenter 分别映射到 google.subjectgoogle.groupsattribute.costcenter 属性。
  • ATTRIBUTE_CONDITION属性条件;例如 assertion.role == 'gcp-users'。本示例条件可确保仅具有 gcp-users 角色的用户才能使用此提供方登录。
  • 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 标志。如需停用详细审核日志记录,您也可以更新提供方

在命令响应中,POOL_RESOURCE_NAME 是池的名称;例如 locations/global/workforcePools/enterprise-example-organization-employees

控制台

代码流

  1. 在 Google Cloud 控制台中,前往员工身份池页面:

    进入“员工身份池”

  2. 员工身份池表中,选择要为其创建提供方的池。

  3. 提供方部分中,点击 添加提供方

  4. 选择提供方供应商列表中,选择您的 IdP。

    如果您的 IdP 未列出,请选择通用身份提供方

  5. 选择身份验证协议中,选择 OpenID Connect (OIDC)

  6. 创建提供方部分中,执行以下操作:

    1. 名称中,输入提供方的名称。
    2. 说明中,输入提供方的说明。
    3. 颁发者 (网址) 中,输入颁发者 URI。OIDC 颁发者 URI 必须采用有效的 URI 格式,并以 https 开头;例如 https://example.com/oidc
    4. 客户端 ID 中,输入注册到 OIDC IdP 的 OIDC 客户端 ID,该 ID 必须与 IdP 颁发的 JWT 的 aud 声明相匹配。
    5. 如需创建状态为已启用的提供方,请确保启用提供方处于开启状态。

    6. 点击继续
  7. 与 IdP 分享提供方信息部分,复制相应网址。 在您的 IdP 中,将此网址配置为重定向 URI,以便 IdP 知晓在您登录后应将断言令牌发送到何处。

  8. 点击继续

  9. 配置 OIDC Web 登录部分中,执行以下操作:

    1. 流程类型列表中,选择代码
    2. 断言声明行为列表中,选择以下任一选项:

      • 用户信息和 ID 令牌
      • 仅 ID 令牌
    3. 客户端密钥字段中,输入 IdP 提供的客户端密钥。

    4. 可选:如果您选择 Okta 作为 IdP,请在 OpenID、个人资料和邮箱之外的其他范围字段中添加任何额外的 OIDC 范围。

  10. 点击继续

  11. 配置提供方中,您可以配置属性映射和属性条件。如需创建属性映射,请执行以下操作。您可以提供 IdP 字段名称,也可以提供返回字符串的 CEL 格式表达式。

    1. 必需:在 OIDC 1 中,输入 IdP 中的主题,例如 assertion.sub

    2. 可选:如需添加其他属性映射,请执行以下操作:

      1. 点击添加映射
      2. Google n 中(其中 n 为数字),输入一个 Google Cloud支持的密钥
      3. 在相应的 OIDC n 字段中,以 CEL 格式输入要映射的 IdP 特定字段的名称。
    3. 如果您选择 Microsoft Entra ID 作为 IdP,则可以增加群组数量。

      1. 选择使用额外属性
      2. 额外属性颁发者 URI 字段中,输入颁发者网址。
      3. 额外属性客户端 ID 字段中,输入客户端 ID。
      4. 额外属性客户端密钥字段中,输入客户端密钥。
      5. 额外属性类型列表中,选择额外属性的属性类型。
      6. 额外属性过滤条件字段中,输入在查询 Microsoft Graph API 以获取群组时使用的过滤表达式。
    4. 如需创建属性条件,请执行以下操作:

      1. 点击添加条件
      2. 属性条件字段中,以 CEL 格式输入条件;例如 assertion.role == 'gcp-users'。本示例条件可确保仅具有 gcp-users 角色的用户才能使用此提供方登录。
    5. 如需启用详细审核日志记录,请在详细日志记录中点击启用属性值审核日志记录切换开关。

      员工身份联合详细审核日志记录会将从 IdP 接收的信息记录到 Logging。详细的审核日志记录有助于排查员工身份池提供方配置的问题。如需了解如何通过详细审核日志记录来排查属性映射错误,请参阅一般属性映射错误。如需了解 Logging 价格,请参阅 Google Cloud Observability 价格

      如需为员工身份池提供方停用详细审核日志记录,请在运行 gcloud iam workforce-pools providers create 时省略 --detailed-audit-logging 标志。如需停用详细审核日志记录,您也可以更新提供方

  12. 如需创建提供方,请点击提交

隐式流

  1. 在 Google Cloud 控制台中,前往员工身份池页面:

    进入“员工身份池”

  2. 员工身份池表中,选择要为其创建提供方的池。

  3. 提供方部分,点击 添加提供方

  4. 选择提供方供应商列表中,选择您的 IdP。

    如果您的 IdP 未列出,请选择通用身份提供方

  5. 选择身份验证协议中,选择 OpenID Connect (OIDC)

  6. 创建提供方部分中,执行以下操作:

    1. 名称中,输入提供方的名称。
    2. 说明中,输入提供方的说明。
    3. 颁发者 (网址) 中,输入颁发者 URI。OIDC 颁发者 URI 必须采用有效的 URI 格式,并以 https 开头;例如 https://example.com/oidc
    4. 客户端 ID 中,输入注册到 OIDC IdP 的 OIDC 客户端 ID,该 ID 必须与 IdP 颁发的 JWT 的 aud 声明相匹配。
    5. 如需创建状态为已启用的提供方,请确保启用提供方处于开启状态。
    6. 点击继续
  7. 与 IdP 分享提供方信息部分,复制相应网址。 在您的 IdP 中,将此网址配置为重定向 URI,以便 IdP 知晓在您登录后应将断言令牌发送到何处。

  8. 点击继续

  9. 配置 OIDC Web 登录部分中,执行以下操作:

    1. 流程类型列表中,选择 ID 令牌

    2. 断言声明行为列表中,ID 令牌处于选中状态。