配置第三方身份提供方

支持以下语言:

您可以使用 Cloud Identity、Google Workspace 或第三方身份 提供商(例如 Okta 或 Azure AD)来管理用户、群组和身份验证。

本页介绍了如何使用第三方身份提供方,具体方法是配置 员工身份联合。如需了解如何使用 Cloud Identity 或 Google Workspace, 请参阅配置 Google Cloud 身份提供方

借助 Google 的员工身份联合,您可以 向本地或多云工作负载授予对 Google Cloud 的访问权限 而无需使用服务账号密钥。您可以使用员工身份联合 与任何支持 OpenID Connect (OIDC) 的第三方身份提供方 (IdP) 共享; 包括 Microsoft Azure、Okta 或 SAML 2.0

Google 安全运营团队要求您使用 Google 的员工身份联合作为 SSO 代理,以实现以下目标:

  • 有 FedRAMP High(或更高级别)合规性要求的客户。
  • 客户在 Google Security Operations 中访问由 Google Cloud 启用的任何企业级控件,包括使用 Identity and Access Management (IAM) 实现的数据和功能基于角色的访问权限控制 (RBAC)。
  • 使用自助式凭据管理以编程方式访问 Chronicle API 的客户。

Google Security Operations 支持服务提供商启动(SP 启动)的 SAML SSO, 用户。借助此功能,用户可以直接导航到 Google Security Operations。 Google Security Operations 通过 Google Cloud Identity and Access Management (IAM) 发出请求 员工身份联合 第三方身份提供商 (IdP)。

IdP 对用户身份进行身份验证后,用户将返回 使用身份验证断言的 Google Security Operations。Google Cloud 员工身份 联合在身份验证流程中充当中间方。

Google Security Operations 和 Google Cloud IAM 员工身份之间的通信
和 IdP

Google Security Operations 和 IAM 员工身份之间的通信 和 IdP

概括来讲,沟通方式如下:

  1. 用户前往 Google Security Operations。
  2. Google Security Operations 会在 Google Cloud 员工身份池中查找 IdP 信息。
  3. 系统会向 IdP 发送请求。
  4. 系统会将 SAML 断言发送到 Google Cloud 员工身份池。
  5. 如果身份验证成功,Google Security Operations 仅收到 SAML 在员工身份池中配置员工提供方时定义的特性。

Google Security Operations 管理员会在其身份提供方中创建群组,配置 SAML 应用以在断言中传递群组成员资格信息,然后 将用户和群组与 Google Security Operations 中的 IAM 预定义角色相关联 或他们创建的自定义角色

不支持 IdP 发起的登录(从 IdP 信息中心发起登录)。 如果您的组织需要此功能,请与您的 Google Security Operations 代表联系,请求此功能。

本文档概要介绍了通过 使用 Google Cloud 员工身份联合的第三方身份提供方 (IdP)。 完成本文档中的步骤后,您将能够使用第三方 IdP 访问 Google Security Operations 通过员工身份联合,使用 SAML SSO 管理对 Google Security Operations 的访问权限。

准备工作

以下步骤介绍了如何使用 gcloud 执行配置 命令。如果可以在 Google Cloud 控制台中执行某个步骤,系统会提供指向相关 IAM 文档的链接。

规划实施

以下部分介绍了您必须做出的决定以及 请在执行本文档中的步骤之前定义它们

定义员工身份池和员工提供方

在此过程中,您将配置 Google Cloud 员工身份 身份验证流程的中间方。为此,您需要 创建以下 Google Cloud 资源:

  • 员工池: 借助员工身份池,您可以向员工(例如员工)授予 Google Security Operations 的访问权限。
  • 员工提供方: 员工提供方是员工身份池的子资源。它存储有关单个 IdP 的详细信息。

