迁移前验证指南

支持范围:

本文档概述了一种系统化的分步诊断方法,用于在 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 和服务,搜索 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. 提取数据:选择相应请求,然后查看载荷标签页。找到 jwt 字符串。

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

    复制 JWT 字符串并将其粘贴

  4. 验证:

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

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

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

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

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

  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 是否已设置为 code。
    • 请注意 scope 参数,该参数应包含 openid 以及发布必要声明所需的任何其他范围(例如 email、profile)。

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

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

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

    找到回调

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

  3. 幕后机制:员工身份联合会使用此代码从 OIDC 提供方的令牌端点换取令牌(ID 令牌、访问令牌)。此阶段的错误通常会显示在 Cloud Logging for Workforce Identity Federation 中。

    • 验证属性传播和完整令牌:如需验证员工身份联合中的属性映射是否产生预期结果,请执行以下操作:
      • 将员工身份联合提供方配置中提供的重定向 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. 验证:

    • 比较 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 角色分配。确保使用正确的 principalSet 格式(例如 principalSet://iam.googleapis.com/locations/global/workforcePools/POOL_ID/group/IDP_GROUP_NAME)向用户的群组(JWT 中的 idp_groups)授予必要的角色。

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

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

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

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

  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 专业人士的解答。