将 OpenSearch 与 Google SecOps 集成

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

使用场景

OpenSearch 集成可满足以下安全编排和调查用例:

  • 自动威胁搜寻:使用 Lucene 和 DSL 查询定期在所有 OpenSearch 索引中搜索特定的失陷指标 (IoC) 或可疑模式。

  • 集中式提醒注入:将 OpenSearch 中的文档作为可操作的提醒注入 Google SecOps,确保优先处理和调查数据湖中的安全事件。

  • 情境数据检索:通过自动从 OpenSearch 中提取相关日志或历史数据来丰富现有安全案例,从而在调查期间为分析师提供更深入的情境。

  • 灵活的数据映射:将 OpenSearch 文档中的严重级别和环境标记动态映射到 Google SecOps 标准,以保持不同日志来源之间的一致性。

准备工作

在 Google SecOps 平台中配置集成之前,请验证您是否具备以下条件:

  • CA 证书文件:用于保护连接的有效证书授权机构文件。

  • 最新集成版本:确保您使用的是最新版本的 OpenSearch 集成。

  • Base64 编码的证书:在配置之前,必须将 CA 证书文件的内容转换为 Base64 字符串。

如需使用 CA 证书配置集成,请完成以下步骤:

  1. 打开集成配置参数页面。
  2. 将 Base64 编码字符串粘贴到 CA 证书文件字段中。
  3. 选中验证 SSL 复选框。
  4. 点击测试,验证集成是否已成功配置。

集成参数

OpenSearch 集成需要以下参数:

参数 说明
Server Address

必填。

