将 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。
提醒字段名称 字符串 不适用 包含提醒名称信息的字段的名称。
严重程度字段名称 字符串 不适用

包含严重程度信息的字段的名称。
注意:您可以根据响应中的值来映射严重程度。为此,您需要前往连接器执行文件夹并修改 severity_mapping_config.json。查看文档以供参考。

连接器规则

代理支持

此连接器不支持代理。

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