迁移前验证指南

支持的平台:

本文档概述了一种系统性的分步诊断方法,用于在 SOAR 迁移之前验证 Google Security Operations 实例和身份验证设置。本指南重点介绍用于用户身份验证和授权的 SAML 和 OIDC 标准。

Chronicle API 设置验证

如需检查 Chronicle API 是否已在您的 Google Cloud 项目中正确配置,请按以下步骤操作:

  1. 登录 Google Cloud 控制台,然后从顶部导航栏中的项目列表中选择正确的 Google Cloud 项目。
  2. 打开导航菜单 (≡),然后依次前往 API 和服务 > 已启用的 API 和服务。
  3. 前往已启用的 API 和服务列表,找到 Chronicle API。
  4. 如果该 API 已列出:则表示该 API 已启用。

    如果未列出该 API:请点击顶部的 + 启用 API 和服务,搜索 Chronicle API,然后点击启用。

如需验证服务账号是否已创建,请执行以下操作:

  1. 前往 Google Cloud 控制台中的 IAM 页面。
  2. 显示隐藏的账号(关键步骤):您必须选中过滤栏右侧的方框,其中显示包括 Google 提供的角色授权。
  3. 搜索代理:在过滤条件栏中,输入 chronicle。您要查找的电子邮件地址符合以下特定模式: service-[PROJECT_NUMBER]@gcp-sa-chronicle.iam.gserviceaccount.com
  4. 验证权限:确保该服务账号具有 Chronicle Service Agent 角色。如果缺少该角色,请依次点击修改 修改,然后重新添加该角色。

Google SecOps 设置验证

  1. 在 Google Cloud 控制台中,从列表中选择正确的 Google Cloud 项目。
  2. 依次前往安全 > Google SecOps,然后系统会显示单点登录标签页。
  3. 如果 Google SecOps 已启用,您应该会看到一个名为单点登录的标签页。如果不是,则潜在客户发起流程不完整。在产品内通知中显示的 Google 表单中提供 Google Cloud 项目 ID。确认迁移日期和时间段,然后提交表单。如果您在提交申请后 72 小时内未收到回复,请发送电子邮件至 soar-migration-to-gcom@google.com。
  4. 如果该标签页存在,请点击前往 SecOps。成功登录表示身份验证配置正确无误。如果登录失败,请参阅下一部分来调试配置。如果登录失败,请参阅下一部分来调试配置。

SAML 流程和问题排查

本部分概述了 SAML 身份验证流程,并简要介绍了用于诊断和解决常见配置问题的系统性方法。

身份验证工作流架构

了解请求流程对于隔离任何故障点至关重要。下图展示了成功登录的顺序路径。

身份验证工作流架构

分步问题排查程序

为了有效诊断和跟踪 SAML 身份验证过程,您可以使用以下部分中列出的基于 Web 的实用程序。

虽然 Google 不会为任何特定产品背书,但以下工具可帮助您排查此流程中的问题:

第 1 阶段:环境准备

在开始之前,请完成以下步骤,确保您的浏览器环境已准备好捕获网络流量:

  1. 打开新的浏览器标签页或使用无痕式窗口。
  2. 使用操作系统对应的快捷键打开开发者工具:

    • Windows:按 F12
    • Linux:按 Ctrl + Shift + I
    • macOS:按 Cmd + Option + I
  3. 前往网络标签页。

  4. 选中保留日志框,以确保在重定向期间不会丢失任何数据。

    保留日志

  5. 前往您的 Google SecOps 环境网址,以启动登录流程。在面向 SOAR 独立客户的迁移阶段 1 的第 5 步中完成 Google SecOps 设置后,您将通过电子邮件收到此网址。 电子邮件的主题为 Your Google SecOps instance is ready。

第 2 阶段:验证发送给 IdP 的 SAML 请求

此步骤用于验证 Google Cloud 发送给您的身份提供方 (IDP) 的初始消息。

  1. 找到请求:在网络标签页的过滤栏中,搜索 saml。

    找到相应请求

  2. 提取数据:选择相应请求,然后点击 Payload 标签页。找到标有 SAMLRequest 的查询字符串参数。

    提取数据

  3. 解码:复制请求值,并将其粘贴到 SAML 验证工具 (samltool.io) 中进行解码。

    解码

  4. 验证:

    • 检查请求目标平台。
    • 确认此网址与 IDP 中的配置设置一致。

第 3 阶段:验证来自 IDP 的 SAML 响应

此步骤用于验证 IDP 在身份验证后返回给 Google Cloud 的属性。

  1. 找到响应:在网络标签页的过滤栏中,搜索 signin-callback。

    查找回答

  2. 提取数据:选择相应请求,然后点击 Payload 标签页。找到 SAMLResponse 数据。

    找到 SAML 响应数据

  3. 解码:复制响应值并将其粘贴到 SAML 验证工具中。

  4. 验证:

    • 查看返回的声明(属性),例如 groups、first name、last name 和 email。
    • 重要提示:请确保这些属性与 Google Cloud中员工池设置中的配置相符。
    • 确认这些值对于尝试登录的特定用户而言是否正确。

      员工池设置