员工身份池、员工提供方和 Google Security Operations 之间的关系 如下例所示:

  • 员工身份池在组织级别定义。
  • 每个 Google 安全运营实例都配置了员工身份池并与其相关联。
  • 员工身份池可以有多个员工提供方。
  • 每个员工提供方都会将第三方 IdP 与员工身份池集成。
  • 您通过这些步骤创建的员工身份池必须专用于 Google SecOps。 虽然您可以出于其他目的管理多个员工身份池, 无法共享为 Google SecOps 创建的员工身份池。
  • 我们建议您在包含已绑定到 Google SecOps 的项目的 Google Cloud 组织中创建员工身份池。

如果您预定义了有关 员工身份池和员工提供方。您在配置产品时 IdP SAML 应用和员工身份联合。

为以下标识符选择值:

  • 员工池 ID (WORKFORCE_POOL_ID):选择一个指示 员工身份池的范围或用途。该值必须满足以下要求:
    • 必须是全局唯一的。
    • 只能使用小写字符 [a-z]、数字 [0-9] 和短划线 [-]。
    • 必须以小写字符 [a-z] 开头。
    • 必须以小写字符 [a-z] 或数字 [0-9] 结尾。
    • 长度介于 4 到 61 个字符之间。
  • 员工池显示名称 (WORKFORCE_POOL_DISPLAY_NAME):定义一个简单易懂的名称。 。
  • 员工池说明 (WORKFORCE_POOL_DESCRIPTION):定义详细的 员工身份池的说明。
  • 员工提供方 ID (WORKFORCE_PROVIDER_ID):选择一个值来指明 代表的 IdP该值必须满足以下要求:
    • 只能使用小写字符 [a-z]、数字 [0-9] 和短划线 [-]。
    • 长度介于 4 到 32 个字符之间。
  • 员工提供方显示名称 (WORKFORCE_PROVIDER_DISPLAY_NAME):定义 员工提供方的易记名称。其长度必须少于 32 个字符。
  • 员工提供方说明 (WORKFORCE_PROVIDER_DESCRIPTION):定义详细的 员工提供方的说明。

在 IdP 中定义用户属性和群组

在 IdP 中创建 SAML 应用之前,请确定哪些用户属性 和群组来配置对 Google Security Operations 功能的访问权限。 如需了解详情,请参阅使用 IAM 配置功能访问权限控制IAM 中的 Google Security Operations 权限

您在此流程的以下阶段中需要用到这些信息:

  • 在配置 SAML 应用时,您需要创建规划期间定义的群组。您需要将 IdP SAML 应用配置为在 断言。

  • 创建员工提供方时,您需要将断言属性和群组映射到 Google Cloud 属性。 此信息作为用户身份的一部分在断言声明中发送。

  • 在 Google Security Operations 中设置基于角色的访问权限控制时,您可以使用 用户属性和群组信息,用于配置对 Google Security Operations 功能的访问权限。

    Google Security Operations 提供多种预定义角色,每个角色都允许访问 特定功能您可以将 IdP SAML 应用中定义的群组映射到 这些预定义角色

请务必为配置哪些用户和群组可以访问 SOAR 相关功能的管理员创建 IdP 群组。在初始配置流程中,您需要提供此群组名称,以便此群组中的用户能够设置对 SOAR 相关功能的访问权限控制

配置 IdP

本部分仅介绍 IdP SAML 应用执行身份验证所需的特定配置, 与 Google Cloud 员工身份联合和 Google Security Operations 集成。

  1. 在 IdP 中创建新的 SAML 应用。

  2. 使用以下断言消费者服务 (ACS) 网址配置应用,该网址也称为单点登录网址,具体取决于服务提供商。

    https://auth.backstory.chronicle.security/signin-callback/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
    

    替换以下内容:

    • WORKFORCE_POOL_ID:您定义的标识符 。
    • WORKFORCE_PROVIDER_ID:您要创建的标识符 为员工提供方定义的。

      如需了解这些值的说明,请参阅规划实现

  3. 使用以下实体 ID(也称为 SP 实体 ID)配置应用。

    https://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/providers/WORKFORCE_PROVIDER_ID
    

    替换以下内容:

    • WORKFORCE_POOL_ID:您为员工身份池定义的标识符。
    • WORKFORCE_PROVIDER_ID:您为员工提供方定义的标识符。
  4. 在 IdP 中配置名称标识符,以确保 SAML 响应中返回 NameID 字段。

    您可以将此值设为支持您组织政策的值,例如电子邮件地址或用户名。如需了解如何配置此值,请参阅您的 IdP 文档。如需详细了解此要求,请参阅排查员工身份联合问题

  5. (可选)在 SAML 应用中创建群组属性。 您在规划 IdP 实现时定义了这些值。

  6. 下载应用元数据 XML 文件。在下一部分中,您将使用 Cloud Shell 将此文件从本地系统上传到您的 Google Cloud 主目录。

