首页/安全/取证与溯源速查/数据库审计日志要点
日志溯源53 条

数据库审计日志要点

审计开启时记录登录、DDL/DML 与高权限操作:关注新增账号、权限授予、批量导出语句、非业务时段变更。

取证与溯源速查安全更新于 2026-10-13

数据库审计日志能说明什么

数据库审计记录登录、权限变更、DDL 与数据操作,是还原“数据被谁在什么时候读取或修改”的关键来源。审计开启时可以看到新增账号、权限授予、批量导出语句与非业务时段的变更;审计未开启时只能用慢查询日志、连接日志、二进制日志与备份记录侧面佐证。不同数据库的审计实现差异较大:MySQL 8 可用通用查询日志、企业版审计插件或第三方审计插件,PostgreSQL 通过 log_statement 与 pgaudit 扩展,SQL Server 用审计与默认跟踪。

基本信息

适用平台MySQL 8 / MariaDB、PostgreSQL 12+、SQL Server 2016+、Oracle 等
MySQL 侧general_log(通用查询日志)、审计插件(企业版或第三方)、慢查询日志
PostgreSQL 侧log_statement(none/ddl/mod/all)、pgaudit 扩展、log_connections
SQL Server 侧SQL Server 审计(Server Audit)与默认跟踪
关键字段时间、执行账号、来源主机、语句文本、影响行数

典型使用场景

  • 确认是否存在异常导出:非业务账号对大表做全量查询
  • 核查权限提升与后门账号:新增账号、授予高权限、修改认证方式
  • 定位数据被篡改的时间与语句,支撑恢复与责任认定
  • 识别非业务时段的结构变更,与发布单核对
  • 评估数据泄露范围:哪些表、多少行、通过哪个账号被读取

关注模式与查询

关注模式与查询
-- 关注模式(人工筛查的重点)
-- 1) 新账号与权限变更
CREATE USER / GRANT ALL ON *.* / ALTER USER ... IDENTIFIED BY
-- 2) 大表全量导出
SELECT * FROM <大表> LIMIT 0, ... 或带 WHERE 1=1 的批量语句
-- 3) 无 WHERE 的批量修改
DELETE FROM t; UPDATE t SET c=1;
-- 4) 凌晨批量导出行为(结合时间字段筛选)
-- MySQL 8:通用查询日志以表形式查看(log_output=TABLE 时)
SELECT event_time, user_host, argument FROM mysql.general_log
ORDER BY event_time DESC LIMIT 20;

审计关注点对照

关注点典型记录判读要点
账号变更CREATE USER、ALTER USER、DROP USER比对账号台账,非计划新增即重点
权限授予GRANT、REVOKE全库全表权限与 SUPER 类权限最需关注
批量读取大表 SELECT、导出语句结合行数与时段判断是否为外带
批量修改无 WHERE 的 UPDATE/DELETE确认是否有备份与恢复窗口
来源主机连接来源地址来自陌生主机或非应用节点即为疑点
审计未开启时可用替代证据:慢查询日志能反映无索引的大范围扫描、二进制日志可回放数据变更、连接日志能补充来源与时段。这些只能部分替代,覆盖范围要在结论里写明。
业务语句多数由 ORM 框架生成,形态与手写 SQL 明显不同(带占位符、批量参数、固定表别名),判读时要先建立“正常语句形态”的基线,异常往往体现在语法风格突变。

易错点

  • 假设数据库开了审计:多数默认安装并未开启详细审计,先确认开关与日志位置再检索,避免把“没记录”当成“没发生”
  • 只看 SELECT 不看权限变更:后门账号与权限提升常出现在结构与管理语句中,遗漏会漏掉持久化
  • 忽略来源主机列:同一账号从应用节点与从外部主机登录的含义完全不同,方向判断错会误判影响范围
  • 把通用查询日志当长期可用证据:日志体量大且容易被关闭或轮转,重要案件应尽早评估开启与保留策略
  • 在数据库中直接执行清理语句:处置阶段的删除与回滚应先导出相关日志与备份,再按流程操作

数据来源与参考

  • MySQL 审计文档(通用)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