暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MYSQL审计日志开启

IT那活儿 2024-10-21
136

点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!


安装审计组件

1.1 查看组件
mysql 可能需要增加组件才能使用server_audit.so,可以通过查看:show variables like'%audit%', show plugins; ;确认是否需要添加组件。
内容如下则表示不需要增加组件;如果查不到,表示没有组件需要,下载https://mariadb.com/kb/en/p ostdownload/mariadb-server-5-5-64/
1  mysql> show variables like '%audit%';
2  +-------------------------------+-----------------------+
3   | Variable_name | Value |
4 +-------------------------------+-----------------------+
5 |
 server_audit_events | |
6   | server_audit_excl_users |                       |
7 |
 server_audit_file_path | server_audit.log |
8   | server_audit_file_rotate_now | OFF |
9 |
 server_audit_file_rotate_size | 1000000 |
10   | server_audit_file_rotations | 9                     |
11 |
 server_audit_incl_users | |
12   | server_audit_loc_info |                        |
13 |
 server_audit_logging | OFF |
14   | server_audit_mode | 1                     |
15 |
 server_audit_output_type | file |
16   | server_audit_query_log_limit | 1024                   |
17 |
 server_audit_syslog_facility | LOG_USER |
18   | server_audit_syslog_ident | mysql-server_auditing |
19 |
 server_audit_syslog_info | |
20   | server_audit_syslog_priority | LOG_INFO |21 +-------------------------------+-----------------------+

1.2 安装组件
插件 server_audit.so 包含在 MariaDB 分支程序中,下载 5.x 版本的 MariaDB server,解压后即可找 到。
MySQL 执行命令,获取插件目录路径

1 SHOW GLOBAL VARIABLES LIKE 'plugin_dir';
2 cp server_audit.so mysql/app/mysql/lib/plugin
3 INSTALL PLUGIN server_audit SONAME 'server_audit.so';
4 show plugins;


配置组件

2.1 开启插件,需要用户具有 SUPER 权限
1 SET GLOBAL server_audit_logging=ON;
2.2 创建审计日志文件存放路径
在 mysql datadir 中创建 auditlog 目录
1 mkdir -p auditlog
2 chown -R mysql:mysql auditlog
3 chmod 750 auditlog
4 set global server_audit_file_path='/auditlog/server_audit.log';

2.3 设置审计日志的相关参数
  • 1  set global server_audit_events='QUERY_DDL,QUERY_DCL'
    不记录select查询操作,只记录增删 改、DDL操作。
  • 2  set global server_audit_output_type= file
    文件形式保存。
  • 3  set global server_audit_logging = 1
    开启。
  • 4 set global server_audit_file_rotate_size =1073741824
    单个日志大小(单位:字节),文件到 达该大小后,会自动切换。
  • 5  set global server_audit_file_rotations = 3
    日志保存数量。
  • 6  set global server_audit_incl_users = ''
    审计的在内用户,空则所有都记录。
  • 7  set global server_audit_excl_users = ''
    审计的不在内用户,空则所有都记录。
  • 8 set global server_audit_query_log_limit = 4096
    限制记录中查询字符串的长度。
2.4 为了永久生效,必须还要在配置文件中添加如下内容
#修改mysql配置文件/etc/my.cnf:
1   [mysqld]
2  server_audit_logging=ON
3  server_audit_events=QUERY_DDL,QUERY_DCL
4  server_audit_output_type= file
5  server_audit_file_rotate_size =1073741824
6  server_audit_file_rotations = 3
7  server_audit_file_path=/auditlog/server_audit.log
8  server_audit=FORCE_PLUS_PERMANENT

配置文件中不得出现:

skip-grant-tables


审计内容说明

日志呈现方式:
[timestamp],[serverhost],[username],[host],[connectionid],[queryid],[operation], [database],[object],[retcode]
20231225 17:15:15,MYSQL57,root,localhost,5,75,QUERY,erp-log,'create table test_auditq(au_id int,event char(50))',0

  • timestamp
    事件发生的时间。如果使用syslog,则格式由 syslogd 定义。
  • syslog_host
    接收系统日志条目的主机。
  • syslog_ident
    用于标识系统日志条目,包括MariaDB服务器。
  • syslog_info
    用于提供标识系统日志条目的信息。
  • serverhost
    MariaDB服务器主机名。
  • username
    连接的用户。
  • host
    用户连接的主机。
  • connectionid
    相关操作的连接标识号。
  • queryid
    查询ID号,可用于查找关系表事件和相关查询。对于TABLE事件,将添加多行。
  • operation
    记录的动作类型:CONNECT, QUERY, READ, WRITE, CREATE, ALTER, RENAME, DROP ·  database 活动数据库(由 USE 设置)。
  • object
    对QUERY事件或TABLE事件的表名执行查询。
  • retcode

    返回已记录操作的代码。


测试
1 use test_db
2 create table test_auditqq(au_id int,event char(50));
3 tail -1000f /home/mysql/mysql57_3306/auditlog/server_audit.log

END


本文作者:陈 浩(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论