ElasticsearchV7

集成版本:17.0

配置 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 语法,或在特定字段中进行文本搜索。

示例 1:搜索字段 =“_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

运行于

此操作会在所有实体上运行。

操作执行结果

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

说明

搜索 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 = 无限制

运行于

此操作会在所有实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
结果 不适用 不适用
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 服务器的连接。

参数

不适用

运行于

此操作会在所有实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
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 = 无限制。

运行于

此操作会在所有实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
结果 不适用 不适用
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 查询语法)。示例:“*”
提醒数量上限 整数 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

时间戳字段 字符串 不适用

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

来源@timestamp

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

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

_source_info_alertname

说明字段 字符串 不适用

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

_source_alert_info_description

严重程度 字符串

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

信息

严重

提醒数量上限 整数 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 专业人士那里获得解答。