OpenSearch 实例的端点网址,包括协议和端口(例如 https://10.0.0.1:9200)。

Username

可选。

用于向 OpenSearch 实例进行身份验证的用户名。

Password

可选。

与指定用户名关联的密码。

API Token

可选。

用于身份验证的 API 令牌,可替代用户名和密码。

Authenticate

可选。

如果选中,集成会使用提供的凭据对与 OpenSearch 服务器的连接进行身份验证。

Verify SSL

可选。

如果选中,集成会在连接到 OpenSearch 服务器时验证 SSL 证书。

CA Certificate File

可选。

PEM 格式的证书授权机构 (CA) 证书文件的内容,用于验证服务器的 SSL 证书。

如需了解如何在 Google SecOps 中配置集成,请参阅配置集成。

如有需要,您可以在后续阶段进行更改。配置集成实例后,您可以在 playbook 中使用该实例。如需详细了解如何配置和支持多个实例,请参阅支持多个实例。

操作

如需详细了解操作,请参阅 在工作桌上响应待处理的操作和在案例中运行手动操作。

使用高级 ES 搜索操作在 OpenSearch 服务器上执行预配置的搜索查询,并以字典格式检索结果。

此操作不会在 Google SecOps 实体上运行。

操作输入

高级 ES 搜索操作需要以下参数:

参数 说明
Index

可选。

OpenSearch 索引的搜索模式(例如 smp_playbooks-2019.06.13)。您可以使用通配符搜索多个索引(例如 smp_playbooks-*)。

默认值为 *。

Query

可选。

使用 Lucene 语法执行的搜索查询(例如 level:error OR level:warning)。

默认值为 *。

Limit

可选。

要返回的文档数上限。将此值设置为 0 表示没有限制。

默认值为 100。

Display Field

可选。

要返回的特定字段的逗号分隔列表。

默认值为 *,会返回所有字段。

Search Field

可选。

当 Query 不包含目标字段名称时要搜索的特定字段。这会充当自由文本查询的默认搜索目标。

默认值为 _all,它会搜索所有已编入索引的字段。

Timestamp Field

可选。

用于基于时间的过滤的字段名称。

如果 Earliest Date 和 Oldest Date 均为空,则该操作不会执行基于时间的过滤。

默认值为 @timestamp。

Oldest Date

可选。

搜索的开始日期。该操作会返回在此时间戳或之后发生的记录。

您可以提供确切的 UTC 时间戳 (YYYY-MM-DDTHH:MM:SSZ) 或相对日期数学(例如 now-1d)。

默认值为 now-1d。

Earliest Date

可选。

搜索的结束日期。该操作会返回在此时间戳当天或之前发生的记录。

您可以提供确切的 UTC 时间戳 (YYYY-MM-DDTHH:MM:SSZ) 或相对日期数学(例如 now)。

默认值为 now。

操作输出

高级 ES 搜索操作提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 不可用
案例墙表格 不可用
丰富化表 不可用
JSON 结果 不可用
输出消息 可用
脚本结果 可用
脚本结果

下表列出了使用高级 ES 搜索操作时脚本结果输出的值:

脚本结果名称 值
results RESULTS

使用 DSL 搜索操作对所有 OpenSearch 索引执行全面搜索,并以字典格式检索结果。

此操作不会在 Google SecOps 实体上运行。

操作输入

DSL 搜索操作需要以下参数:

参数 说明
Index

可选。

OpenSearch 索引的搜索模式(例如 smp_playbooks-2019.06.13)。您可以使用通配符搜索多个索引(例如 smp_playbooks-*)。

默认值为 *。

Query

可选。

使用 Lucene 语法执行的搜索查询(例如 level:error OR level:warning)。

默认值为 *。

Limit

可选。

要返回的文档数上限。将此值设置为 0 表示没有限制。

默认值为 100。

操作输出

DSL 搜索操作提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 不可用
案例墙表格 不可用
丰富化表 不可用
JSON 结果 可用
输出消息 可用
脚本结果 可用
JSON 结果

以下示例展示了使用 DSL 搜索操作时收到的 JSON 结果输出:

[
    {
        "_score": 0.2876821,
        "_type": "person",
        "_id": "2",
        "_source": {
            "lastname": "Smith",
            "name": "John",
            "job_description": "Systems administrator"
        },
        "_index": "accounts"
    }, {
        "_score": 0.28582606,
        "_type": "person",
        "_id": "1",
        "_source":
        {
            "lastname": "Doe",
            "name": "John",
            "job_description": "Systems administrator and Linux specialist"
        },
        "_index": "accounts"
    }
]
脚本结果

下表列出了使用 DSL 搜索操作时脚本结果输出的值:

脚本结果名称 值
results RESULTS

Ping

使用 Ping 操作测试与 OpenSearch 的连接。

此操作不会在 Google SecOps 实体上运行。

操作输入

无。

操作输出

Ping 操作提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 不可用
案例墙表格 不可用
丰富化表 不可用
JSON 结果 不可用
输出消息 可用
脚本结果 可用
脚本结果

下表列出了使用 Ping 操作时脚本结果输出的值:

脚本结果名称 值
is_success true 或 false

使用简单 ES 搜索操作,在 OpenSearch 中对所有已编入索引的字段执行基本搜索,并以字典格式检索结果。

此操作不会在 Google SecOps 实体上运行。

操作输入

简单 ES 搜索操作需要以下参数:

参数 说明
Index

可选。

OpenSearch 索引的搜索模式(例如 smp_playbooks-2019.06.13)。您可以使用通配符搜索多个索引(例如 smp_playbooks-*)。

默认值为 *。

Query

可选。

使用 Lucene 语法执行的搜索查询(例如 level:error OR level:warning)。

默认值为 *。

Limit

可选。

要返回的文档数上限。将此值设置为 0 表示没有限制。

默认值为 100。

操作输出

简单 ES 搜索操作提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 不可用
案例墙表格 不可用
丰富化表 不可用
JSON 结果 可用
输出消息 可用
脚本结果 可用
JSON 结果

以下示例展示了使用简单 ES 搜索操作时收到的 JSON 结果输出:

[{
    "_score": 0.2876821,
    "_type": "person",
    "_id": "2",
    "_source":
        {
          "lastname": "Smith",
          "name": "John",
          "job_description": "Systems administrator"
         },
     "_index": "accounts"
 },
 {
     "_score": 0.28582606,
     "_type": "person",
     "_id": "1",
     "_source":
       {
         "lastname": "Doe",
         "name": "John",
         "job_description": "Systems administrator and Linux specialist"
       },
    "_index": "accounts"
  }
 ]
脚本结果

下表列出了使用简单 ES 搜索操作时脚本结果输出的值:

脚本结果名称 值
results RESULTS

连接器

如需详细了解如何在 Google SecOps 中配置连接器,请参阅注入数据(连接器)。

OpenSearch 连接器

使用 OpenSearch 连接器,通过提供的 Lucene 查询搜索指定的 OpenSearch 索引,并将文档作为提醒注入 Google SecOps。

连接器输入

OpenSearch 连接器需要以下参数:

参数 说明
Product Field Name

必填。

存储商品名称的字段的名称。

商品名称主要影响映射。为了简化和改进连接器的映射过程,默认值会解析为代码中引用的后备值。默认情况下,此参数的任何无效输入都会解析为回退值。

默认值为 Product Name。

Event Field Name

必填。

决定事件名称(子类型)的字段名称。

默认值为 name。

Script Timeout (Seconds)

必填。

运行当前脚本的 Python 进程的超时限制(以秒为单位)。

默认值为 180。

Server Address

必填。

OpenSearch 实例的端点网址,包括协议和端口(例如 https://10.0.0.1:9200)。

Username

可选。

用于向 OpenSearch 实例进行身份验证的用户名。

Password

可选。

与指定用户名关联的密码。

Authenticate

可选。

如果选中,集成会使用提供的凭据对与 OpenSearch 服务器的连接进行身份验证。

API Token

可选。

用于身份验证的 API 令牌,可替代用户名和密码。

Verify SSL

可选。

如果选中,集成会在连接到 OpenSearch 服务器时验证 SSL 证书。

Alert Name Field

必填。

包含提醒名称的字段的名称(例如 _source_alert_info_alert)。

Timestamp Field

必填。

包含时间戳的字段的名称(例如 _source_@timestamp)。

Environment Field Name

可选。

存储环境名称的字段的名称。

如果缺少环境字段,连接器将使用默认值。

默认值为 ""。

Indexes

可选。

要搜索的索引模式。使用 * 可在所有索引中进行搜索。

Query

可选。

要使用 Lucene 语法执行的搜索查询。

Alerts Count Limit

必填。

单个周期内可提取的提醒数量上限。

默认值为 20。

Max Days Backwards

必填。

检索提醒时要回溯的天数。

此参数可应用于您首次启用连接器后的初始连接器迭代,或应用于过期连接器时间戳的后备值。

默认值为 1。

Severity Field Name

可选。

用于提取提醒严重级别值的字段名称。

如果该字段包含数值(整数或浮点数),连接器会自动将其映射到 Google SecOps 严重级别(例如,100 为 Critical)。如果该字段包含字符串值,您必须在 severity_map_config.json 文件中定义映射规则。

Proxy Server Address

可选。

要使用的代理服务器的地址。

Proxy Username

可选。

用于向代理服务器进行身份验证的用户名。

Proxy Password

可选。

用于向代理服务器进行身份验证的密码。

Environment Regex Pattern

可选。

要对 Environment Field Name 字段中找到的值运行的正则表达式模式。此参数可让您使用正则表达式逻辑来操纵环境字段。

使用默认值 .* 检索所需的原始 Environment Field Name 值。

如果正则表达式模式为 null 或空,或者环境值为 null,则最终环境结果为默认环境。

OpenSearch DSL 连接器

使用 OpenSearch DSL 连接器,通过使用领域特定语言 (DSL) 查询进行 REST API 调用,将文档作为提醒注入 Google SecOps。

连接器输入

OpenSearch DSL 连接器需要以下参数:

参数 说明
Product Field Name

必填。

存储商品名称的字段的名称。

商品名称主要影响映射。为了简化和改进连接器的映射过程,默认值会解析为代码中引用的后备值。默认情况下,此参数的任何无效输入都会解析为回退值。

默认值为 Product Name。

默认值为 device_product。

Event Field Name

必填。

决定事件名称(子类型)的字段名称。

默认值为 name。

Script Timeout (Seconds)

必填。

运行当前脚本的 Python 进程的超时限制(以秒为单位)。

默认值为 60。

Server Address

必填。

OpenSearch 实例的端点网址,包括协议(例如 https://10.0.0.1)。

Port

必填。

用于连接到 OpenSearch API 服务器的端口。

Query

必填。

用于搜索的 DSL 查询,采用 JSON 格式。

为提高连接器稳定性,建议在查询中包含按升序排列的排序时间戳键。

Index

必填。

用于搜索的索引。使用 _all 可在所有索引中进行搜索。

Timestamp Field

必填。

包含时间戳的字段的名称(例如 _source_@timestamp)。

Alert Field Name

必填。

包含提醒名称的字段的名称(例如 _source_info_alertname)。

Description Field

可选。

包含提醒说明的字段的名称(例如 _source_alert_info_description)。

Severity

必填。

要分配给所有提取的提醒的静态严重级别。如果 Alert Severity 和 Severity Field Name 为空,则使用此参数。

默认值为 Medium。

Alert Severity

可选。

要分配给提醒的严重级别。此参数的优先级高于 Severity Field Name。

如果您想使用 Severity Field Name 进行动态映射,请将此字段留空。

Severity Field Name

可选。

用于提取提醒严重级别值的字段名称。

如果该字段包含数值(整数或浮点数),连接器会自动将其映射到 Google SecOps 严重级别(例如,100 为 Critical)。如果该字段包含字符串值,您必须在 severity_map_config.json 文件中定义映射规则。

Alerts Count Limit

可选。

单个周期内可提取的提醒数量上限。

默认值为 100。

Authenticate

可选。

如果选择此选项,连接器会使用提供的凭据对连接进行身份验证。

Username

可选。

用于向 OpenSearch 实例进行身份验证的用户名。

Password

可选。

用于向 OpenSearch 实例进行身份验证的密码。

Use SSL

可选。

如果选中,连接器会启用与服务器的 SSL/TLS 连接。

Proxy Server Address

可选。

用于连接的代理服务器的地址。

Proxy Username

可选。

用于向代理服务器进行身份验证的用户名。

Proxy Password

可选。

用于向代理服务器进行身份验证的密码。

Environment Field Name

可选。

存储环境名称的字段的名称。

如果缺少环境字段,连接器将使用默认值。

默认值为 ""。

Environment Regex Pattern

可选。

要对 Environment Field Name 字段中找到的值运行的正则表达式模式。此参数可让您使用正则表达式逻辑来操纵环境字段。

使用默认值 .* 检索所需的原始 Environment Field Name 值。

如果正则表达式模式为 null 或空,或者环境值为 null,则最终环境结果为默认环境。

默认值为 .*。

符号支持

连接器支持三种不同的字段映射表示法。例如,如需映射 event.type,您可以提供 _source_event_type、event_type 或 event.type。

这适用于以下参数:

  • Product Field Name
  • Event Field Name
  • Severity Field Name
  • Environment Field Name
  • Timestamp Field
  • Alert Field Name
  • Description Field(仅限 DSL 连接器)

如何在连接器中映射严重级别

如果 Severity Field Name 包含数值(整数或浮点数),则连接器会按如下方式映射这些值:

  • 严重:100
  • 高:80 ≤ x < 100
  • 中:60 ≤ x < 80
  • 低:40 ≤ x < 60
  • 信息型:x < 40

对于字符串值,您必须更新连接器脚本文件夹中的 severity_map_config.json 文件。

配置示例

如需映射包含“Malicious”(恶意)、“Unknown”(未知)或“Benign”(良性)的 event.severity 字段,请执行以下操作:

  1. 在严重级别字段名称参数中输入 event.severity。
  2. 更新 severity_map_config.json:
{
    "event.severity": {
        "Malicious": 100,
        "Unknown": 60,
        "Benign": -1
    },
    "Default": 50
}

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