Apache Doris审计日志:用户操作行为监控

Apache Doris审计日志:用户操作行为监控

【免费下载链接】doris Apache Doris is an easy-to-use, high performance and unified analytics database. 【免费下载链接】doris 项目地址: https://gitcode.com/gh_mirrors/dori/doris

你是否曾因无法追踪数据库敏感操作而担忧数据安全?作为一款高性能统一分析数据库,Apache Doris提供了完善的审计日志(Audit Log)功能,可精准记录用户操作行为,满足合规审计与安全监控需求。本文将带你从零开始配置审计日志,掌握用户行为监控的核心方法。

审计日志基础配置

Apache Doris的审计日志功能通过FE(Frontend)配置启用,主要参数位于conf/fe.conf文件中。默认配置下审计日志处于禁用状态,需手动开启并设置关键参数:

参数名默认值说明
audit_log_dir$LOG_DIR审计日志存储路径,默认与系统日志同目录
audit_log_modulesslow_query, query日志记录模块,支持慢查询和普通查询
audit_log_roll_num10日志文件滚动数量,超过自动清理

启用步骤

  1. 编辑conf/fe.conf,取消以下参数注释并修改:
audit_log_dir = ${DORIS_HOME}/log/audit
audit_log_modules = slow_query, query, connection
audit_log_roll_num = 30
  1. 重启FE服务使配置生效:
cd /data/web/disk1/git_repo/gh_mirrors/dori/doris && ./bin/stop_fe.sh && ./bin/start_fe.sh

审计日志内容解析

启用后,审计日志会按模块生成不同文件,例如audit_query.log记录所有查询操作。典型日志条目格式如下:

2025-10-15 08:30:45 [USER=admin] [DB=analytics] [IP=192.168.1.100] [QUERY=SELECT * FROM user_data WHERE id=123] [ELAPSED=50ms] [ROWS=1]

关键字段说明:

  • USER:操作用户名
  • DB:操作数据库
  • IP:客户端IP地址
  • QUERY:执行的SQL语句
  • ELAPSED:执行耗时
  • ROWS:影响行数

审计日志持久化存储

审计日志默认以文本文件形式存储,适合短期查看。对于长期留存与分析,可通过审计加载器(Audit Loader)插件将日志导入Doris表中。该插件配置文件位于fe_plugins/auditloader/src/main/assembly/plugin.conf,核心配置项包括:

# 审计表配置
database=doris_audit_db__
audit_log_table=doris_audit_log_tbl__
slow_log_table=doris_slow_log_tbl__

# 加载参数
max_batch_size=52428800  # 50MB批处理大小
max_batch_interval_sec=60  # 60秒自动提交
frontend_host_port=127.0.0.1:8030  # FE流加载地址

自动建表:审计加载器会自动创建数据库和表结构,默认表名为doris_audit_log_tbl__,包含以下核心字段:

  • query_id: 查询唯一标识
  • user: 操作用户
  • client_ip: 客户端IP
  • sql: 执行的SQL语句(截断为4096字符)
  • start_time: 开始时间
  • end_time: 结束时间
  • elapsed_ms: 执行毫秒数

日志监控与分析实践

实时监控方案

对于需要实时监控的场景,推荐使用Doris的extension/beats/doris插件(基于Elastic Beats框架),该插件可:

  1. 实时采集审计日志文件
  2. 解析JSON格式日志内容
  3. 发送至Elasticsearch或Kafka

配置示例(filebeat.yml):

filebeat.inputs:
- type: log
  paths:
    - /data/doris/log/audit/audit_query.log*
processors:
  - dissect:
      tokenizer: "%{timestamp} [%{key}=%{value}]"
      field: "message"
output.elasticsearch:
  hosts: ["es-cn-xxxx.elasticsearch.aliyuncs.com:9200"]

典型审计场景查询

通过审计表可快速实现常见监控需求,例如:

  1. 查询管理员用户最近操作:
SELECT user, client_ip, sql, start_time 
FROM doris_audit_db__.doris_audit_log_tbl__
WHERE user = 'admin' 
ORDER BY start_time DESC 
LIMIT 100;
  1. 识别慢查询TOP10:
SELECT sql, elapsed_ms, user 
FROM doris_audit_db__.doris_audit_log_tbl__
WHERE elapsed_ms > 10000 
ORDER BY elapsed_ms DESC 
LIMIT 10;

审计日志高级特性

插件化架构

Doris采用插件化设计实现审计功能,核心实现位于fe_plugins/auditloader目录。该插件负责:

  • 从FE获取审计事件
  • 批量缓存日志数据
  • 通过Stream Load写入审计表

安全加固建议

  1. 限制审计表访问权限,仅DBA可查询:
REVOKE SELECT ON doris_audit_db__.doris_audit_log_tbl__ FROM 'public';
GRANT SELECT ON doris_audit_db__.doris_audit_log_tbl__ TO 'audit_admin';
  1. 启用审计日志加密存储,修改fe_plugins/auditloader/src/main/assembly/plugin.conf
enable_encryption=true
encryption_key_path=/etc/doris/audit_key

总结与最佳实践

配置审计日志时建议遵循以下最佳实践:

  1. 存储策略:重要审计日志建议保留90天以上,可通过audit_log_roll_num和日志归档脚本实现
  2. 性能平衡:高并发场景下建议设置audit_log_modules=slow_query仅记录关键操作
  3. 多层监控:结合实时采集工具与定期审计报表,构建全方位监控体系

通过本文介绍的方法,你已掌握Apache Doris审计日志的配置、存储与分析全流程。合理利用审计日志功能,可有效提升数据库安全性,满足等保合规要求,为数据资产构建坚实的安全防线。

【免费下载链接】doris Apache Doris is an easy-to-use, high performance and unified analytics database. 【免费下载链接】doris 项目地址: https://gitcode.com/gh_mirrors/dori/doris

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值