ElasticsearchV7

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

配置 ElasticsearchV7 以与 Google Security Operations 搭配使用

如何创建 API 令牌

如需创建新的 API 令牌,请执行以下请求:

curl --location --request POST 'http://<server address>:<port>/_security/api_key' \
--header 'Authorization: Basic Base64(username, password)' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "siemplify-integration",
    "role_descriptors": {}
}':

响应示例:

{
  "id": "G1NIWnI",
  "name": "siemplify-integration",
  "api_key": "dSwyjWJ_Ql"
}
  1. 我们从响应中获取“id”和“api_key”参数。
  2. 使用由冒号连接的“id”和“api_key”的 base64 编码,例如“id:api_key”。
  3. 该结果将用作集成中的 API 令牌。

访问 Elasticsearch

Google SecOps 默认通过 TCP 端口 9200 上的 RESTful API 访问 Elasticsearch。Google SecOps 服务器将需要通过 TCP 9200(默认)或在 Elasticsearch 部署期间未使用的备用端口访问相关 Elasticsearch 节点。

在 Google SecOps 中配置 ElasticsearchV7 集成

有关如何在 Google SecOps 中配置集成的详细说明,请参阅配置集成。

使用 CA 证书配置 Elasticsearch 集成

您可以根据需要使用 CA 证书文件验证连接。

在开始之前,请确保您已具备以下条件:

  • CA 证书文件
  • 最新的 Elasticsearch 集成版本

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

  1. 将您的 CA 证书文件解析为 Base64 字符串。
  2. 打开集成配置参数页面。
  3. 将该字符串插入到 CA 证书文件字段中。
  4. 如需测试集成是否已成功配置,请选中验证 SSL 复选框,然后点击测试。

集成参数

使用以下参数配置集成:

参数显示名称 类型 默认值 为必需参数 说明
实例名称 字符串 不适用 否 您打算为之配置集成的实例的名称。
说明 字符串 不适用 否 实例的说明。
服务器地址 字符串 x.x.x.x 是 Elasticsearch 7.0.0 服务器的 IP 地址。
用户名 字符串 不适用 是 应使用哪个用户的电子邮件地址来连接到 Elasticsearch 7.0.0。
密码 密码 不适用 是 相应用户的密码。
API 令牌 密码 不适用 否 Elasticsearch XPack API 令牌。
身份验证 复选框 尚未核查 否 不适用
验证 SSL 复选框 尚未核查 否 如果您的 Elasticsearch 7.0.0 连接需要 SSL 验证,请选中此复选框(默认情况下处于未选中状态)。
CA 证书文件 字符串 不适用 否 CA 证书文件。
远程运行 复选框 尚未核查 否 选中相应字段,以便远程运行配置的集成。选中后,系统会显示用于选择远程用户(客服人员)的选项。

操作

说明

预先制作的 Elasticsearch 测试,可返回字词字典。

参数

参数 类型 默认值 说明
索引 字符串 *

Elasticsearch 索引的搜索模式。

在 Elastic 中,索引类似于 DatabaseName,数据存储在各种索引中。此参数用于定义要在哪些索引中进行搜索。可以是确切名称,例如“smp_playbooks-2019.06.13”,也可以使用通配符按模式进行搜索,例如“smp_playbooks-2019.06 ”或“smp”。

如需详细了解 Elasticsearch 索引,请访问 https://www.elastic.co/blog/what-is-an-elasticsearch-index

查询 字符串 *

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

IE1:“*”(这是一个通配符,将返回所有记录)

IE2: "level:error"

IE3:“level:information”

IE4:“level:error OR level:warning”

如需详细了解 Lucene 语法,请访问 https://www.elastic.co/guide/en/kibana/current/lucene-query.html#lucene-query\r\nhttps://www.elastic.co/guide/en/elasticsearch/reference/7.1/query-dsl-query-string-query.html#query-string-syntax

限制 字符串 100

限制返回的文档数量,例如:10。

0 = 无限制。

显示字段 字符串 *

限制返回的字段。默认值“*”= 返回所有字段。

您可以指定单个字段,例如“level”

搜索字段 字符串 _all

用于自由文本查询的搜索字段(当查询未指定字段名称时)。

默认值为“_all”,表示搜索所有字段。最好在“_all”字段中使用正确的 Lucene 语法,或在特定字段中进行文本搜索。

Ie1:搜索字段 = “_all”。查询 = "level:error",此查询将返回“level”字段等于“error”的所有记录。

Ie2:搜索字段 =“消息”,查询 =“登录提醒”。查询将返回“Message”字段包含文本“Login Alarm”的所有记录

