将 CSV 与 Google SecOps 集成
本文档介绍了如何将 CSV 与 Google 安全运营集成。
本文档解释了如何将 CSV 与 Google 安全运营集成。
下载此集成的完整源代码副本。使用场景
在 Google SecOps 中,CSV 集成支持以下用例:
基于文件的威胁狩猎: 快速搜索本地或远程 CSV 日志文件中的特定字符串或恶意实体,以识别历史记录的威胁。
自动警报生成:自动从以 CSV 格式输出数据的旧系统中注入记录,并将其转换为具有自定义严重性映射的可操作警报。
数据可移植性和报告:以编程方式将其他剧本操作的 JSON 结果转换为 CSV 格式,以便简化导出到外部报告工具或本地存储。
自动实体丰富化: 使用 CSV 文件作为本地威胁情报源,在剧本执行期间自动丰富实体并将其标记为可疑。
跨系统数据同步: 高效处理具有不同字符编码的文件(例如旧版 Excel 格式),以确保不同安全工具之间的数据一致性。
准备工作
在 Google SecOps 中配置集成之前,请确认您已具备以下条件:
内部平台功能: 此集成提供内置的文件处理功能,无需外部第三方 API 密钥或凭据进行身份验证。
文件系统权限: 如果使用远程代理,则集成需要特定的权限才能访问和管理主机系统上的文件。 在代理机器上运行以下命令,以授予目标目录必要的权限:
chown scripting:scripting "directory_path"
集成参数
CSV 集成需要以下参数:
| 参数显示名称 | 类型 | 默认值 | 为必填项 | 说明 |
|---|---|---|---|---|
| 实例名称 | 字符串 | 不适用 | 否 | 您打算为之配置集成的实例的名称。 |
| 说明 | 字符串 | 不适用 | 否 | 实例的说明。 |
| 远程运行 | 复选框 | 尚未核查 | 否 | 选中相应字段,以便远程运行配置的集成。选中后,系统会显示用于选择远程用户(客服人员)的选项。 |
如需了解如何在 Google SecOps 中配置集成,请参阅配置集成。
如有需要,您可以在稍后阶段进行更改。配置集成实例后,您可以在 playbook 中使用该实例。如需详细了解如何配置和支持多个实例,请参阅支持多个实例。
操作
如需详细了解操作,请参阅 在工作台页面中处理待处理的操作和执行人工处置措施。
将 JSON 保存为 CSV
将 JSON 对象保存为 CSV 文件。
参数
| 参数名称 | 类型 | 默认值 | 必填 | 说明 |
|---|---|---|---|---|
| JSON 对象 | JSON | 不适用 | 是 | 指定要另存为 CSV 的 JSON 对象。 |
| 覆盖 | 布尔值 | 错误 | 否 | 如果启用,该操作会覆盖现有文件。 |
| 文件路径 | 字符串 | 不适用 | 是 | 指定新创建的 CSV 文件的绝对文件路径。如果仅提供文件名,该操作会将文件存储在 /tmp/ 文件夹中。 |
Run On
不适用
操作执行结果
脚本结果
| 脚本结果名称 | 值 |
|---|---|
| is_success | True/False |
JSON 结果
{"filepath": "{file name}"}
案例墙
该操作会提供以下输出消息:
| 输出消息 | 消息说明 |
|---|---|
| 已成功转换 JSON 对象并将其保存到提供的文件路径。 | 行动成功。 |
| 未找到指定路径下的文件。 | 文件不存在。 |
| 在 Google Cloud Policy Intelligence 中未发现所提供的服务账号的任何活动。 | 该操作未能找到任何已列出服务账号的数据。 |
| 执行“将 JSON 保存为 CSV”操作时出错。 | 相应操作返回了错误。 检查与服务器的连接、输入参数或凭据。 |
按字符串搜索
在 CSV 文件中搜索字符串。
参数
| 参数名称 | 类型 | 默认值 | 为必填项 | 说明 |
|---|---|---|---|---|
| CSV 路径 | 字符串 | 不适用 | 是 | 指定 CSV 文件的文件路径或包含所有 CSV 文件的文件夹路径。如果提供了文件夹,则操作将遍历文件夹中的所有 CSV 文件。 |
| CSV 列 | 字符串 | 不适用 | 否 | 指定以英文逗号分隔的列列表,这些列可以包含实体信息。如果未提供任何内容,操作将搜索所有列。 |
| 倒退的日子 | 字符串 | 10 | 否 | 指定要处理多少天前的 CSV 文件。 |
| 搜索值 | 字符串 | 不适用 | 否 | 指定需要搜索的字符串。如果启用“搜索多个字符串”,则此参数将被视为需要搜索的以逗号分隔的字符串列表。 |
| 仅返回第一行。 | 复选框 | 尚未核查 | 否 | 如果启用,该操作将仅返回与实体匹配的第一个文件中的 1 行。 |
| 文件编码类型 | 字符串 | utf-8、latin-1、iso-8859-1 | 是 | 用于解码 CSV 文件的 CSV 编码类型(以英文逗号分隔)列表,例如 utf-8、latin-1、iso-8859-1、utf-16…指定编码类型的顺序决定了它们用于解码文件的顺序,例如(从上面的示例中)utf-8 具有最高优先级,将主要用于解码所有文件;如果存在使用其他编码的 CSV 文件,则将使用顺序中的下一个编码(即 latin-1 编码),依此类推,直到使用最后一个编码。 |
| 搜索多个字符串 | 复选框 | 尚未核查 | 否 | 如果启用,“搜索值”将以逗号分隔的值列表形式工作,而不是以单个字符串形式工作。 |
| 要返回的字段 | CSV | 不适用 | 否 | 指定一个以逗号分隔的待返回值列表。 |
使用场景
在 CSV 文件中搜索字符串。
Run On
此操作会在所有实体上运行。
操作执行结果
脚本结果
| 脚本结果名称 | 值选项 | 示例 |
|---|---|---|
| count_rows_csv | 任意行数 | count_rows += 1 |
JSON 结果
[
{
"EntityResult": {
"Field2": "Value2",
"Field3": "Value3",
"Field1": "Value1",
"Field4": "Value4",
"Field5": "Value5"
},
"Entity": "host"
}, {
"EntityResult": {
"Field2": "Value2",
"Field3": "Value3",
"Field1": "Value1",
"Field4": "Value4",
"Field5": "Value5"
}, "Entity": "1.1.1.1"
}
]
案例墙
| 结果类型 | 值 / 说明 | 类型 |
|---|---|---|
| 输出消息* | 找到的记录: "成功找到以下字符串的信息:\n (search_string)" 如果某些字符串未找到任何记录:“操作无法找到以下字符串的信息:” 如果所有记录均未找到信息:“未找到所提供项目的任何信息。” 如果所有编码均无效:“执行操作‘按字符串搜索 CSV’时出错。提供的编码无效。请检查拼写。” |
常规 |
按实体搜索
搜索 CSV 文件中的实体并对其进行丰富。
参数
| 参数名称 | 类型 | 默认值 | 为必填项 | 说明 |
|---|---|---|---|---|
| CSV 路径 | 字符串 | 不适用 | 是 | 指定 CSV 文件的文件路径或包含所有 CSV 文件的文件夹路径。如果提供了文件夹,则操作将遍历文件夹中的所有 CSV 文件。 |
| CSV 列 | 字符串 | 不适用 | 是 | 指定以英文逗号分隔的列列表,这些列可以包含实体信息。如果未提供任何内容,操作将搜索所有列。 |
| 天数 | 字符串 | 10 | 是 | 指定要处理多少天前的 CSV 文件。 |
| 标记为可疑 | 复选框 | 尚未核查 | 否 | 如果启用,则当在文件中找到实体时,操作会将实体标记为可疑。 |
| 仅返回第一行。 | 复选框 | 尚未核查 | 否 | 如果启用,该操作将仅返回与实体匹配的第一个文件中的 1 行。 |
| 文件编码类型 | 字符串 | utf-8、latin-1、iso-8859-1 | 是 | 用于解码 CSV 文件的 CSV 编码类型(以英文逗号分隔)列表,例如 utf-8、latin-1、iso-8859-1、utf-16…指定编码类型的顺序决定了它们用于解码文件的顺序,例如(从上面的示例中)utf-8 具有最高优先级,将主要用于解码所有文件;如果存在使用其他编码的 CSV 文件,则将使用顺序中的下一个编码(即 latin-1 编码),依此类推,直到使用最后一个编码。 |
| 丰富实体 | 复选框 | 勾选 | 否 | 如果启用,此操作会将 CSV 文件中的信息添加到实体的丰富表中。 |
| 创建分析数据 | 复选框 | 勾选 | 否 | 如果启用该操作,当在文件中找到实体时,该操作将创建一个洞察。 |
| 要返回的字段 | CSV | 不适用 | 否 | 指定一个以逗号分隔的待返回值列表。 |
Run On
此操作会在所有实体上运行。
操作执行结果
脚本结果
| 脚本结果名称 | 值选项 | 示例 |
|---|---|---|
| count_rows_csv | 任意行数 | count_rows += 1 |
JSON 结果
[
{
"EntityResult": [{
"domain": "example.dom",
"fileHash": "cbbc5aea3d4c7ec193aa2ff3b52df36ebb12338b18c9bb53fc4896115efaf78d",
"reporter": "Symantec Antivirus",
"app": "Arcsight",
"id": "1011",
"eventTime": "9/4/2017 10:00",
"antivirusAction": "blocked",
"virusName": "ECAT",
"rule": "malicious",
"eventName": "Virus detected",
"User": "Ziv",
"eventHostName": "WS-ZivDevComp",
"File Source Path": "C:\\\\Users\\\\Default\\\\Desktop\\\\stringTimeRaw.csv",
"machineAddress": "192.168.11.11"
}, {
"domain": "SmartCompany.dom",
"fileHash": "cbbc5aea3d4c7ec193aa2ff3b52df36ebb12338b18c9bb53fc4896115efaf78d",
"reporter": "Symantec Antivirus",
"app": "ESM",
"id": "1012",
"eventTime": "9/4/2017 10:00",
"antivirusAction": "allowed",
"virusName": "ECAT",
"rule": "malicious",
"eventName": "Virus detected",
"User": "GG",
"eventHostName": "WS-GGDevComp",
"File Source Path": "C:\\\\Users\\\\Default\\\\Desktop\\\\stringTimeRaw.csv",
"machineAddress": "192.168.11.11"
}],
"Entity": "192.168.11.11"
}
]
案例墙
| 结果类型 | 值 / 说明 | 类型 |
|---|---|---|
| 输出消息* | 对于找到的实体: "已成功找到以下实体的信息:\n (实体.标识符)" 对于未找到的实体:“未找到以下实体的任何信息:\n (entity.identifier)” 如果所有实体均未找到信息:“未找到所提供实体的信息。” 如果所有编码都无效: "执行操作“按字符串搜索 CSV”时出错。提供的编码无效。请检查拼写。 |
常规 |
Ping
测试连接。
参数
不适用
Run On
此操作会在所有实体上运行。
操作执行结果
脚本结果
不适用
JSON 结果
N/A
连接器
CSV 连接器
从指定文件夹中的 CSV 文件中提取数据,并将这些数据转换为 Google SecOps 系统中的警报。
本主题阐述了 Google SecOps 生成 CSV 文件的机制和配置,以及平台内支持的工作流程和操作。
使用场景
客户有来自系统的 CSV 文件,这些文件可能采用不同的编码格式。
* Add support for comma-separated encodings in the Encoding field in the
connector.
* The connector should try the different encodings by their order in
the field (first encoding - highest priority, last - lowest
priority) with try/except. If no matching encoding was found -
consider the file as an error and notify.
* Put a default value for the fields - a list of most common CSV
encodings by priority (utf8, latin1, and iso...)
访问 CSV 文件
Google SecOps 访问 CSV 文件:设置一个用于存放 CSV 文件的文件夹。
将 CSV 记录转发至 Google SecOps
处理 CSV 文件记录
配置 Google SecOps 以使用 CSV 文件作为警报源时,系统会要求您提供一个特定的文件夹,CSV 文件将从该文件夹中提取。Google SecOps 会检索 CSV 文件中的任何记录,并将其转发以进行翻译,并根据上下文将其作为案例警报。
如何在连接器中映射严重性
要映射严重性,您需要在“严重性字段名称”参数中指定要使用哪个字段来获取严重性值。响应中可以获得 3 种类型的值:整数、浮点数和字符串。对于整数和浮点数,无需进行任何额外的配置。连接器将读取这些值,并根据 Google SecOps 标准进行映射。简要回顾一下整数值的映射方式:
- 100 - 危急
- 100 > x >= 80 高
- 80 > x >=60 中等
- 60 > x >=40 低
- 40 > x 信息
如果响应中涉及字符串,则需要进行额外的配置。在连接器脚本所在的文件夹中,会有一个名为 severity_map_config.json 的配置文件。此文件定义了严重级别的映射规则。
最初,该文件将如下所示:1 2 3 { "Default": 50 }
设想这样一种情况:所需的值位于 event.severity 中。event.severity 可以包含以下值:“恶意”、“良性”、“未知”。
首先,我们必须在“严重性字段名称”参数中指定我们将使用 event.severity。其次,我们需要更新配置文件。修改后,severity_map_config.json 文件应如下所示:1 2 3 4 5 6 7 8 {
"event.severity": { "Malicious": 100, "Unknown": 60, "Benign": -1 }, "Default":
50 }
现在,当连接器收到 event.severity = "恶意" 事件时,它会将其严重级别设置为“严重”。
在 Google SecOps 中配置 CSV 连接器
有关如何在 Google SecOps 中配置连接器的详细说明,请参阅配置连接器。
连接器参数
使用以下参数配置连接器:
| 参数名称 | 类型 | 默认值 | 为必填项 | 说明 |
|---|---|---|---|---|
| 商品字段名称 | 字符串 | device_product | 是 | 用于确定设备产品的字段名称。 |
| 事件字段名称 | 字符串 | name | 否 | 用于确定事件名称(子类型)的字段名称。 |
| 脚本超时(秒) | 字符串 | 60 | 是 | 运行当前脚本的 Python 进程的超时限制(以秒为单位)。 |
| CSV 文件夹路径 | 字符串 | 不适用 | 是 | 包含所有需要导入的 csv 文件的文件夹路径。 |
| CSV 限制 | 字符串 | 不适用 | 否 | 每次迭代要处理多少个 CSV 文件? |
| 规则生成器字段名称 | 字符串 | 不适用 | 否 | 包含规则生成器相关信息的字段的名称。 |
| 时间字段名称 | 字符串 | 不适用 | 否 | 包含活动时间信息的字段的名称。 |
| CSV 是否包含标题 | 复选框 | 勾选 | 是 | 指示 CSV 文件是否包含标题。 |
| 文件编码类型 | 字符串 | utf-8 | 是 | 设置 CSV 编码类型,例如 iso-8859-1、latin1、utf-8、utf-16。 |
| 提醒字段名称 | 字符串 | 不适用 | 否 | 包含提醒名称信息的字段的名称。 |
| 严重程度字段名称 | 字符串 | 不适用 | 否 | 包含严重程度信息的字段的名称。 |
连接器规则
代理支持
此连接器不支持代理。
需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。