配置员工身份联合

本部分仅介绍配置员工所需的具体步骤。 IdP SAML 应用的身份联合。 如需详细了解如何管理员工身份池,请参阅 请参阅管理员工身份池提供方

  1. 以拥有所需权限的用户身份打开 Google Cloud 控制台, Google Security Operations 绑定项目。您之前确定或创建了此用户。 请参阅准备工作部分。

  2. 启动 Cloud Shell 会话

  3. 设置用于结算和收费的 Google Cloud 项目 使用 gcloud CLI 执行的操作。请使用以下 gcloud 命令的示例:

    gcloud config set billing/quota_project PROJECT_ID
    

    PROJECT_ID 替换为 Google Security Operations 绑定的项目 ID 您在为 Google Security Operations 配置 Google Cloud 项目中创建的项目。 请参阅创建和管理项目 了解用于标识项目的字段。

    如需了解配额,请参阅以下文档:

    如果遇到错误,请参阅配额错误

创建和配置员工身份池

您可以配置员工身份池以与外部 身份提供方 (IdP) 或者 Google Workspace 或 Cloud Identity。

  1. 创建员工身份池。

    • 为第三方 IdP 创建员工身份池:

      以以下 gcloud 命令为例:

      gcloud iam workforce-pools create WORKFORCE_POOL_ID\
        --location="global" \
        --organization="ORGANIZATION_ID" \
        --description="WORKFORCE_POOL_DESCRIPTION" \
        --display-name="WORKFORCE_POOL_DISPLAY_NAME"
      

      替换以下内容:

      • WORKFORCE_POOL_ID:您为员工身份池定义的标识符。
      • ORGANIZATION_ID:数字形式的组织 ID。
      • WORKFORCE_POOL_DESCRIPTION:指定说明 员工身份池的权限。
      • WORKFORCE_POOL_DISPLAY_NAME:指定 员工身份池的简单易记的名称。

      如需使用 Google Cloud 控制台执行此配置,请执行以下操作: 请参阅创建池

      如果命令成功,请继续执行下一步。如果命令失败,请考虑您的环境是否存在以下情况:

      • 您想使用 Google Workspace 或 Cloud Identity 登录 Google SecOps
      • 您看到错误消息“对于贵组织,员工身份联合尚不可用,请与 Google Cloud 代表联系”

      如果这些情况适用,请添加 --allowed-services domain=backstory.chronicle.security--disable-programmatic-signin 附加到命令:

      gcloud iam workforce-pools create WORKFORCE_POOL_ID\
            --location="global" \
            --organization="ORGANIZATION_ID" \
            --description="WORKFORCE_POOL_DESCRIPTION" \
            --display-name="WORKFORCE_POOL_DISPLAY_NAME" \
            --allowed-services domain=backstory.chronicle.security \
            --disable-programmatic-signin
      

      此命令会创建一个无法用于登录的员工池 但您必须使用这些标志来应对这些情况。

  2. 如果命令行中提示您启用 Chronicle API,请输入 Yes

