将 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:Workload Identity(推荐):此方法使用短期有效的令牌,通过服务账号模拟来实现。
方法 2:服务账号 JSON 密钥:此方法依赖于静态的长期有效的密钥文件。
创建和配置 IAM 角色
如需为集成提供必要的权限,请在项目中创建自定义角色:
在 Google Cloud 控制台中,前往 IAM 和管理 > 角色。
点击添加创建自定义角色。
提供标题(例如
SecOps Policy Intelligence Analyst)、说明和唯一的 ID。将角色发布阶段设置为正式版。
为该角色添加以下权限:
policyanalyzer.serviceAccountLastAuthenticationActivities.query
点击创建。
创建服务账号
在 Google Cloud 控制台中,依次前往 IAM 和管理 > 服务账号。
点击添加创建服务账号。
提供名称和说明,然后点击创建并继续。
在向此服务账号授予对项目的访问权限步骤中,分配您创建的自定义角色。
点击完成。记下服务账号的电子邮件地址。
配置 Workload Identity 凭据
建议采用 Workload Identity,因为它使用服务账号模拟来使用短期有效访问令牌。
识别唯一实例身份
建立连接需要授予 Google SecOps 实例模拟服务账号的权限。
在 Google SecOps 中,前往内容中心 > 响应集成。
选择 Policy Intelligence 集成,然后在
Workload Identity Email中输入您的服务账号电子邮件地址。依次点击保存 > 测试。测试预计会失败。
点击测试旁边的 close_small 按钮,然后找到以
gke-init-python@...或soar-python@...开头的身份电子邮件地址。复制此唯一电子邮件地址。
在 Google Cloud中授权实例身份
在 Google Cloud 控制台中,依次前往 IAM 和管理 > 服务账号。
选择目标服务账号,然后依次前往权限 > 授予访问权限。
将该唯一电子邮件地址粘贴到新主账号字段中,然后分配 Service Account Token Creator 角色 (
roles/iam.serviceAccountTokenCreator)。
授予配额项目访问权限
使用 Workload Identity 进行身份验证需要 Quota Project ID 来跟踪 API 使用情况和结算信息。
在 Google Cloud 控制台中,前往用作配额项目的项目的 IAM。
找到您的服务账号,然后点击修改主账号(修改)。
点击添加其他角色,然后选择 Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer)。点击保存。
配置 JSON 密钥
静态的长期有效的密钥文件需要手动轮替。仅在无法使用 Workload Identity 身份验证时才使用此方法。
在 Google Cloud 控制台中,依次前往 IAM 和管理 > 服务账号,然后选择您的服务账号。
前往密钥标签页,然后依次点击添加密钥 > 创建新密钥。
选择 JSON,然后点击创建。浏览器会将 JSON 文件下载到您的计算机。
集成参数
Pub/Sub 集成需要以下参数:
| 参数 | 说明 |
|---|---|
Service Account JSON File Content |
可选。 服务账号密钥 JSON 文件的完整内容。 为服务账号密钥身份验证配置此参数。 |
Workload Identity Email |
可选。 您服务账号的客户端电子邮件地址。 仅当您使用工作负载身份进行身份验证时,才需要配置此参数。如果已配置,您还必须提供 |
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 |
True 或 False |
搜索服务账号活动记录
使用“搜索服务账号活动”操作在 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"
}
}
}
]
}
]
输出消息
在案例墙上,“搜索服务账号活动”操作会提供以下输出消息:
| 输出消息 | 消息说明 |
|---|---|
|
操作成功。 |
Error executing action "Search Service Account Activity".
Reason: ERROR_REASON |
操作失败。 检查与服务器的连接、输入参数或凭据。 |
脚本结果
下表介绍了使用“搜索服务账号活动”操作时脚本结果输出的值:
| 脚本结果名称 | 值 |
|---|---|
is_success |
True 或 False |