迁移前验证指南

支持的平台:

本文档概述了一种系统性的分步诊断方法,用于在 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 和服务,搜索 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. 验证

    • 查看返回的声明(属性),例如 groupsfirst namelast nameemail
    • 重要提示:请确保这些属性与 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_nameuser_emailfirst_name)至关重要,但与 subjectgroups 无关。

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

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

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

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

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

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

    复制 JWT 字符串并粘贴

  4. 验证

    • 比较 given_namefamily_nameemailidpgroups 的解码后声明。
    • 匹配确认:这些值必须与第 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_idredirect_uriscoperesponse_typestate 等参数。

    找到相应请求

  2. 验证

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

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

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

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

    找到回调

  2. 检查数据:检查此请求的网址参数。它应包含由您的 OIDC IdP 提供的代码参数。

  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. 提取数据:选择相应请求,然后查看载荷标签页。找到 jwt 字符串。

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

    复制 JWT 字符串并粘贴

  4. 验证

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

第 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_IDPROVIDER_ID 替换为员工身份联合中的池和提供方。 即使是尾部斜杠或 httphttps 不匹配,也会触发此错误。
  • JWT 中缺少声明

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

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

迁移后的群组映射

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

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

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