下图显示了属性映射:

attribute-mapping

上图中的映射如下所示:

  • google.subject = assertion.subject
  • attribute.last_name = assertion.attributes.last_name[0]
  • attribute.user_email = assertion.attributes.user_email[0]
  • attribute.first_name = assertion.attributes.first_name[0]
  • google.groups = assertion.attributes.groups

左侧部分始终相同,即 Google 语法。右侧是根据 SAML 响应中显示的声明属性键。

[0] 对于所列出的特定属性(last_name、user_email、first_name)至关重要,但与 subject 和 groups 无关。

第 4 阶段:验证 Google SecOps 身份验证

此步骤用于验证 Google Cloud 是否正在对用户进行身份验证,以允许用户登录 Google SecOps SOAR。

  1. 在用户的浏览器中找到令牌:在网络标签页的过滤栏中,搜索端点 auth/siem。

    在用户的浏览器中找到令牌

  2. 提取数据:选择相应请求,然后查看 Payload 标签页。找到 jwt 字符串。

  3. 解码:复制 JWT 字符串,然后将其粘贴到 JWT 检查工具 (jwt.io) 中。

    复制 JWT 字符串并粘贴

  4. 验证:

    • 比较 given_name、family_name、email 和 idpgroups 的解码后声明。
    • 匹配确认:这些值必须与第 3 阶段(SAML 响应)中验证的属性完全一致。
    • 如果值匹配,但您仍然没有访问权限,请检查 IAM 中的角色分配。请确保所有用户都分配了某个 Chronicle 预定义角色,并使用适合您身份设置(员工身份联合或 Cloud Identity [适用于 Google 托管账号])的正确主体格式。

第 5 阶段:验证 SOAR 权限访问

此步骤确认系统通过平台群组映射页面在 SOAR 中正确分配权限。

管理员会自动获得 SOAR 访问权限,因为群组映射页面启用了默认访问权限。

您可以在此新 SOAR 实例中添加一些 IDP 群组映射,以验证用户的群组访问权限。默认情况下,新实例的群组映射页面为空。如需验证其他用户的群组访问权限,请向新的 SOAR 实例添加 IDP 群组映射,然后完成以下步骤:

  1. 从现有 SOAR 实例的群组映射页面复制群组映射。
  2. 请求 IDP 群组中的用户访问新的 Google SecOps 网址。
  3. 如果用户无法访问 SOAR,请按照以下问题排查步骤操作:

    a. 检查响应:打开第 4 阶段中的 auth/siem 请求,然后选择预览标签页。

    b. 检查权限:在 JSON 响应中找到 permissions 对象。

可选:为节省时间,您可以将这些映射复制到现有 Google SecOps 实例中的设置 > 高级 > 群组映射。

OIDC 流程和问题排查

本部分概述了 OIDC 身份验证流程,并简要介绍了用于诊断和解决常见集成问题的系统性方法。

身份验证工作流架构

了解请求流程对于隔离任何故障点至关重要。下图展示了成功登录的顺序路径。

身份验证工作流架构

OIDC 分步问题排查程序

为了有效地诊断和跟踪 OIDC 身份验证过程,您可以使用浏览器开发者工具和在线 JWT 解码器。

  • JWT 检查: https://www.jwt.io/
    • 用途:用于检查 JSON Web 令牌 (JWT) 的声明和内容。

第 1 阶段:环境准备

在开始之前,请完成以下步骤,确保浏览器环境已准备好捕获网络:

  1. 在新的空白浏览器标签页或无痕式窗口中打开。
  2. 使用操作系统对应的快捷键打开开发者工具:

    • Windows:按 F12
    • Linux:按 Ctrl + Shift + I
    • macOS:按 Cmd + Option + I
  3. 前往网络标签页。

  4. 选中保留日志框,以确保在重定向期间不会丢失任何数据。

    保留日志

  5. 前往您的 Google SecOps 环境网址,以启动登录流程。在面向 SOAR 独立客户的迁移阶段 1 的第 5 步中完成 Google SecOps 设置后,您将通过电子邮件收到此网址。 电子邮件的主题为 YourGoogle SecOps instance is ready。

第 2 阶段:验证向 OIDC 提供方发出的授权请求

此步骤用于验证从 Google Cloud 到 OpenID Connect 提供方 (IdP) 的初始重定向。

  1. 找到请求:在网络标签页中,找到对 OIDC 提供方的授权端点的初始重定向。该网址通常包含 client_id、redirect_uri、scope、response_type 和 state 等参数。

    找到相应请求

  2. 验证:

    • 确认 client_id 与 OIDC 提供商中配置的一致。
    • 请确保 redirect_uri 与 https://auth.backstory.chronicle.security/signin-callback/locations/global/workforcePools/POOL_ID/provider/PROVIDER_ID 完全一致,并将 POOL_ID 和 PROVIDER_ID 替换为员工身份联合中的池和提供方。
    • 检查 response_type 是否已设置为代码。
    • 请注意 scope 参数,该参数应包含 openid 和任何其他需要用来获取必要声明的范围(例如 email、profile)。

