跨集群搜索和检测规则
跨集群搜索是一个 Elasticsearch 功能,允许一个集群(本地集群)查询另一个集群(远程集群)中的数据。Elastic Security 的检测规则可以执行跨集群搜索来查询远程集群中的数据。
- 要了解在 Elastic Stack 中使用跨集群搜索的要求,请参考跨集群搜索。
- 在 Elastic Stack 中将跨集群搜索用于 ES|QL 规则需要企业版订阅(Enterprise subscription)。
本节介绍了在检测规则中设置跨集群搜索的通用流程。有关流程各个部分的具体说明,请参考链接文档。
在本地集群上,使用以下方法之一建立信任并设置与远程集群的连接。无论使用哪种方法,请记住为远程集群指定的唯一名称,因为在整个过程中都需要使用它。
配置允许搜索远程索引的权限。所需的设置取决于用于连接集群的身份验证方法。有关完整详细信息,请参考配置跨集群搜索权限。
对于 API 密钥身份验证(推荐),远程集群的访问由跨集群 API 密钥控制,因此您只需在 本地 集群上创建一个角色。您无需在远程集群上创建角色。
在本地集群上创建一个角色,并为远程集群别名及要搜索的索引分配远程索引权限。分配
read、read_cross_cluster和view_index_metadata权限。例如,如果远程集群的连接名为
remote-security-data且您想要查询logs-*索引POST /_security/role/remote-search{ "remote_indices": [ { "clusters": [ "remote-security-data" ], "names": [ "logs-*" ], "privileges": [ "read", "read_cross_cluster", "view_index_metadata" ] } ] }如果用户还需查询本地索引或使用 Kibana,请将所需的本地权限添加到同一角色中,或为用户分配额外的角色。
对于 TLS 证书身份验证,本地用户的角色名称会被转发到远程集群,远程集群通过评估本地定义的具有 相同名称 的角色来授权请求。在本地集群和远程集群上分别创建一个 名称完全相同 的角色,并为每个角色分配以下权限
本地集群角色:为要搜索的索引分配
read权限,每个索引同时使用本地和远程索引模式。要指定远程索引,请使用模式<remote_cluster_name>:<index_name>。例如,如果远程集群的名称为
remote-security-data且您想要查询logs-*索引,请同时包含logs-*和remote-security-data:logs-*索引模式,并为它们分配read权限。远程集群角色:为要搜索的索引分配
read和read_cross_cluster权限。此处无需包含远程集群的名称。
在本地集群上
将您刚刚创建的角色分配给要配置跨集群检测规则的用户。
重要提示- 此步骤确保读取远程索引的权限从用户应用到规则本身。当用户创建新规则或保存对现有规则的修改时,其当前的权限将保存到规则的 API 密钥中。如果该用户的权限在未来发生更改,规则的 API 密钥不会自动更新,除非您手动更新它。有关详细信息,请参考更新规则的 API 密钥。
- 该用户还必须拥有管理和预览规则的相应权限。
以该用户身份,配置一个搜索远程索引的规则:创建或编辑规则,然后在 Source 部分输入
<remote_cluster_name>:<index_name>模式。
注意如果规则的 Source 使用的是数据视图而不是索引模式,您必须使用
<remote_cluster_name>:<index_name>模式单独为跨集群搜索定义该数据视图。有关定义数据视图的更多信息,请参考在跨集群搜索中使用数据视图。(可选)预览规则以测试其预期结果。
重要提示规则预览使用当前用户的跨集群搜索 privileges(权限),而规则本身在运行时使用的是在创建密钥时保密并保存到其 API 密钥中的权限快照。如果执行预览的用户所拥有的权限与规则 API 密钥中保存的权限不同,则预览结果可能会与规则的实际行为有所不同。
保存并启用规则。
每个检测规则都有其自己的 API 密钥,它决定了规则被允许访问的数据和操作。当用户创建新规则或修改现有规则时,其当前的权限将保存到规则的 API 密钥中。如果该用户的权限在未来发生更改,规则 不会 自动更新为该用户的最新权限——如果您想更新其权限,必须手动更新规则的 API 密钥。
规则的 API 密钥与您可能为 本地和远程集群之间的身份验证 创建的 API 密钥有所不同。
要更新规则的 API 密钥,请以拥有要应用于规则的权限的用户身份登录本地集群,然后执行以下任一操作
编辑并保存规则。
手动更新规则的 API 密钥
在导航菜单中查找 Stack Management 或使用全局搜索字段,然后转到 Rules。
使用搜索框和筛选器找到要更新的规则。例如,使用 Type 筛选器查找 Security 类别下的规则。
选择规则的操作菜单 ,然后选择 Update API key。
提示要更新多个规则,请勾选它们的复选框,然后单击 Selected x rules > Update API keys。