管理员工身份池提供方

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

准备工作

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

  2. Install the Google Cloud CLI, then initialize it by running the following command:

    gcloud init

管理池

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

创建池

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

控制台

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

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

    转到“员工身份池”

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

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

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

    3. 默认情况下已设置会话时长。如需输入自定义会话时长,请点击修改。会话时长,用于确定来自此员工池的 Google Cloud 访问令牌、控制台(联合)登录会话和 gcloud CLI 登录会话的有效时长。时长必须大于 15 分钟(900 秒)且小于 12 小时(43200 秒)。如果未设置会话时长,则默认为 1 小时(3600 秒)。

    4. 如需创建状态为已启用的池,请确保已启用池处于开启状态。

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

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:可选。会话时长,用于确定来自此员工池的 Google Cloud 访问令牌、控制台(联合)登录会话和 gcloud CLI 登录会话的有效时长。时长必须大于 15 分钟(900 秒)且小于 12 小时(43200 秒)。如果未设置会话时长,则默认为 1 小时(3600 秒)。

描述池

控制台

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

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

    转到“员工身份池”

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

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. 在表格中,选择相应池。

  3. 更新池参数。

  4. 点击保存池

gcloud

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

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

请替换以下内容:

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

删除池

控制台

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

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

    转到“员工身份池”

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

  3. 按照补充说明操作。

gcloud

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

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

WORKFORCE_POOL_ID 替换为员工池 ID。

恢复删除池

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

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

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

WORKFORCE_POOL_ID 替换为员工池 ID。

在员工池中配置提供方

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

创建 OIDC 提供方

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

控制台

代码流

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

    进入“员工身份池”

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

  3. 提供方表中,点击添加提供方

  4. 选择协议中,选择 OpenID Connect (OIDC)

  5. 创建池提供方中,执行以下操作:

    1. 名称中,输入提供方的名称。
    2. 颁发者 (网址) 中,输入颁发者 URI。OIDC 颁发者 URI 必须采用有效的 URI 格式,并以 https 开头;例如 https://example.com/oidc
    3. 输入客户端 ID,即注册到 OIDC IdP 的 OIDC 客户端 ID,该 ID 必须与 IdP 颁发的 JWT 的 aud 声明相匹配。
    4. 如需创建状态为已启用的提供方,请确保已启用提供方处于开启状态。
    5. 点击继续
  6. 响应类型中,执行以下操作。响应类型仅用于基于网络的单点登录流程。

    1. 响应类型中,选择代码
    2. 客户端密钥中,输入 IdP 提供的客户端密钥。
    3. 断言声明行为中,选择以下任一选项:

      • 用户信息和 ID 令牌
      • 仅 ID 令牌
    4. 点击继续

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

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

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

      1. 点击添加映射
      2. Google n(其中 n 为数字)中,输入一个 Google Cloud 支持的密钥
      3. 在相应的 OIDC n 字段中,以 CEL 格式输入要映射的 IdP 特定字段的名称。
    3. 如需创建属性条件,请执行以下操作:

      1. 点击添加条件
      2. 属性条件中,以 CEL 格式输入条件;例如 assertion.role == 'gcp-users'。本示例条件可确保仅具有 gcp-users 角色的用户才能使用此提供方登录。
  8. 如需创建提供方,请点击提交

    隐式流

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

      进入“员工身份池”

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

    3. 提供方表中,点击添加提供方

    4. 选择协议中,选择 OpenID Connect (OIDC)

    5. 创建池提供方中,执行以下操作:

      1. 名称中,输入提供方的名称。
      2. 颁发者 (网址) 中,输入颁发者 URI。OIDC 颁发者 URI 必须采用有效的 URI 格式,并以 https 开头;例如 https://example.com/oidc
      3. 输入客户端 ID,即注册到 OIDC IdP 的 OIDC 客户端 ID,该 ID 必须与 IdP 颁发的 JWT 的 aud 声明相匹配。
      4. 如需创建状态为已启用的提供方,请确保已启用提供方处于开启状态。
      5. 点击继续
    6. 响应类型中,执行以下操作。响应类型仅用于基于网络的单点登录流程。

      1. 响应类型中,选择 ID 令牌
      2. 点击继续
    7. 配置提供方中,您可以配置属性映射和属性条件。如需创建属性映射,请执行以下操作。您可以提供 IdP 字段名称,也可以提供返回字符串的 CEL 格式表达式。

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

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

        1. 点击添加映射
        2. Google n(其中 n 为数字)中,输入一个 Google Cloud 支持的密钥
        3. 在相应的 OIDC n 字段中,以 CEL 格式输入要映射的 IdP 特定字段的名称。
      3. 如需创建属性条件,请执行以下操作:

        1. 点击添加条件
        2. 属性条件中,以 CEL 格式输入条件;例如 assertion.role == 'gcp-users'。本示例条件可确保仅具有 gcp-users 角色的用户才能使用此提供方登录。

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

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" \ --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.sub,
    google.groups=assertion.group1,
    attribute.costcenter=assertion.costcenter
    此示例会将 OIDC 断言中的 IdP 属性 subjectgroup1costcenter 分别映射到 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
