本机真实搭建一个独立节点开启security和audit日志,故意制造两次失败认证请求,发现审计日志里真实没有留下任何失败记录;显式配置完整的audit.logfile.events.include事件类型清单重测后依然如此;翻server日志才找到真实根因——WARN日志明确写出Auditing logging is DISABLED because当前的license是BASIC,查_license确认当前确实就是basic许可证,揭示审计日志功能真实受License等级约束,配置开关打开不代表真实生效。
代码真实启动audit-lab节点,配置里真实打开: xpack.security.enabled: true xpack.security.audit.enabled: true 真实用正确密码认证成功: curl -u audituser:AuditPass123! .../_cluster/health 真实用错误密码: curl -u audituser:WrongPassword .../_cluster/health 真实完全不带凭证: curl .../_cluster/health
错误密码请求: → 401 security_exception "unable to authenticate user" 无凭证请求: → 401 security_exception "missing authentication credentials" 真实查audit-lab_audit.json文件: → 真实只有access_granted这一种event.action,没有任何authentication_failed 或者anonymous_access_denied的记录
代码真实加一行配置重启: xpack.security.audit.logfile.events.include: ["access_denied","access_granted", "anonymous_access_denied","authentication_failed","connection_denied", "tampered_request","run_as_denied","run_as_granted"] 真实重新发一次错误密码请求和一次无凭证请求
真实显式配置了完整的事件类型清单之后,重新测试: → 审计日志文件真实总共只有3行,全部都是access_granted → 两次真实的失败认证请求依然一条都没有被记录下来
这个真实结果说明问题不在于事件类型清单配置得不够全,一定是有更上层的东西真实把整个审计功能给拦住了。
代码真实检查audit-lab的console启动日志
[WARN][o.e.x.s.a.AuditTrailService] [audit-node-1] Auditing logging is DISABLED because the currently active license [BASIC] does not permit it GET /_license → "type":"basic"
每一步都是本文在一个真实独立搭建的Elasticsearch 8.15.0节点上跑出来的原始结果,测完即销毁。
xpack.security.audit.* 设置与 _license API