日志文件审计输出

编辑

logfile 审计输出是唯一的审计输出方式。它将数据写入日志目录中的 <集群名称>_audit.json 文件。

如果您覆盖了 log4j2.properties 文件并且没有为任何审计跟踪指定 appender,则审计事件将被转发到根 appender,默认情况下它指向 elasticsearch.log 文件。

日志条目格式

编辑

审计事件被格式化为 JSON 文档,每个事件在 <集群名称>_audit.json 文件中单独一行打印。条目本身不包含行尾分隔符。审计事件 JSON 格式比较特殊,因为大多数字段遵循点分隔名称语法、有序且包含非空字符串值。这种格式创建了一个类似于 CSV 的结构化列式外观,可以更容易地进行视觉检查(与等效的嵌套 JSON 文档相比)。

但是,有一些属性是上述格式的例外。 putdeletechangecreateinvalidate 属性(仅存在于具有 event.type: "security_config_change" 属性的事件中)包含生效的安全更改的嵌套 JSON 表示。因此,安全配置更改的内容不会显示为审计事件文档中的顶级点分隔字段。这是因为这些字段特定于特定类型的安全更改,并且不会出现在任何其他审计事件中。因此,列式格式的优点非常有限;在这种情况下,嵌套结构的节省空间的好处是更受青睐的权衡。

当存在 request.body 属性时(请参阅审计搜索查询),它包含一个字符串值,其中包含完整的 HTTP 请求正文,并根据 JSON RFC 4677 进行转义。

有一份审计事件类型列表,指定了每种条目类型的字段集以及示例。

日志文件输出设置

编辑

可以使用 elasticsearch.yml 文件中的设置来控制事件和有关记录内容的其他信息。请参阅已审计事件设置本地节点信息设置

请注意,当在审计事件中包含请求正文时,敏感数据可能会以明文形式进行审计,即使所有安全 API(例如更改用户密码的 API)在审计时都会过滤掉凭据。

您还可以配置 ES_PATH_CONF 中的 log4j2.properties 文件中日志文件的写入方式(或者查看源代码中的 log4j2.properties的相关部分)。默认情况下,审计信息会附加到标准 Elasticsearch logs 目录(通常位于 $ES_HOME/logs)中的 <集群名称>_audit.json 文件。该文件也会每天或达到 1GB 文件大小限制时进行轮换和存档。