将 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 专业人士的解答。