日志文件审计事件忽略策略编辑

全面的审计跟踪对于确保问责制至关重要。它在事件响应期间提供了巨大的价值,甚至可能是证明合规性所必需的。

审计系统的缺点是不可避免的性能损失。事实上,审计跟踪会消耗 *I/O 操作*,而这些操作不再可用于用户查询。有时,审计跟踪的冗长可能会成为一个问题,即使通过事件类型限制(includeexclude 定义)也无法缓解。

审计事件忽略策略 是一种更精细地调整审计跟踪冗长程度的方法。这些策略定义了匹配将被 *忽略*(即:不打印)的审计事件的规则。规则匹配审计事件属性的值,并补充 includeexclude 方法。想象一下审计事件的主体和策略正在剔除不需要的事件。除了一个例外,所有审计事件都受忽略策略的约束。例外是类型为 security_config_change 的事件,这些事件无法被过滤掉,除非完全排除。

使用审计事件忽略策略时,您需要承认潜在的问责制漏洞,这些漏洞可能会导致非法行为无法被检测到。每当您的系统架构发生变化时,请花时间审查这些策略。

策略是命名的一组过滤规则。每个过滤规则都应用于单个事件属性,即 usersrealmsactionsrolesindices 属性之一。过滤规则定义了一个 Lucene 正则表达式 列表,规则匹配需要审计事件属性的值与其中 任何 一个正则表达式匹配。如果组成策略的 所有 规则都与事件匹配,则该策略匹配该事件。如果审计事件与 任何 策略匹配,则该事件将被忽略,因此不会被打印。所有其他不匹配的事件将照常打印。

所有策略都在 xpack.security.audit.logfile.events.ignore_filters 设置命名空间下定义。例如,以下名为 *example1* 的策略匹配来自 *kibana_system* 或 *admin_user* 主体的事件,这些主体对通配符形式为 *app-logs* 的索引进行操作

xpack.security.audit.logfile.events.ignore_filters:
  example1:
    users: ["kibana_system", "admin_user"]
    indices: ["app-logs*"]

由 *kibana_system* 用户生成并对多个索引进行操作的审计事件(其中一些索引与索引通配符不匹配)将不匹配。正如预期的那样,由所有其他用户生成的事件(即使仅对与 *indices* 过滤器匹配的索引进行操作)也不会匹配此策略。

不同类型的审计事件可能具有 不同的属性。如果事件不包含某些策略为其定义过滤器的属性,则该事件将不匹配该策略。例如,以下策略永远不会匹配 authentication_successauthentication_failed 事件,而不管用户的角色如何,因为这些事件模式不包含 role 属性

xpack.security.audit.logfile.events.ignore_filters:
  example2:
    roles: ["admin", "ops_admin_*"]

同样,具有多个角色(其中一些角色与正则表达式不匹配)的用户的任何事件也不会匹配此策略。

为了完整起见,虽然实际用例应该很少,但过滤器可以使用空字符串 ("") 或空列表 ([]) 匹配事件的缺失属性。例如,以下策略将匹配没有 indices 属性的事件(anonymous_access_deniedauthentication_success 和其他类型)以及对 *next* 索引的事件。

xpack.security.audit.logfile.events.ignore_filters:
  example3:
    indices: ["next", ""]