mysql开启数据审计

插件方式

安装

社区版不提供审计功能,可以使用https://github.com/mcafee/mysql-audit, 这个审计插件
使用方式:
先下载插件:https://bintray.com/mcafee/mysql-audit-plugin/release

  1. 查看插件安装的目录
    show global variables like 'plugin_dir';
  2. 解压安装包,将安装包/lib/libaudit_plugin.so文件复制到插件安装目录/usr/lib64/mysql/plugin/
  3. 增加可执行权限:chmoa a+x libaudit_plugin.so
  4. /etc/my.cnf中增加plugin-load=AUDIT=libaudit_plugin.so
  5. 关闭SELinux(重要)
    需要关闭SELinux,否则将安装将出现error 1123 (hy000): can't initialize function 'audit'; plugin initialization function failed.
    /usr/sbin/sestatus -v查看SELinux状态,enabled:表示开启
    SELinux status:                 enabled
    SELinuxfs mount:                /sys/fs/selinux
    SELinux root directory:         /etc/selinux
    Loaded policy name:             targeted
    Current mode:                   enforcing
    Mode from config file:          enforcing
    Policy MLS status:              enabled
    Policy deny_unknown status:     allowed
    Max kernel policy version:      31
    
    关闭SELinux
    1. 临时关闭(无需重启,但重启后失效)
      setenforce 0 # 设置SELinux 成为permissive模式
      setenforce 1 # 设置SELinux 成为enforcing模式
    2. 永久关闭(需重启)
      修改/etc/selinux/config 文件
      SELINUX=enforcing改为SELINUX=disabled
  6. 在mysql控制台下执行
    INSTALL PLUGIN AUDIT SONAME 'libaudit_plugin.so';
    如果还是出现错误:error 1123 (hy000): can't initialize function 'audit'; plugin initialization function failed.
    解决办法:
    解决办法:用offest-extract.sh解决,方法如下:
    下载offset-extract.sh脚本: https://raw.github.com/mcafee/mysql-audit/master/offset-extract/offset-extract.sh
    加上可执行权限:chmod a+x offset-extract.sh
    执行:offset-extract.sh /usr/sbin/mysqld, 执行成功后会出现如下信息:
    {"5.7.24","ae633eb887552a3bbb5db3a1eea73d48", 76992, 7040, 4000, 4520, 72, 2704, 96, 0, 32, 104, 136, 7128, 4392, 2800, 2808, 2812, 536, 0, 0, 6360, 6384, 6368, 13048, 548, 516},
    然后在配置文件/etc/my.cnf中添加:
    audit_offsets=6992, 7040, 4000, 4520, 72, 2704, 96, 0, 32, 104, 136, 7128, 4392, 2800, 2808, 2812, 536, 0, 0, 6360, 6384, 6368, 13048, 548, 516
    重启mysql服务
  7. 验证插件是否安装成功
    show plugins;

使用

查看版本:show global status like 'AUDIT_version';
查看可配置的参数:SHOW GLOBAL VARIABLES LIKE '%audi%';
查看审计功能是否开启:Show variables like "audit_json_file";
开启审计功能:SET GLOBAL audit_json_file=ON;
查看数据存放目录:show global variables like 'datadir';
查看审计日志:tail -f /var/lib/mysql/mysql-audit.json
查看用户白名单(即不审计的用户):show global variables like 'audit_whitelist_users';
查看需要审计的命令种类(默认所有命令):show global variables like 'audit_record_cmds';

推荐配置

为了保证重启数据库,配置不丢失,修改my.cnf 配置文件,将下面的配置添加到[mysqld]中,所以在配置文件中my.cnf加入参数:
audit_json_file=on:保证mysql重启后自动启动插件
plugin-load=AUDIT=libaudit_plugin.so:防止删除了插件,重启后又会加载
audit_record_cmds='insert,delete,update,create,drop,alter,grant,truncate':要记录哪些命令语句,默认记录所有操作;
例如:

plugin-load=AUDIT=libaudit_plugin.so 
audit_offsets=7824, 7872, 3632, 4792, 456, 360, 0, 32, 64, 160, 536, 7988, 4360, 3648, 3656, 3660, 6072, 2072, 8, 7056, 7096, 7080, 13464, 148, 672
audit_json_file=on
audit_record_cmds='insert,delete,update,create,drop,alter,grant,truncate'
上一篇:Windows 2008 R2 配置本地策略—审核策略 重启失效解决办法


下一篇:c# – 实体框架创建审计表/历史表?