将 CSV 与 Google SecOps 集成

本文档介绍了如何将 CSV 与 Google Security Operations 集成。

本文档介绍了如何将 CSV 与 Google Security Operations 集成。

使用场景

在 Google SecOps 中,CSV 集成支持以下用例:

  • 基于文件的威胁搜寻:快速搜索本地或远程 CSV 日志文件中的特定字符串或恶意实体,以识别历史记录中的威胁。

  • 自动生成提醒:自动从以 CSV 格式输出数据的旧版系统中注入记录,并将其转换为可据以采取行动的提醒,同时支持自定义严重程度映射。

  • 数据可移植性和报告:以编程方式将其他 playbook 操作中的 JSON 结果转换为 CSV 格式,以便顺畅地导出到外部报告工具或本地存储空间。

  • 自动实体丰富:使用 CSV 文件作为本地威胁情报来源,在 playbook 执行期间自动丰富实体并将其标记为可疑。

  • 跨系统数据同步:高效处理具有不同字符编码(例如旧版 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 (entity.identifier)”

对于未找到的实体:“未找到有关以下实体的信息:\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 专业人士的解答。