时间戳字段 字符串 @timestamp 要根据时间进行过滤的字段的名称。默认值为 @timestamp。如果“最早日期”和“最晚日期”均为空,则不会进行基于时间的过滤。
最早日期 字符串 now-1d

搜索的开始日期。搜索将仅返回等于或晚于此时间点的记录。

输入可能采用确切的 UTC 时间:

格式:YYYY-MM-DDTHH:MM:SSZ

例如:2019-06-04T10:00:00Z

输入也可以采用相对形式(使用日期数学表达式):tie: "now"、"now-1d"、"now-1d/d"、"now-2h/h"

如需详细了解日期数学运算,请访问 https://www.elastic.co/guide/en/elasticsearch/reference/7.1/common-options.html#date-math

最早日期 字符串 现在

搜索的结束日期。搜索将仅返回时间等于或早于此时间点的记录。

输入可以是精确的 UTC 时间:

格式:YYYY-MM-DDTHH:MM:SSZ

例如:2019-06-04T10:00:00Z

输入也可以采用相对形式(使用日期数学):

例如:“now”“now-1d”“now-1d/d”“now-2h/h”

如需详细了解日期数学运算,请访问 https://www.elastic.co/guide/en/elasticsearch/reference/7.1/common-options.html#date-math

Run On

此操作会针对所有实体运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
结果 不适用 不适用

说明

搜索 Elasticsearch 中的所有内容,并以字典格式返回结果。此操作仅支持不含时间范围的查询,如果您想在查询中使用时间范围,请使用“高级 ES 搜索”操作。

参数

参数 类型 默认值 说明
索引 字符串 *

Elasticsearch 索引的搜索模式。

在 Elasticsearch 中,索引类似于 DatabaseName,数据存储在各种索引中。

此参数用于定义要在哪些索引中进行搜索。可以是确切名称,例如“smp_playbooks-2019.06.13”;也可以使用 () 通配符按模式搜索,例如“smp_playbooks-2019.06”或“smp*”。

如需详细了解 Elasticsearch 索引,请访问 https://www.elastic.co/blog/what-is-an-elasticsearch-index

查询 字符串 *

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

IE1:\"*\"(这是一个通配符,将返回所有记录)

IE2:\"level:error\"

IE3: \"level:information\"

IE4:\"level:error OR level:warning\"

如需详细了解 Lucene 语法,请访问 https://www.elastic.co/guide/en/kibana/current/lucene-query.html#lucene-query\r\nhttps://www.elastic.co/guide/en/elasticsearch/reference/7.1/query-dsl-query-string-query.html#query-string-syntax

限制 字符串 100

限制返回的文档数量,例如:10。

0 = 无限制

Run On

此操作会针对所有实体运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
结果 不适用 不适用
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"
    }
]

Ping

说明

测试验证与 Elasticsearch 服务器的连接。

参数

不适用

Run On

此操作会针对所有实体运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False

说明

操作会搜索 Elasticsearch 中的所有内容,并以字典格式返回结果。

参数

参数 类型 默认值 说明
索引 字符串 *

Elasticsearch 索引的搜索模式。

在 Elasticsearch 中,索引类似于 DatabaseName,数据存储在各种索引中。

此参数用于定义要在哪些索引中进行搜索。可以是确切名称,例如“smp_playbooks-2019.06.13”,也可以使用 () 通配符按模式进行搜索,例如“smp_playbooks-2019.06”或“smp*”。

如需详细了解 Elasticsearch 索引,请访问 https://www.elastic.co/blog/what-is-an-elasticsearch-index

查询 字符串 *

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

IE1:\"*\"(这是一个通配符,将返回所有记录)

IE2:\"level:error\"

IE3: \"level:information\"

IE4:\"level:error OR level:warning\"

如需详细了解 Lucene 语法,请访问 https://www.elastic.co/guide/en/kibana/current/lucene-query.html#lucene-query\r\nhttps://www.elastic.co/guide/en/elasticsearch/reference/7.1/query-dsl-query-string-query.html#query-string-syntax

限制 字符串 100

限制返回的文档数量,例如:10。

0 = 无限制。

Run On

此操作会针对所有实体运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
结果 不适用 不适用
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"
  }
 ]

连接器

在 Google SecOps 中配置 Elasticsearch v7 连接器

有关如何在 Google SecOps 中配置连接器的详细说明,请参阅配置连接器。

如需配置所选连接器,请使用下表中列出的连接器专用参数:

Elasticsearch 连接器

说明

本主题介绍了 Google SecOps 如何将 Elasticsearch 与用于提取和处理数据的机制和配置相集成。