在命令响应中,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" \
    --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.sub,
    google.groups=assertion.group1,
    attribute.costcenter=assertion.costcenter
    此示例会将 OIDC 断言中的 IdP 属性 subjectgroup1costcenter 分别映射到 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
在命令响应中,POOL_RESOURCE_NAME 是池的名称;例如 locations/global/workforcePools/enterprise-example-organization-employees

创建 SAML 提供方

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

控制台

如需使用 Google Cloud 控制台配置 SAML 提供方,请执行以下操作:

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

    转到“员工身份池”

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

  3. 提供方表中,点击添加提供方

  4. 选择协议中,选择 SAML

  5. 创建池提供方中,执行以下操作:

    1. 名称中,输入提供方的名称。

    2. 可选:在说明中,输入提供方的说明。

    3. IDP 元数据文件 (XML) 中,选择您在本指南前面部分生成的元数据 XML 文件。

    4. 确保已启用提供方处于启用状态。

    5. 点击继续

  6. 配置提供方中,执行以下操作:

    1. 属性映射中,输入 google.subject 的 CEL 表达式。

    2. 可选:如需输入其他映射,请点击添加映射,然后输入其他映射,例如:

      google.subject=assertion.subject,
      google.groups=assertion.attributes['https://example.com/aliases'],
      attribute.costcenter=assertion.attributes.costcenter[0]
      此示例将 IdP 属性 assertion.subjectassertion.attributes['https://example.com/aliases']assertion.attributes.costcenter[0] 分别映射到 Google Cloud 属性 google.subjectgoogle.groupsgoogle.costcenter

    3. 可选:如需添加属性条件,请点击添加条件,然后输入表示属性条件的 CEL 表达式。 例如,要将 ipaddr 属性限制为特定 IP 范围,您可以设置条件 assertion.attributes.ipaddr.startsWith('98.11.12.')。此示例条件可确保只有 IP 地址以 98.11.12. 开头的用户才能使用此员工提供方登录。

    4. 点击继续

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

gcloud

如需创建提供方,请运行以下命令:

gcloud iam workforce-pools providers create-saml WORKFORCE_PROVIDER_ID \
    --workforce-pool="WORKFORCE_POOL_ID" \
    --attribute-mapping="ATTRIBUTE_MAPPING" \
    --attribute-condition="ATTRIBUTE_CONDITION" \
    --idp-metadata-path="XML_METADATA_PATH" \
    --location="global"

请替换以下内容:

  • WORKFORCE_PROVIDER_ID:员工提供方 ID
  • WORKFORCE_POOL_ID:员工池 ID
  • ATTRIBUTE_MAPPING属性映射;例如,要映射主题,属性映射如下所示:

    
    google.subject=assertion.subject,
    google.groups=assertion.attributes['https://example.com/aliases'],
    attribute.department=assertion.attributes.department[0]
    
  • ATTRIBUTE_CONDITION:可选属性条件;例如 assertion.subject.endsWith("@example.com")

  • XML_METADATA_PATH:IdP 中的 XML 格式的元数据文件的路径

