审计 Elasticsearch 搜索查询
ECE ECK Elastic Cloud Hosted Self Managed Serverless
没有专门用于搜索查询的审计事件类型。搜索查询会被分析和处理;处理会触发授权操作,这些操作会被审计。但是,当进行授权审计时,无法访问客户端提交的原始原始查询。
搜索查询包含在 HTTP 请求体中,但是,由 REST 层(在协调节点上)生成的某些审计事件可以切换为将请求体输出到审计日志。因此,必须审计请求体才能审计搜索查询。
要使某些审计事件包含请求体,请在 Elasticsearch 中配置以下设置
xpack.security.audit.logfile.events.emit_request_body: true
您可以通过 集群更新设置 API 应用此设置,如 配置审计日志记录 中所述。 或者,您可以修改所有节点中的 elasticsearch.yml
并重新启动以使更改生效。
审计时不执行任何过滤,因此当审计事件包含请求体时,敏感数据可能会以纯文本形式进行审计。 此外,请求体可能包含恶意内容,这些内容可能会破坏使用审计日志的解析器。
请求体作为转义的 JSON 字符串值 (RFC 4627) 打印到 request.body
事件属性。
并非所有事件都包含 request.body
属性,即使切换了上述设置也是如此。 包含这些属性的事件是
authentication_success
authentication_failed
realm_authentication_failed
tampered_request
run_as_denied
anonymous_access_denied
request.body
属性仅在协调节点上打印(处理 REST 请求的节点)。 大多数这些事件类型默认不包含。
一个好的实用建议是将 authentication_success
添加到要审计的事件类型(将其添加到 xpack.security.audit.logfile.events.include
中的列表),因为默认情况下不审计此事件类型。
通常,include 列表也包含其他事件类型,例如 access_granted
或 access_denied
。