将 Elasticsearch 提醒转发到 Google SecOps

Google SecOps 将使用提供的查询(使用 Lucene 查询语法)搜索指定的 Elasticsearch 索引,并返回 Elasticsearch 文档,这些文档将被翻译并根据上下文转化为案例的“提醒”。

连接器参数

使用以下参数配置连接器:

参数显示名称 类型 默认值 为必需参数 说明
默认环境 字符串 不适用 否 选择所需的环境。例如,“客户一”。
运行频率 整数 0:0:0:10 否 选择连接的运行时间。例如,“每天”。
商品字段名称 字符串 device_product 是 用于确定设备产品的字段名称。示例:_type。
事件字段名称 字符串 name 是 用于确定事件名称(子类型)的字段名称。示例:_source_match_event_id。
脚本超时(秒) 字符串 60 是 运行当前脚本的 Python 进程的超时限制(以秒为单位)。
服务器地址 字符串 不适用 是 Elasticsearch 服务器地址,即:http://{ip_address}:{port}
用户名 字符串 不适用 是 Elasticsearch 用户名。
密码 密码 不适用 是 Elasticsearch 密码。
身份验证 复选框 尚未核查 否 是否在连接时进行身份验证。
API 令牌 密码 不适用 否 Elasticsearch XPack API 令牌。
验证 SSL 复选框 尚未核查 否 是否在连接中使用 SSL。
“提醒名称”字段 字符串 不适用 是 提醒名称所在的字段的名称(扁平字段路径)。示例:_source_alert_info_alert
时间戳字段 字符串 不适用 是 时间戳所在字段的名称(扁平字段路径)。示例:source@timestamp
环境字段 字符串 不适用 否 环境所在的字段的名称(扁平字段路径)。示例:_source_environment
索引 字符串 不适用 否 要搜索的索引模式。示例:“*”
查询 字符串 不适用 否 搜索模式查询(Lucene 查询语法)。示例:“*”
Google 快讯数量上限 整数 20 是 一次拉取周期中拉取的提醒数量上限。示例:20。
回溯的天数上限 整数 1 是 自此日期起提取提醒的最长天数。示例:3.
严重程度字段映射 字符串 不适用 否 存储严重程度值的字段的名称。
代理服务器地址 字符串 不适用 否 要使用的代理服务器的地址。
代理用户名 字符串 不适用 否 用于进行身份验证的代理用户名。
代理密码 密码 不适用 否 用于进行身份验证的代理密码。
严重程度字段名称 字符串 不适用 否 如果您想根据字符串值映射严重程度,则需要创建映射文件。如需了解详情,请参阅文档门户。
环境正则表达式模式 字符串 .* 否

要对“环境字段名称”字段中找到的值运行的正则表达式模式。

默认值为 .*,用于捕获所有内容并返回未更改的值。

用于允许用户通过正则表达式逻辑来操纵环境字段

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

如何在连接器中映射严重程度

为了映射严重程度,您需要在“严重程度字段名称”参数中指定应使用哪个字段来获取严重程度值。在响应中,您可以获得 3 种类型的值:整数、浮点数和字符串。对于整数和浮点数,您无需进行任何其他配置。连接器将读取这些值,并根据 Google SecOps 标准对其进行映射。简要回顾一下整数值的映射方式:

  • 100 - 严重
  • 100 > x >= 80 高
  • 80 > x >=60 中等
  • 60 > x >=40 低
  • 40 > x 信息

如果响应中包含字符串,则需要进行额外配置。在连接器脚本所在的文件夹中,您将看到一个名为 severity_map_config.json 的配置文件。此文件定义了严重程度的映射规则。

最初,该文件将如下所示:

{
    "Default": 50
}

假设所需的值位于 event.severity 中。event.severity 可以包含以下值:“恶意”“良性”“未知”。

首先,我们必须在“严重程度字段名称”参数中指定我们将使用 event.severity。

其次,我们必须更新配置文件。

更改后,severity_map_config.json 文件应如下所示:

{
    "event.severity": {
        "Malicious": 100,
        "Unknown": 60,
        "Benign": -1
    },
    "Default": 50
}

现在,当连接器收到 event.severity = "恶意" 的事件时,会将其严重程度设置为“严重”。

连接器规则

白名单/黑名单

连接器不支持白名单/黑名单。

代理支持

连接器支持代理。

Elasticsearch DSL 连接器

说明

连接器通过使用 DSL 查询进行 REST API 调用来工作。

应用场景和示例

能够在 Elasticsearch 中使用 DSL 查询作为搜索参数。

连接器参数

使用以下参数配置连接器:

参数显示名称 类型 默认值 为必需参数 说明
默认环境 字符串 不适用 否 选择所需的环境。例如,“客户一”。
运行频率 整数 0:0:0:10 否 选择连接的运行时间。例如,“每天”。
商品字段名称 字符串 device_product 是 用于描述存储商品名称的字段的名称。
环境字段名称 字符串 "" 否

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

如果找不到环境字段,则环境为“”。

环境正则表达式模式 字符串 .* 否

要对“环境字段名称”字段中找到的值运行的正则表达式模式。

默认值为 .*,用于捕获所有内容并返回未更改的值。

用于允许用户通过正则表达式逻辑来操纵环境字段

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

脚本超时(秒) 整数 60 是 运行当前脚本的 Python 进程的超时时间限制。
服务器地址 字符串 不适用 是 Elasticsearch API 服务器的 IP 地址。
端口 字符串 不适用 是 Elasticsearch API 服务器的端口。
查询 字符串 不适用 是

用于搜索的 DSL 查询。

需要采用有效的 JSON 格式。

为了提高连接器的稳定性,建议添加一个按升序排列的排序时间戳键。

索引 字符串 不适用 是

用于搜索的索引。

例如:_all

时间戳字段 字符串 不适用 是

时间戳所在字段的名称。
示例:

source@timestamp

提醒字段名称 字符串 不适用 是

提醒名称所在字段的名称。
示例:

_source_info_alertname

说明字段 字符串 不适用 否

包含说明的字段的名称。
示例:

_source_alert_info_description

严重程度 字符串 中 是

提醒的严重程度。
可能的值:

信息

低

中

高

严重

Google 快讯数量上限 整数 100 否 限制连接器每次迭代返回的提醒数量。
身份验证 复选框 尚未核查 否 是否在连接上进行身份验证。
用户名 字符串 不适用 否 Elasticsearch 账号用户名。
密码 密码 不适用 否 Elasticsearch 账号密码。
Use SSL(使用 SSL) 复选框 尚未核查 否 用于启用 SSL/TLS 连接的选项。
严重程度字段名称 字符串 不适用 否 如果您想根据字符串值映射严重程度,则需要创建映射文件。如需了解详情,请参阅文档门户。
提醒严重程度 字符串 不适用 否

提醒的严重程度。

可能的值:信息、低、中、高、严重。

注意:此参数的优先级高于“严重程度字段名称”。如果您想使用“严重程度字段名称”,则应将此字段留空。

代理服务器地址 字符串 不适用 否 要使用的代理服务器的地址。
代理用户名 字符串 不适用 否 用于进行身份验证的代理用户名。
代理密码 密码 不适用 否 用于进行身份验证的代理密码。

支持的表示法

连接器支持三种表示法。例如,如果您想在“事件字段名称”参数中使用 event.type。在这种情况下,您可以提供 _source_event_type、event_type 或 event.type。所有这些值的行为方式都相同。

对于参数:

  • 商品字段名称
  • 事件字段名称
  • 严重程度字段名称
  • 环境字段
  • 时间戳字段
  • “提醒名称”字段
  • 提醒说明字段 - 此字段仅适用于 DSL 连接器

如何在连接器中映射严重程度

为了映射严重程度,您需要在“严重程度字段名称”参数中指定应使用哪个字段来获取严重程度值。在响应中,您可以获得 3 种类型的值:整数、浮点数和字符串。对于整数和浮点数,您无需进行任何其他配置。连接器将读取这些值,并根据 Google SecOps 标准对其进行映射。简要回顾一下整数值的映射方式:

  • 100 - 严重
  • 100 > x >= 80 高
  • 80 > x >=60 中等
  • 60 > x >=40 低
  • 40 > x 信息

如果响应中包含字符串,则需要进行额外配置。在连接器脚本所在的文件夹中,您将看到一个名为 severity_map_config.json 的配置文件。此文件定义了严重程度的映射规则。

最初,该文件将如下所示:

{
    "Default": 50
}

假设所需的值位于 event.severity 中。event.severity 可以包含以下值:“恶意”“良性”“未知”。

首先,我们必须在“严重程度字段名称”参数中指定我们将使用 event.severity。

其次,我们必须更新配置文件。

更改后,severity_map_config.json 文件应如下所示:

{
    "event.severity": {
        "Malicious": 100,
        "Unknown": 60,
        "Benign": -1
    },
    "Default": 50
}

现在,当连接器收到 event.severity = "恶意" 的事件时,会将其严重程度设置为“严重”。

连接器规则

白名单/黑名单

连接器不支持白名单/黑名单。

代理支持

连接器支持代理。

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