zoukankan      html  css  js  c++  java
  • MySQL审计audit

    导读:
    MySQL社区版是不带审计功能的,如果要使用MySQL审计,可以考虑使用中间件(例如proxysql)或者是MariaDB的审计插件。这里以MariaDB的审计插件为例,实现MySQL 5.7的审计功能。
     
    版本信息
    操作系统版本               :CentOS 7.4
    MySQL数据库版本       :MySQL 5.7.27 社区版
    MariaDB审计插件版本 :1.4.0
     
    Note:
    1.MariaDB审计插件一直在更新,不同版本的审计插件功能也不同,每个版本的功能见:https://mariadb.com/kb/en/mariadb-audit-plugin-options-and-system-variables/#server_audit_file_rotate_now
    2.我们在给MySQL数据库安装审计插件时,需要从MariaDB里面拷贝审计插件。MariaDB版本与审计插件版本关系如下:https://mariadb.com/kb/en/mariadb-audit-plugin-versions/
    3.MySQL版本与审计插件版本没有特别的联系,建议下载最新。
     
     
    (一)下载安装
    直接下载MariaDB的二进制安装包,下载链接如下:
    下载完成之后,解压安装包。然后到plugin路径下,该路径是MariaDB存储插件的地方:
    mariadb-10.1.23-linux-x86_64/lib/plugin

    在该路径下存在 server_audit.so 文件,将其拷贝到MySQL服务器上。

     在MySQL数据库上查看其插件存放路径,如下:
    mysql> show variables like 'plugin_dir';
    +---------------+------------------------------+
    | Variable_name | Value |
    +---------------+------------------------------+
    | plugin_dir | /usr/local/mysql/lib/plugin/ |
    +---------------+------------------------------+

     将MariaDB的审计插件server_audit.so存放到该路径下

    [root@pro1 plugin]# ll
    ...
    -rw-r--r--. 1 root root 176810 Jan 7 16:17 server_audit.so
    ...
     
    # 修改插件权限
    [root@pro1 plugin]# chown mysql:mysql server_audit.so
    [root@pro1 plugin]# chmod 755 server_audit.so
    [root@pro1 plugin]# ll
    ...
    -rwxr-xr-x. 1 mysql mysql 176810 Jan 7 16:17 server_audit.so
    ...

     进入数据库安装插件

    mysql> INSTALL PLUGIN server_audit SONAME 'server_audit.so';
    Query OK, 0 rows affected (0.00 sec)

    安装之后,可以看到数据库插件了

    mysql> show plugins ;
    +----------------------------+----------+--------------------+-----------------+---------+
    | Name         | Status | Type  | Library         | License |
    +----------------------------+----------+--------------------+-----------------+---------+
    ...
    | SERVER_AUDIT | ACTIVE | AUDIT | server_audit.so | GPL |
    +----------------------------+----------+--------------------+-----------------+---------+
    (二)审计配置
    审计配置即修改参数信息即可,需要注意的是最好将其放入MySQL的参数文件(my.cnf),如果仅在数据库层面做修改,数据库重启后参数将失效。
    mysql> show variables like '%audit%' ;
    +-------------------------------+-----------------------+
    | Variable_name                 | Value                 |
    +-------------------------------+-----------------------+
    | server_audit_events           |                       |
    | server_audit_excl_users       |                       |
    | server_audit_file_path        | server_audit.log      |
    | server_audit_file_rotate_now  | OFF                   |
    | server_audit_file_rotate_size | 1000000               |
    | server_audit_file_rotations   | 9                     |
    | server_audit_incl_users       |                       |
    | server_audit_loc_info         |                       |
    | server_audit_logging          | OFF                   |
    | server_audit_mode             | 1                     |
    | server_audit_output_type      | file                  |
    | server_audit_query_log_limit  | 1024                  |
    | server_audit_syslog_facility  | LOG_USER              |
    | server_audit_syslog_ident     | mysql-server_auditing |
    | server_audit_syslog_info      |                       |
    | server_audit_syslog_priority  | LOG_INFO              |
    +-------------------------------+-----------------------+

    这里罗列了重点参数的含义:

     我的最终配置如下:

    mysql> show variables like '%audit%';
    +-------------------------------+-----------------------+
    | Variable_name                 | Value                 |
    +-------------------------------+-----------------------+
    | server_audit_events           | CONNECT               |
    | server_audit_excl_users       |                       |
    | server_audit_file_path        | server_audit.log      |
    | server_audit_file_rotate_now  | OFF                   |
    | server_audit_file_rotate_size | 100000000             |
    | server_audit_file_rotations   | 9                     |
    | server_audit_incl_users       |                       |
    | server_audit_loc_info         |                       |
    | server_audit_logging          | ON                    |
    | server_audit_mode             | 1                     |
    | server_audit_output_type      | file                  |
    | server_audit_query_log_limit  | 1024                  |
    | server_audit_syslog_facility  | LOG_USER              |
    | server_audit_syslog_ident     | mysql-server_auditing |
    | server_audit_syslog_info      |                       |
    | server_audit_syslog_priority  | LOG_INFO              |
    +-------------------------------+-----------------------+
    (三)审计日志解析
    一行代表一条完成的审计日志,日志中的字段用逗号分隔。各种事件将产生不同的审计记录,这些记录的格式个各不相同。根据审计事件,主要分为3类:
    (3.1)连接审计
    主要审计连接数据库、断开连接、连接失败等操作,其日志格式如下:
    [timestamp],[serverhost],[username],[host],[connectionid],0,CONNECT,[database],,0
    [timestamp],[serverhost],[username],[host],[connectionid],0,DISCONNECT,,,0
    [timestamp],[serverhost],[username],[host],[connectionid],0,FAILED_CONNECT,,,[retcode]

     (3.2)查询审计

    即审计select语句,其日志格式如下:
    [timestamp],[serverhost],[username],[host],[connectionid],[queryid],QUERY,[database],[object], [retcode]

     (3.3)表相关审计

    如果审计开启TABLE事件,则会审计创建、删除、重命名表等操作,日志格式如下:
    [timestamp],[serverhost],[username],[host],[connectionid],[queryid],CREATE,[database],[object],
    [timestamp],[serverhost],[username],[host],[connectionid],[queryid],READ,[database],[object],
    [timestamp],[serverhost],[username],[host],[connectionid],[queryid],WRITE,[database],[object],
    [timestamp],[serverhost],[username],[host],[connectionid],[queryid],ALTER,[database],[object],
    [timestamp],[serverhost],[username],[host],[connectionid],[queryid],RENAME,[database], [object_old]|[database_new].[object_new],
    [timestamp],[serverhost],[username],[host],[connectionid],[queryid],DROP,[database],[object],
     【完】

  • 相关阅读:
    python3.6下安装wingIDE破解方法
    Python 列表list 和 字符串str 互转
    c# 读取txt文件并分隔
    基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系
    Jquery ajax动态更新下拉列表的内容
    vs2015使用技巧-------- 查看类关系图
    Dapper 批量操作sql
    Linq批量建表
    WebRequest的get及post提交
    git -- 常用命令
  • 原文地址:https://www.cnblogs.com/lijiaman/p/14257861.html
Copyright © 2011-2022 走看看