如何将Elastic Search审计日志转发至外部存储及自定义日志?
Elasticsearch审计日志:跨存储配置与自定义方法
一、把审计日志存到非本地文件系统的方案
Elasticsearch默认只往本地的_audit.json写审计日志,但可以通过两种常用方式转到其他存储:
- 用日志收集工具转发:用Filebeat、Logstash这类工具盯着本地的
_audit.json文件,把日志转去你想要的存储,比如:- 专门用来存日志的Elasticsearch集群
- S3、GCS这类云对象存储
- Kafka、RabbitMQ消息队列,后续再由其他服务处理存储
举个Filebeat的配置例子,在配置文件里加这段输入:
接着配置对应的输出目标就行。filebeat.inputs: - type: filestream paths: - /path/to/elasticsearch/logs/_audit.json json.keys_under_root: true json.add_error_key: true - 自定义日志输出插件:如果有开发能力,可以基于Elasticsearch用的Log4j2框架写个自定义Appender,直接把审计日志写到目标存储(比如数据库、远程文件服务器)。改一下Elasticsearch的
log4j2.properties配置,替换或者新增审计日志的Appender就行。
二、审计日志能不能自定义加信息?
可以,主要有两种方式:
- 先筛选要记录的事件:通过
xpack.security.audit.logfile.events.include或exclude配置,控制哪些审计事件被记录,比如只留登录失败、索引修改这类关键事件,减少没用的内容。 - 添加自定义字段:
- 日志收集阶段加:用Filebeat、Logstash这类工具,给日志添上主机名、集群标识、自定义标签这类信息;
- Elasticsearch内部加:写个自定义插件,在审计事件生成的时候注入自定义元数据,比如用户的额外属性、请求的业务ID之类的。
另外,Elasticsearch审计日志本身自带user_name、action、timestamp这些字段,你可以结合日志工具在这些基础上补信息。
注意:改完Elasticsearch的日志配置或者装了自定义插件后,得重启节点才生效,还要确保改动符合集群的安全规则。
内容的提问来源于stack exchange,提问作者lordav
相关产品推荐
相关产品推荐

