将 OpenSearch 与 Google SecOps 集成

集成版本:1.0

本文档介绍了如何将 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

可选。

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

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

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

操作

如需详细了解操作,请参阅 在工作台页面中处理待处理的操作执行手动操作

使用 Advanced ES Search 操作可在 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 DateOldest 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 Search 操作可在所有 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 Search 操作时收到的 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 truefalse

使用 Simple ES Search 操作可在 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 结果

以下示例展示了使用 Simple ES Search 操作时收到的 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 SeveritySeverity 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_typeevent_typeevent.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 文件。

配置示例

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

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

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