将 Pub/Sub 与 Google SecOps 集成
本文档提供了有关如何将 Pub/Sub 与 Google Security Operations (Google SecOps) 集成的指南。
集成版本:1.0
准备工作
如需使用 Pub/Sub 集成,您需要满足以下条件:
Google Cloud 服务账号 - 您可以使用现有服务账号,也可以创建新服务账号。
如需有关创建服务账号的指南,请参阅创建服务账号。
如果您使用服务账号向 Google Cloud进行身份验证,则可以创建 JSON 格式的服务账号密钥,并在配置集成参数时提供下载的 JSON 文件的内容。
注意:出于安全考虑,我们建议您使用工作负载身份电子邮件地址,而不是服务账号密钥。如需详细了解工作负载身份,请参阅工作负载的身份。
为您的主账号配置 IAM 角色。
Pub/Sub 使用 Identity and Access Management (IAM) 进行访问权限控制,并要求您向主账号授予
Pub/Sub Viewer
角色。
集成参数
Pub/Sub 集成需要以下参数:
参数 | 说明 |
---|---|
Workload Identity Email |
可选 您的工作负载身份联合的客户端电子邮件地址。 您可以配置此参数或 如需使用工作负载身份联合模拟服务账号,请向您的服务账号授予 |
Service Account JSON File Content |
可选 服务账号密钥 JSON 文件的内容。 您可以配置此参数或 如需配置此参数,请提供您在创建服务账号时下载的服务账号密钥 JSON 文件的完整内容。 如需详细了解如何使用服务账号作为身份验证方法,请参阅服务账号概览。 |
Quota Project ID |
可选 您用于 Google Cloud API 和结算的 Google Cloud 项目 ID。此形参要求您向服务账号授予 集成会将此参数值附加到所有 API 请求。 如果您未为此参数设置值,集成会从您的 Google Cloud 服务账号中检索配额项目 ID。 |
Project ID |
可选 集成中要使用的项目 ID。 如果您未为此参数设置值,集成会从您的 Google Cloud 服务账号中检索项目 ID。 |
Verify SSL |
必需 如果选中此选项,集成会验证用于连接到 Pub/Sub 的 SSL 证书是否有效。 此选项将会默认选中。 |
如需了解如何在 Google SecOps 中配置集成,请参阅配置集成。
如果需要,您可以在稍后阶段进行更改。配置集成实例后,您可以在剧本中使用该实例。如需详细了解如何配置和支持多个实例,请参阅支持多个实例。
操作
如需详细了解操作,请参阅处理“工作台”中的待处理操作和执行手动操作。
Ping
使用 Ping 操作测试与 Pub/Sub 的连接。
此操作不适用于 Google SecOps 实体。
操作输入
无。
操作输出
Ping 操作提供以下输出:
操作输出类型 | 可用性 |
---|---|
案例墙附件 | 不可用 |
案例墙链接 | 不可用 |
“支持请求墙”表格 | 不可用 |
丰富化表 | 不可用 |
JSON 结果 | 不可用 |
输出消息 | 可用 |
脚本结果 | 可用 |
输出消息
Ping 操作可以返回以下输出消息:
输出消息 | 消息说明 |
---|---|
Successfully connected to the Pub/Sub server with the
provided connection parameters! |
操作成功。 |
Failed to connect to the Pub/Sub server! Error is
ERROR_REASON |
操作失败。 检查与服务器的连接、输入参数或凭据。 |
脚本结果
下表列出了使用 Ping 操作时脚本结果输出的值:
脚本结果名称 | 值 |
---|---|
is_success |
True 或 False |
连接器
如需详细了解如何在 Google SecOps 中配置连接器,请参阅提取数据(连接器)。
Pub/Sub - 消息连接器
在 Google SecOps 平台中,Pub/Sub - 消息连接器称为 PubSub - 消息连接器。
使用 Pub/Sub - 消息连接器从 Pub/Sub 中检索消息。
JSON 严重程度映射
如需映射提醒严重程度,您需要指定 Pub/Sub - 消息连接器使用哪个字段来获取 Severity Mapping JSON
参数的严重程度值。连接器响应可以包含 integer
、float
和 string
等值类型。
Pub/Sub - 消息连接器会读取 integer
和 float
值,并根据 Google SecOps 设置对其进行映射。下表显示了 integer
值与 Google SecOps 中的严重程度之间的映射关系:
整数值 | 映射的严重程度 |
---|---|
100 |
Critical |
从 80 到 100 |
High |
从 60 到 80 |
Medium |
从 40 到 60 |
Low |
不到 40 |
Informational |
如果响应包含 string
值,则 Pub/Sub - 消息连接器需要进行额外配置。
最初,默认值显示如下:
{
"Default": 60
}
如果映射所需的值位于 event_severity
JSON 键中,则这些值可以如下所示:
"Malicious"
"Benign"
"Unknown"
如需解析 event_severity
JSON 键值并确保 JSON 对象格式正确,请按如下方式配置 Severity Mapping JSON
参数:
{
"event_severity": {
"Malicious": 100,
"Unknown": 60,
"Benign": -1
},
"Default": 50
}
必须提供 "Default"
值。
如果同一 JSON 对象有多个匹配项,Pub/Sub - 消息连接器会优先处理第一个 JSON 对象键。
如需处理包含 integer
或 float
值的字段,请在 Severity Mapping JSON
参数中配置键和空字符串:
{
"Default":"60",
"integer_field": "",
"float_field": ""
}
连接器输入
Pub/Sub - 消息连接器需要以下参数:
参数 | 说明 |
---|---|
Product Field Name |
必需 存储商品名称的字段的名称。 默认值为 |
Event Field Name |
必需 用于确定事件名称(子类型)的字段名称。 默认值为 |
Environment Field Name |
可选
存储环境名称的字段的名称。 如果找不到环境字段,则将环境设置为默认环境。 默认值为 |
Environment Regex Pattern |
可选
要对 使用默认值 如果正则表达式模式为 null 或空,或者环境值为 null,则最终环境结果为默认环境。 |
Script Timeout (Seconds) |
必需 运行当前脚本的 Python 进程的超时时间限制(以秒为单位)。 默认值为 |
Service Account JSON File Content |
可选 服务账号密钥 JSON 文件的内容。 您可以配置此参数或 如需配置此参数,请提供您在创建服务账号时下载的服务账号密钥 JSON 文件的完整内容。 对于 Pub/Sub - Messages 连接器,使用服务账号密钥 JSON 文件进行身份验证的优先级高于工作负载身份联合。 |
Workload Identity Email |
可选 您的服务账号的客户端电子邮件地址。 您可以配置此参数或 如需使用工作负载身份联合模拟服务账号,请向您的服务账号授予 |
Project ID |
可选 连接器中要使用的项目 ID。 |
Quota Project ID |
可选 您用于 Google Cloud API 和结算的 Google Cloud 项目 ID。此形参要求您向服务账号授予 集成会将此参数值附加到所有 API 请求。 |
Subscription ID |
必需 Pub/Sub 订阅 ID。 |
Case Name Template |
可选 自定义支持请求名称。 配置此参数后,连接器会向 Google SecOps 事件添加一个名为 您可以提供以下格式的占位符:
示例: 对于占位符,连接器使用第一个 Google SecOps 事件。连接器仅处理包含字符串值的键。如需配置此参数,请指定不带前缀的事件字段。 |
Alert Name Template |
必需 自定义提醒名称。 您可以提供以下格式的占位符:
示例: 对于占位符,连接器使用第一个 Google SecOps 事件。连接器仅处理包含字符串值的键。如果您未提供任何值或使用了无效的模板,连接器将使用以下格式的回退值: |
Rule Generator Template |
必需 自定义规则生成器。 您可以提供以下格式的占位符:
示例: 对于占位符,连接器使用第一个 Google SecOps 事件。连接器仅处理包含字符串值的键。如果您未提供任何值或使用了无效的模板,连接器将使用以下格式的回退值: |
Timestamp Field |
必需 用于定义 Google SecOps 提醒时间戳的字段的名称。 如果时间戳未使用 Unix 纪元时间格式,请在 默认值为 |
Timestamp Format |
可选 消息时间戳格式。 连接器需要时间戳才能正确处理消息。如果时间戳未使用 Unix 纪元时间格式,并且您未配置时间戳格式,则连接器会失败。 默认值为 |
Severity Mapping JSON |
必需 用于定义连接器如何从消息中提取严重程度的 JSON 对象。 默认值如下: { "Default": "60" } 如需详细了解严重程度映射,请参阅 JSON 严重程度映射。 |
Unique ID Field |
可选 用于确认消息是否唯一的字段的名称。 如果您未设置值,连接器会生成 SHA-256 哈希值并将其用作消息的标识符。 |
Max Messages To Fetch |
可选 每次连接器迭代要处理的消息数量上限。 上限为 100。 |
Disable Overflow |
可选 如果选中此选项,连接器会在创建提醒期间忽略 Google SecOps 溢出机制。 此选项将会默认选中。 |
Verify SSL |
必需 如果选择此选项,集成会验证用于连接到 Pub/Sub 的 SSL 证书是否有效。 默认处于选中状态。 |
Proxy Server Address |
可选 要使用的代理服务器的地址。 |
Proxy Username |
可选 用于进行身份验证的代理用户名。 |
Proxy Password |
可选 用于进行身份验证的代理密码。 |
连接器规则
Pub/Sub - 消息连接器支持代理。
连接器事件
以下示例展示了 Pub/Sub - 消息连接器生成的 Google SecOps 事件的 JSON 输出:
{
"notificationConfigName": "organizations/ORGANIZATION_ID/notificationConfigs/soar_connector_toxic_notifications_config",
"finding": {
"name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID",
"parent": "organizations/ORGANIZATION_ID/sources/SOURCE_ID",
"resourceName": "//compute.googleapis.com/projects/PROJECT_ID/global/firewalls/FIREWALL_ID",
"state": "ACTIVE",
"category": "OPEN_NETBIOS_PORT",
"externalUri": "https://console.cloud.google.com/networking/firewalls/details/default-allow-rdp?project\u003dPROJECT_ID",
"sourceProperties": {
"Recommendation": "Restrict the firewall rules at: https://console.cloud.google.com/networking/firewalls/details/default-allow-rdp?project\u003dPROJECT_ID",
"ExceptionInstructions": "Add the security mark \"allow_open_netbios_port\" to the asset with a value of \"true\" to prevent this finding from being activated again.",
"Explanation": "Firewall rules that allow connections from all IP addresses on TCP ports 137-139 or UDP ports 137-139 may expose NetBIOS services to attackers.",
"ScannerName": "FIREWALL_SCANNER",
"ResourcePath": [
"projects/PROJECT_ID/",
"folders/FOLDER_ID/",
"folders/FOLDER_ID/",
"organizations/ORGANIZATION_ID/"
],
"ExposedService": "NetBIOS",
"OpenPorts": {
"TCP": [
137.0,
138.0,
139.0
],
"UDP": [
137.0,
138.0,
139.0
]
},
"compliance_standards": {
"iso": [
{
"ids": [
"A.13.1.1"
]
}
],
"pci": [
{
"ids": [
"1.2.1"
]
}
],
"nist": [
{
"ids": [
"SC-7"
]
}
]
},
"ReactivationCount": 4.0
},
"securityMarks": {
"name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID/securityMarks",
"marks": {
"peter": "e2e1"
}
},
"eventTime": "2024-08-30T14:44:37.973090Z",
"createTime": "2024-06-24T07:08:54.777Z",
"propertyDataTypes": {
"ResourcePath": {
"listValues": {
"propertyDataTypes": [
{
"primitiveDataType": "STRING"
}
]
}
},
"ReactivationCount": {
"primitiveDataType": "NUMBER"
},
"Explanation": {
"primitiveDataType": "STRING"
},
"ExposedService": {
"primitiveDataType": "STRING"
},
"ScannerName": {
"primitiveDataType": "STRING"
}
}
}
}
需要更多帮助?从社区成员和 Google SecOps 专业人士那里获得解答。