创建员工身份提供方

  1. 点击以下链接,将 SAML 应用元数据文件上传到您的 Cloud Shell 主目录: 更多 >。文件只能 上传到您的主目录有关传输文件的更多选项 请参阅在 Cloud Shell 中上传和下载文件和文件夹

  2. 记下您上传的 SAML 应用元数据 XML 文件的目录路径 Cloud Shell 中运行命令的实际效果。下一步中会用到此路径。

  3. 创建员工身份池提供方并指定 IdP 详细信息。

    使用以下 gcloud 命令作为示例:

    gcloud iam workforce-pools providers create-saml WORKFORCE_PROVIDER_ID \
      --workforce-pool="WORKFORCE_POOL_ID" \
      --location="global" \
      --display-name="WORKFORCE_PROVIDER_DISPLAY_NAME" \
      --description="WORKFORCE_PROVIDER_DESCRIPTION" \
      --idp-metadata-path=PATH_TO_METADATA_XML \
      --attribute-mapping="ATTRIBUTE_MAPPINGS"
    

    如需详细了解这些值,请参阅规划实现

    替换以下内容:

    • WORKFORCE_PROVIDER_ID:您为员工提供方 ID 定义的值。
    • WORKFORCE_POOL_ID:您为员工身份池 ID 定义的值。
    • WORKFORCE_PROVIDER_DISPLAY_NAME:简单易记的名称 。其长度必须少于 32 个字符。
    • WORKFORCE_PROVIDER_DESCRIPTION:员工提供方的说明。
    • PATH_TO_METADATA_XML:您使用 Cloud Shell 上传的应用元数据 XML 文件的 Cloud Shell 目录位置,例如:/path/to/sso_metadata.xml
    • ATTRIBUTE_MAPPINGS:关于如何将断言属性映射到 Google Cloud 属性的定义。系统将使用通用表达式语言来解释这些映射。例如:

      google.subject=assertion.subject,google.display_name=assertion.attributes.name[0],google.groups=assertion.attributes.groups

      上面的示例映射了以下属性:

      • assertion.subject 转换为 google.subject。这是最低要求。
      • assertion.attributes.name[0] 映射到 google.display_name
      • assertion.attributes.groups 设置为 google.groups 属性。

      如果您要为 Google Security Operations(包括 Google Security Operations SIEM 和 Google Security Operations SOAR,您还必须映射以下 Google Security Operations SOAR 所需的属性:

      • attribute.first_name
      • attribute.last_name
      • attribute.user_email
      • google.groups

      详细了解如何为 Google Security Operations SOAR 配置和映射用户

      默认情况下,Google 安全运营会从以下不区分大小写的断言属性名称中读取组信息:_assertion.attributes.groups__assertion.attributes.idpGroup__assertion.attributes.memberOf_

      配置 SAML 应用以传递群组成员资格信息时 在断言中,将组属性名称设置为 _group__idpGroup__memberOf_

      在示例命令中,您可以将 assertion.attributes.groups 替换为 assertion.attributes.idpGroupassertion.attributes.memberOf, 表示您在 IdP 中配置的群组属性的名称 SAML 应用,且断言中包含群组成员资格信息。

      以下示例将多个组映射到 google.groups 属性:

      google.groups="(has(assertion.attributes.idpGroup) ? assertion.attributes.idpGroup : []) + (has(assertion.attributes.groups) ? assertion.attributes.groups : []) + (has(assertion.attributes.memberof) ? assertion.attributes.memberof : [])"

      以下示例将包含特殊字符的组 http://schemas.xmlsoap.org/ws/2005/05/identity/claims/group 映射到 google.groups

      google.groups="assertion.attributes['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/group']"

      如需详细了解如何映射属性,请参阅属性映射

      如需使用 Google Cloud 控制台执行此配置,请参阅创建 SAML 提供方

授予一个角色以启用 Google Security Operations 的登录功能

以下步骤介绍了如何使用 IAM 授予特定角色,以便用户可以登录 Google 安全运营中心。使用您之前创建的已与 Google Security Operations 绑定的 Google Cloud 项目执行配置。

此示例使用 gcloud 命令。如需使用 Google Cloud 控制台,请参阅授予单个角色

  1. 向应有权访问 Google Security Operations 应用的用户或群组授予 Chronicle API Viewer (roles/chronicle.viewer) 角色。

    以下示例会向受管理的身份授予 Chronicle API Viewer 角色 使用您之前创建的员工身份池和员工提供方。

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role roles/chronicle.viewer \
      --member "principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/*"
    

    替换以下内容:

    如需向特定群组授予 Chronicle API Viewer 角色,请运行以下命令:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --role roles/chronicle.viewer \
      --member "principalSet://iam.googleapis.com/locations/global/workforcePools/WORKFORCE_POOL_ID/group/GROUP_ID"
    

    替换 GROUP_ID:映射的 google.groups 声明中的一个群组。

  2. 配置其他 IAM 政策以满足您的组织要求。

验证或配置 Google Security Operations 功能访问权限控制

如果您配置了员工身份联合,并且已映射属性或群组 google.groups 属性,此信息会传递给 Google Security Operations 以便您可以为 Google Security Operations 功能配置基于角色的访问权限控制 (RBAC)。

如果 Google Security Operations 实例已有 RBAC 配置,请验证 原始配置可按预期发挥作用

如果您之前没有配置过访问权限控制,请参阅 使用 IAM 配置功能访问权限控制 了解如何控制对功能的访问权限。

修改员工身份联合配置

如果您需要更新员工身份池或员工提供方, 请参阅管理员工身份池提供方 了解如何更新配置。

创建 SAML 员工池提供方中的密钥管理部分 介绍了如何更新 IdP 签名密钥,以及如何更新员工提供方 和最新的应用元数据 XML 文件。

以下是一个用于更新员工提供方配置的 gcloud 命令示例:

gcloud iam workforce-pools providers update-saml WORKFORCE_PROVIDER_ID \
  --workforce-pool=WORKFORCE_POOL_ID \
  --location="global" \
  --display-name="WORKFORCE_PROVIDER_DISPLAY_NAME" \
  --description="WORKFORCE_PROVIDER_DESCRIPTION" \
  --idp-metadata-path=PATH_TO_METADATA_XML \
  --attribute-mapping="ATTRIBUTE_MAPPINGS"

替换以下内容:

  • WORKFORCE_PROVIDER_ID:您为员工提供方 ID 定义的值。
  • WORKFORCE_POOL_ID:您为员工身份池 ID 定义的值。
  • WORKFORCE_PROVIDER_DISPLAY_NAME:简单易记的名称 。该值必须少于 32 个字符。
  • WORKFORCE_PROVIDER_DESCRIPTION:员工提供方的说明。
  • PATH_TO_METADATA_XML:更新后的应用元数据 XML 文件的位置。 例如 /path/to/sso_metadata_updated.xml
  • ATTRIBUTE_MAPPINGS:映射到 Google Cloud 属性的断言属性。例如:

    google.subject=assertion.subject,google.display_name=assertion.attributes.name[0],google.groups=assertion.attributes.memberOf

为确保 Google SecOps RBAC 继续按预期运行,还需要映射 google.groups 属性添加到用于定义 Google SecOps 中角色的所有群组。

排查配置问题

如果您在此过程中遇到错误,请查看 排查员工身份联合问题 来解决常见问题。以下部分介绍了 在执行本文档中的步骤时遇到的所有问题。

如果您仍然遇到问题,请与您的 Google SecOps 代表联系 并提供您的 Chrome 网络日志文件

创建员工身份池提供方时出现 command not found 错误

创建员工身份池提供方并指定 IdP 详细信息时, 您会遇到以下错误:

Error: bash: --attribute-mapping=google.subject=assertion.subject,
google.display_name=assertion.attributes.name[0],
google.groups=assertion.attributes.groups: command not found

检查 PATH_TO_METADATA_XML 是否是您上传 SAML 应用元数据 XML 文件复制到您的 Cloud Shell 主目录。

The caller does not have permission 个错误

运行 gcloud projects add-iam-policy-binding 命令以向用户或群组授予角色时,您会收到以下错误:

ERROR: (gcloud.organizations.add-iam-policy-binding) User [ ] does not have
permission to access organizations instance [538073083963:getIamPolicy]
(or it may not exist): The caller does not have permission

检查您是否拥有所需的权限。如需了解详情,请参阅必需的角色

后续步骤

完成本文档中的步骤后,请执行以下操作: