将 Policy Intelligence 与 Google SecOps 集成

本文档介绍了如何将 Policy Intelligence 与 Google Security Operations 集成。

使用场景

Policy Intelligence集成支持以下用例:

  • 识别休眠服务账号:自动识别在特定时段内未进行身份验证的服务账号,以便清理未使用的身份并缩小攻击面。

  • 调查身份盗用:在事件调查期间检索服务账号的上次身份验证时间,以确定该账号在可疑的违规时间段内是否处于活动状态。

  • 自动执行合规性审核:将服务账号身份验证元数据编译成易于理解的报告,以满足有关监控身份访问和使用情况的监管要求。

端点

该集成通过使用不同的参数来执行不同的操作,从而与 Policy Intelligence API 中的单个 activities:query 端点进行交互。以下是集成端点的示例:

[https://policyintelligence.googleapis.com/v1/projects/](https://policyintelligence.googleapis.com/v1/projects/)PROJECT_ID/locations/global/activityTypes/serviceAccountLastAuthentication/activities:query

准备工作

在 Google SecOps 中配置Policy Intelligence集成之前,请完成以下前提步骤:

  1. 创建和配置自定义 Identity and Access Management 角色

  2. 创建服务账号

  3. 选择并配置以下身份验证方法之一:

    • 选项 1:Workload Identity(推荐):此方法使用短期有效的令牌,通过服务账号模拟来实现。

    • 方法 2:服务账号 JSON 密钥:此方法依赖于静态的长期有效的密钥文件。

创建和配置 IAM 角色

如需为集成提供必要的权限,请在项目中创建自定义角色:

  1. 在 Google Cloud 控制台中,前往 IAM 和管理 > 角色

    打开“角色”

  2. 点击添加创建自定义角色

  3. 提供标题(例如 SecOps Policy Intelligence Analyst)、说明和唯一的 ID

  4. 角色发布阶段设置为正式版

  5. 为该角色添加以下权限:

    • policyanalyzer.serviceAccountLastAuthenticationActivities.query
  6. 点击创建

创建服务账号

  1. 在 Google Cloud 控制台中,依次前往 IAM 和管理 > 服务账号

    转到“服务账号”

  2. 点击添加创建服务账号

  3. 提供名称和说明,然后点击创建并继续

  4. 向此服务账号授予对项目的访问权限步骤中,分配您创建的自定义角色。

  5. 点击完成。记下服务账号的电子邮件地址

配置 Workload Identity 凭据

建议采用 Workload Identity,因为它使用服务账号模拟来使用短期有效访问令牌。

识别唯一实例身份

建立连接需要授予 Google SecOps 实例模拟服务账号的权限。

  1. 在 Google SecOps 中,前往内容中心 > 响应集成

  2. 选择 Policy Intelligence 集成,然后在 Workload Identity Email 中输入您的服务账号电子邮件地址。

  3. 依次点击保存 > 测试。测试预计会失败。

  4. 点击测试旁边的 close_small 按钮,然后找到以 gke-init-python@...soar-python@... 开头的身份电子邮件地址。

  5. 复制此唯一电子邮件地址。

在 Google Cloud中授权实例身份

  1. 在 Google Cloud 控制台中,依次前往 IAM 和管理 > 服务账号

    转到“服务账号”

  2. 选择目标服务账号,然后依次前往权限 > 授予访问权限

  3. 将该唯一电子邮件地址粘贴到新主账号字段中,然后分配 Service Account Token Creator 角色 (roles/iam.serviceAccountTokenCreator)。

授予配额项目访问权限

使用 Workload Identity 进行身份验证需要 Quota Project ID 来跟踪 API 使用情况和结算信息。

  1. 在 Google Cloud 控制台中,前往用作配额项目的项目的 IAM

    转到 IAM

  2. 找到您的服务账号,然后点击修改主账号修改)。

  3. 点击添加其他角色,然后选择 Service Usage Consumer (roles/serviceusage.serviceUsageConsumer)。

  4. 点击保存

配置 JSON 密钥

静态的长期有效的密钥文件需要手动轮替。仅在无法使用 Workload Identity 身份验证时才使用此方法。

  1. 在 Google Cloud 控制台中,依次前往 IAM 和管理 > 服务账号,然后选择您的服务账号。

    转到“服务账号”

  2. 前往密钥标签页,然后依次点击添加密钥 > 创建新密钥

  3. 选择 JSON,然后点击创建。浏览器会将 JSON 文件下载到您的计算机。

集成参数

Pub/Sub 集成需要以下参数:

参数 说明
Service Account JSON File Content

可选。

服务账号密钥 JSON 文件的完整内容。

为服务账号密钥身份验证配置此参数。

Workload Identity Email

可选。

您服务账号的客户端电子邮件地址。

仅当您使用工作负载身份进行身份验证时,才需要配置此参数。如果已配置,您还必须提供 Quota Project ID,系统会忽略 Service Account JSON File Content

Project ID

可选。

Pub/Sub 中要定位的项目 ID。

如果未提供值,集成会从服务账号凭据中检索 ID。

Quota Project ID

可选。

用于 API 使用情况和结算的项目 ID。

使用 Workload Identity 身份验证时,此参数是必需的。

如果未提供值,集成会从服务账号凭据中检索 ID。

Verify SSL

必填。

验证与服务器连接的 SSL 证书。默认处于启用状态。

如需了解如何在 Google SecOps 中配置集成,请参阅配置集成

如有需要,您可以在稍后阶段进行更改。配置集成实例后,您可以在 playbook 中使用该实例。如需详细了解如何配置和支持多个实例,请参阅支持多个实例

操作

如需详细了解操作,请参阅 在工作台页面中处理待处理的操作执行人工处置措施

Ping

使用 Ping 操作测试与 Policy Intelligence 的连接。

此操作不适用于 Google SecOps 实体。

操作输入

无。

操作输出

Ping 操作提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 不可用
“支持请求墙”表格 不可用
丰富化表 不可用
JSON 结果 不可用
输出消息 可用
脚本结果 可用
输出消息

在“问题墙”上,“Ping”操作会提供以下输出消息:

输出消息 消息说明
Successfully connected to the Google Cloud Policy Intelligence server with the provided connection parameters! 操作成功。
Failed to connect to the Google Cloud Policy Intelligence server!

操作失败。

检查与服务器的连接、输入参数或凭据。

脚本结果

下表介绍了使用 Ping 操作时脚本结果输出的值:

脚本结果名称
is_success TrueFalse

搜索服务账号活动记录

使用“搜索服务账号活动”操作在 Policy Intelligence 中搜索与服务账号相关的活动。

此操作不适用于 Google SecOps 实体。

操作输入

“搜索服务账号活动记录”操作需要以下参数:

参数 说明
Project ID 可选

要在其中搜索服务账号活动的项目名称。

如果您未提供任何值,该操作会从集成配置中提取项目 ID。

Service Account Resource Name 必需

一个逗号分隔列表,其中包含用于检索活动的服务账号的资源名称。

Max Activities To Return 必需

要为服务账号返回的活动数量。

数量上限为 1000。

默认情况下,该操作会返回 50 个 activity。

操作输出

“搜索服务账号活动”操作提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 不可用
“支持请求墙”表格 不可用
丰富化表 不可用
JSON 结果 可用
输出消息 可用
脚本结果 可用
JSON 结果

以下示例介绍了使用“搜索服务账号活动”操作时收到的 JSON 结果输出:

[
  {
    "Entity": "//iam.googleapis.com/projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT@ENTITY_ID",
    "EntityResult": [
      {
        "fullResourceName": "//iam.googleapis.com/projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT@ENTITY_ID",
        "activityType": "serviceAccountLastAuthentication",
        "observationPeriod": {
          "startTime": "2023-05-23T07:00:00Z",
          "endTime": "2023-08-20T07:00:00Z"
        },
        "activity": {
          "lastAuthenticatedTime": "2023-08-20T07:00:00Z",
          "serviceAccount": {
            "serviceAccountId": "SERVICE_ACCOUNT_ID",
            "projectNumber": "PROJECT_NUMBER",
            "fullResourceName": "//iam.googleapis.com/projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT@ENTITY_ID"
          }
        }
      }
    ]
  }
]
输出消息

在案例墙上,“搜索服务账号活动”操作会提供以下输出消息:

输出消息 消息说明

Successfully found activity for the following service accounts in Google Cloud Policy Intelligence: SERVICE_ACCOUNTS

No activity was found for the following service accounts in Google Cloud Policy Intelligence: SERVICE_ACCOUNTS

No activity was found for the provided service accounts in Google Cloud Policy Intelligence

操作成功。
Error executing action "Search Service Account Activity". Reason: ERROR_REASON

操作失败。

检查与服务器的连接、输入参数或凭据。

脚本结果

下表介绍了使用“搜索服务账号活动”操作时脚本结果输出的值:

脚本结果名称
is_success TrueFalse

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