前缀 gcp- 已被保留,不能在员工身份池或员工身份池提供方 ID 中使用。

此命令将 SAML 断言中的主体和部门分别分配给 google.subjectattribute.department 属性。此外,该属性条件可确保只有主体以 @example.com 结尾的用户才能使用此员工提供方登录。

描述提供方

控制台

要查看提供方,请执行以下操作:

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

进入“员工身份池”

  1. 在表中,选择要查看其提供方的池。

  2. 提供方表中,选择提供方。

gcloud

如需描述提供方,请运行以下命令:

gcloud iam workforce-pools providers describe PROVIDER_ID \
    --workforce-pool=WORKFORCE_POOL_ID \
    --location=global

请替换以下内容:

  • PROVIDER_ID:提供方 ID
  • WORKFORCE_POOL_ID:员工池 ID

列出提供商

控制台

要查看提供方,请执行以下操作:

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

进入“员工身份池”

  1. 在表中,选择要为其列出提供方的池。

  2. 提供方表中,您可以看到提供方列表。

gcloud

如需列出提供方,请执行以下命令:

gcloud iam workforce-pools providers list \
    --workforce-pool=WORKFORCE_POOL_ID \
    --location=global

WORKFORCE_POOL_ID 替换为员工池 ID。

更新提供方

控制台

要查看提供方,请执行以下操作:

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

进入“员工身份池”

  1. 在表中,选择要查看其提供方的池。

  2. 提供方表中,点击 修改

  3. 更新提供方。

  4. 要保存更新后的提供方,请点击保存

gcloud

如需在创建 OIDC 提供方后对其进行更新,请执行以下命令:

gcloud iam workforce-pools providers update-oidc PROVIDER_ID \
    --workforce-pool=WORKFORCE_POOL_ID \
    --description="DESCRIPTION" \
    --location=global

请替换以下内容:

  • PROVIDER_ID:提供方 ID
  • WORKFORCE_POOL_ID:员工池 ID
  • DESCRIPTION:说明

删除提供方

如需删除提供方,请执行以下命令:

gcloud iam workforce-pools providers delete PROVIDER_ID \
    --workforce-pool=WORKFORCE_POOL_ID \
    --location=global

请替换以下内容:

  • PROVIDER_ID:提供方 ID
  • WORKFORCE_POOL_ID:员工池 ID

恢复删除提供方

如需恢复在过去 30 天内删除的提供方,请执行以下命令:

gcloud iam workforce-pools providers undelete PROVIDER_ID \
    --workforce-pool=WORKFORCE_POOL_ID \
    --location=global

请替换以下内容:

  • PROVIDER_ID:提供方 ID
  • WORKFORCE_POOL_ID:员工池 ID

管理 OIDC JWK

本部分介绍如何管理员工池提供方中的 OIDC JWK。

创建提供方并上传 OIDC JWK

如需创建 OIDC JWK,请参阅 JWT、JWS、JWE、JWK 和 JWA 实现

如需在创建员工池提供方时上传 OIDC JWK 文件,请使用 --jwk-json-path="JWK_JSON_PATH" 运行 gcloud iam admins-pools provider create-oidc 命令。将 JWK_JSON_PATH 替换为 JWK JSON 文件的路径。

此操作会从文件中上传密钥。

更新 OIDC JWK

如需更新 OIDC JWK,请使用 --jwk-json-path="JWK_JSON_PATH" 运行 gcloud iam workforce-pools providers update-oidc 命令。 将 JWK_JSON_PATH 替换为 JWK JSON 文件的路径。

此操作会将所有现有的上传密钥替换为文件中的密钥。

删除所有上传的 OIDC JWK

要删除所有上传的 OIDC JWK 并改用颁发者 URI 提取密钥,请使用 --jwk-json-path="JWK_JSON_PATH" 运行 gcloud iam admins-pools provider update-oidc 命令。 将 JWK_JSON_PATH 替换为空文件的路径。使用 --issuer-uri 标志设置颁发者 URI。

此操作会删除所有现有上传密钥。

后续步骤