第 3 阶段:验证回调和令牌交换

此步骤用于验证 IdP 对 Google Cloud的响应。

  1. 找到回调:在网络标签页中,找到对登录回调网址 (.../signin-callback/...) 的请求。

    找到回调

  2. 检查数据:检查相应请求的网址参数。它应包含由 OIDC IdP 提供的 code 参数。

  3. 幕后:员工身份联合会从 OIDC 提供方的令牌端点将此代码交换为令牌(ID 令牌、访问令牌)。此阶段的错误通常会在 Cloud Logging 中显示,以供员工身份联合使用。

    • 验证属性传播和完整令牌:如需验证员工身份联合中的属性映射是否产生预期结果,请执行以下操作:
      • 将员工身份联合提供方配置中提供的重定向 URI 添加到提供方的重定向 URI(例如 https://auth.cloud.google/signin-callback/locations/global/workforcePools/POOL_ID/providers/PROVIDER_ID)。
      • 前往员工身份联合提供方,调试 IdP 令牌。您还可以查看完整令牌。如需了解详情,请参阅验证产品配置。

    查看完整令牌 验证属性

第 4 阶段:验证 Google SecOps 身份验证

此步骤用于验证 Google Cloud 是否正在对用户进行身份验证,以允许用户登录 Google SecOps SOAR。

  1. 在用户的浏览器中找到令牌:在网络标签页的过滤栏中,搜索端点 auth/siem。

    在用户的浏览器中找到令牌

  2. 提取数据:选择相应请求,然后查看 Payload 标签页。找到 jwt 字符串。

  3. 解码:复制 JWT 字符串,然后将其粘贴到 JWT 检查工具 (jwt.io) 中。

    复制 JWT 字符串并粘贴

  4. 验证:

    • 比较 sub、given_name、family_name、email 和 idpgroups 的解码后声明。
    • 匹配确认:这些值必须与您的 OIDC 提供方发布的属性相对应,并且与员工身份联合验证属性映射中的映射方式一致。例如, Google Cloud 中的 attribute.first_name 应映射到 JWT 中的 given_name。
    • IAM 角色:如果声明正确,但访问被拒绝并显示类似 Cannot Authenticate user, because user does not have access to the GCP project..., 的消息,请检查 IAM 角色分配。确保用户的群组(JWT 中的 idp_groups)已使用正确的 principalSet 格式(例如 principalSet://iam.googleapis.com/locations/global/workforcePools/POOL_ID/group/IDP_GROUP_NAME)获授必要的角色。

第 5 阶段:验证 SOAR 权限访问

此步骤确认系统通过平台群组映射页面在 SOAR 中正确分配权限。

管理员会自动获得 SOAR 访问权限,因为群组映射页面启用了默认访问权限。

您可以在此新 SOAR 实例中添加一些 IDP 群组映射,以验证用户的群组访问权限。默认情况下,新实例的群组映射页面为空。如需验证其他用户的群组访问权限,请向新的 SOAR 实例添加 IDP 群组映射,然后完成以下步骤:

  1. 从现有 SOAR 实例的群组映射页面复制群组映射。
  2. 请求 IDP 群组中的用户访问新的 Google SecOps 网址。
  3. 如果用户无法访问 SOAR,请按照以下问题排查步骤操作:

    a. 检查响应:打开第 4 阶段中的 auth/siem 请求,然后选择预览标签页。

    b. 检查权限:在 JSON 响应中找到 permissions 对象。

可选:为节省时间,您可以将这些映射复制到现有 Google SecOps 实例中的设置 > 高级 > 群组映射。

常见的 OIDC 错误:

  • 来自 IdP 的 invalid_redirect_uri:确保在 IdP 中配置的重定向 URI 与以下内容完全一致:https://auth.backstory.chronicle.security/signin-callback/locations/global/workforcePools/POOL_ID/provider/PROVIDER_ID将 POOL_ID 和 PROVIDER_ID 替换为员工身份联合中的池和提供方。 即使是尾部斜杠或 http 与 https 不匹配,也会触发此错误。
  • JWT 中缺少声明:

    1. IdP 端:验证 OIDC 客户端是否已配置为在 ID 令牌中发布所需的声明(在 WIF 中映射,例如 sub、groups、email、given_name、family_name)。

    2. WIF 端:确保在 WIF 属性映射部分正确映射这些传入的声明(例如,google.groups=assertion.groups)。如果令牌中存在声明,但未在 WIF 中进行映射,SOAR 平台可能会无法授权用户。如需验证属性映射是否产生预期结果,请参阅验证提供方配置。

迁移后的群组映射

迁移完成后,群组映射在 Google SecOps 中仍然至关重要

迁移后,迁移的实例会保留群组映射。它们是确定用户对 SOAR 的访问权限的基础。您必须确保每位用户都已在此页面中完成映射,才能访问 Google SecOps。如需了解详情,请参阅访问实例。

需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。