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"
}
- 我们从响应中获取“id”和“api_key”参数。
- 使用由冒号连接的“id”和“api_key”的 base64 编码,例如“id:api_key”。
- 该结果将用作集成中的 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 证书的集成,请完成以下步骤:
- 将您的 CA 证书文件解析为 Base64 字符串。
- 打开集成配置参数页面。
- 将该字符串插入到 CA 证书文件字段中。
- 如需测试集成是否已成功配置,请选中验证 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 证书文件。 |
远程运行 | 复选框 | 尚未核查 | 否 | 选中此字段,以便远程运行配置的集成。选中后,系统会显示用于选择远程用户(客服人员)的选项。 |
操作
高级 ES 搜索
说明
预先制作的 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” |
限制 | 字符串 | 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 |
运行于
此操作会在所有实体上运行。
操作执行结果
脚本结果
脚本结果名称 | 值选项 | 示例 |
---|---|---|
结果 | 不适用 | 不适用 |
DSL 搜索
说明
搜索 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\" |
限制 | 字符串 | 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 |
简单 ES 搜索
说明
操作会搜索 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\" |
限制 | 字符串 | 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 专业人士那里获得解答。