MariaDB开启日志审计功能
对于MySQL、Percona、MariaDB三家都有自己的审计插件,但是MySQL的审计插件是只有企业版才有的,同时也有很多第三方的的MySQL的审计插件,而Percona和MariaDB都是GPL的审计插件。MariaDB的审计插件,默认是没有安装的的,安装该插件并开启审计功能后,可以将对数据库的各种操作记录保存下来,以便追踪操作来源及具体操作。
MariaDB版本:
Server version: 10.4.19-MariaDB (该版本自带了server_audit插件)
一、MariaDB审计日志写到文件
1、安装server_audit插件
查看插件存放的目录,登陆进MariaDB,执行:
MariaDB [(none)]> show variables like '%plugin%';

ls /usr/lib64/mysql/plugin/

查看有没有一个叫做server_audit.so的文件,如果没有的话,到http://www.skysql.com/downloads/mariadb-audit-plugin-beta去下载放到目录下即可。
2、安装插件
MariaDB [(none)]> INSTALL PLUGIN server_audit SONAME 'server_audit.so';
或者编辑数据库的配置文件my.cnf,添加如下内容:
[mysqld]
plugin-load=server_audit.so
安装后,可登陆客户端查看audit相关的全局变量:
MariaDB [(none)]> show global variables like '%audit%';

3、打开日志的审计功能
从上图可以看到,现在插件已将安装上了,但是还没有开启,可通过以下命令进行开启:
MariaDB [(none)]> set global server_audit_logging=1;
通过命令开启该功能后,一旦数据库服务重启后便会失效,可以通过在配置文件添加避免这个问题:
[mysqld]
server_audit_logging=on
开启后,查看audit插件的运行状态:
MariaDB [(none)]> show global status like '%audit%';
各参数含义如下:
server_audit_active :ON (表示server_audit插件在运行);
server_audit_current_log : server_audit.log(审计日志路径和日志名);
server_audit_last_error : 错误消息;
server_audit_writes_failed : 因错误没有记录的日志条目数;
可对audit相关的变量通过命令行进行设置,也可以直接在配置文件my.cnf中进行配置,常用变量设置如下:
set GLOBAL server_audit_file_path='/data/logs/mariadb/server_audit.log'; --日志保存路径
set GLOBAL server_audit_events='connect,query,table'; --日志记录的操作
set GLOBAL server_audit_events='query_ddl,query_dml'; --不记录select查询操作,只记录增删改、DDL操作
set GLOBAL server_audit_incl_users ='test,user,root'; --审计的用户对象,不设置则针对所有用户
set GLOBAL server_audit_file_rotate_size=1073741824; --单个日志大小(单位:字节),文件到达该大小后,会自动切换
set GLOBAL server_audit_file_rotations=9; --日志保存数量
为了防止server_audit插件被卸载,可以在在配置文件my.cnf中添加如下选项:
[mysqld]
server_audit=FORCE_PLUS_PERMANENT
然后重启数据库后生效。
4、卸载插件
在MySQL客户端中执行如下命令:
MariaDB [(none)]> UNINSTALL PLUGIN server_audit;
验证卸载是否完成:
MariaDB [(none)]> show variables like '%audit%';
Empty set (0.00 sec)
卸载的步骤:
1、如果在数据库的配置文件中配置了server_audit相关的选项,需要先在配置文件里把这项配置项注释掉,再重启mariadb。
2、然后在客户端执行UNINSTALL PLUGIN server_audit;才能卸载掉这个插件。
3、卸载插件完成后,执行show variables like '%audit%';仍然能看到这个插件的可用参数,再次重启mariadb才行。
二、MariaDB审计日志写到syslog
将MariaDB审计日志写到syslog的方法,与写入到日志文件中的方法基本相同,就是多了一条显式的指定日志的存储方式而已。
改变审计日志输入类型,即更改参数server_audit_output_type的值,命令如下:
MariaDB [(none)]> SET GLOBAL server_audit_output_type=SYSLOG;
需要重启rsyslog服务后生效,命令如下:
# /etc/init.d/rsyslog restart
通过MySQL客户端连接到数据库后,执行一些数据库、表的操作,可以在syslog里看到操作的记录:
# tailf /var/log/messages
默认的审计日志都是记录在/var/log/message文件里,不方便我们查看,可以修改下系统日志的配置文件:
# vim /etc/rsyslog.conf
在*.info;mail.none;authpriv.none;cron.none;local4.none /var/log/messages的下面加一行:
if $programname =='mysql-server_auditing' then /data/logs/mariadb/mariadb_audit_log
然后在重启rsyslog服务:
# /etc/init.d/rsyslog restart
这样的话,就能将审计的日志输出到独立的文件/data/logs/mariadb/mariadb_audit_log里面。
(注意:审计日志在/var/log/messages写一遍,在/data/logs/mariadb/mariadb_audit_log再写一遍,不是单单只写到/var/log/mariadb_audit_log里面的)
通过MySQL客户端连接到数据库后,执行一些数据库、表的操作,可以在指定的日志文件里看到操作的记录:
# tailf /data/logs/mariadb/mariadb_audit_log
补充:MariaDB Audit Plugin和init-connect+binlog比较
(1)、init-connect+binlog方案要求用户对日志表至少有insert权限,每添加一个新用户都要进行授权,显得比较麻烦;而MariaDB Audit Plugin默认会对所有用户进行行为审计,不需要对新添加的用户进行授权,MariaDB Audit Plugin还可以指定对哪些用户进行行为审计,哪些用户不需要进行行为审计;
(2)、init-connect+binlog方案无法对具有super权限的用户进行行为审计,而MariaDB Audit Plugin可以对所有用户进行行为审计,包括具有super权限的用户;
(3)、init-connect+binlog方案需要修改配置文件之后重启MySQL生效,而MariaDB Audit Plugin可以在线进行配置,无需重启服务生效;
(4)、init-connect+binlog方案审计信息输出到binlog中,MariaDB Audit Plugin可以选择将审计信息输出到syslog或者自定义的路径。
来源:https://www.jianshu.com/p/57368ff55072
MariaDB开启日志审计功能的更多相关文章
- 开启mysql审计功能
下面方式是在线开启,重启后会失效: 1.mysql社区版没有审计插件,先获取server_audit.so文件,我是先在一台测试服务器上安装了一个mariadb数据库,然后搜索find / -name ...
- [置顶] 使用struts拦截器+注解实现网络安全要求中的日志审计功能
J2EE项目中出于安全的角度考虑,用户行为审计日志功能必不可少,通过本demo可以实现如下功能: 1.项目中记录审计日志的方法. 2.struts拦截器的基本配置和使用方法. 3.struts拦截器中 ...
- 利用SHELL的PROMPT_COMMAND添加日志审计功能,实时记录任何用户的操作到日志文件中
利用 PROMPT_COMMAND 实现命令审计功能:记录什么用户,在什么时间,做了什么操作,然后将查到的信息记录到一个文件里. 具体操作: 将以下内容追加到/etc/profile: ####### ...
- 日志审计功能-appent多个日志
public static void main(String[] args) { Jedis jedis = new Jedis("127.0.0.1"); jedis.setnx ...
- mysql开启日志查询功能
set global general_log_file='/tmp/general.lg';set global general_log=on; show global variables like ...
- 开启spark日志聚集功能
spark监控应用方式: 1)在运行过程中可以通过web Ui:4040端口进行监控 2)任务运行完成想要监控spark,需要启动日志聚集功能 开启日志聚集功能方法: 编辑conf/spark-env ...
- Linux系统实战项目——sudo日志审计
Linux系统实战项目——sudo日志审计 由于企业内部权限管理启用了sudo权限管理,但是还是有一定的风险因素,毕竟运维.开发等各个人员技术水平.操作习惯都不相同,也会因一时失误造成误操作,从而 ...
- 【原创】大叔经验分享(47)yarn开启日志归集
yarn开启日志归集功能,除了配置之外 yarn.log-aggregation-enable=true 还要检查/tmp/logs目录是否存在以及权限,尤其是在开启kerberos之后,有些目录可能 ...
- 日志审计系统、事件日志审计、syslog审计
日志审计系统.事件日志审计.syslog审计 任何IT机构中的Windows机器每天都会生成巨量日志数据.这些日志包含可帮助您的有用信息: · 获取位于各个Windows事件日志严重性级别的所有网络活 ...
随机推荐
- Linux常用命令整理:文件目录管理
据说,你要对Linux文件做的事情,98%都记录在这篇文章里了. 1.ls命令 最常见的命令,相信刚进入linux命令行界面的时候,都要用这个命令看看当前目录下都有哪些文件吧. 名称:List 含义: ...
- Ceres 四重奏 之 入门简介
Ceres 翻译为谷神星,是太阳系中的一颗矮行星,于1801年被意大利神父 Piazzi 首次观测到,但随后 Piazzi 因为生病,跟丢了它的运行轨迹. 几个月后,德国数学家 Gauss,利用最小二 ...
- x86架构中的外部中断结构-Part 1:中断控制器的演化
本文主要讲解了x86体系架构从外部设备接受中断的过程,本文是系列文章的第一部分,试图回答以下问题: 什么是PIC以及它的用途是什么? 什么是APIC以及它的用途是什么?LAPIC和I/O APIC的目 ...
- Vue脚手架报错 Component name "Student" should always be multi-word vue/multi-word-component-names
报错信息分析: 新手在第一个次使用脚手架的时候难免会遇到各种各样奇怪的问题,最近在学习Vue的过程中就出现了如下问题 通过阅读报错信息可知: 是我们的组件名有一些问题,(报错信息翻译过来大概就是组件名 ...
- 聊聊MySQL的加锁规则《死磕MySQL系列 十五》
大家好,我是咔咔 不期速成,日拱一卒 本期来聊聊MySQL的加锁规则,知道这些规则后可以判断SQL语句的加锁范围,同时也可以写出更好的SQL语句,防止幻读问题的产生,在能力范围内最大程度的提升MySQ ...
- pytest--conftest.py用法(单独存放fixtrue配置的一个文件)
1.conftest.py文件是什么 单独存放fixtrue配置的一个文件 用处是可以多个不同的pytest测试脚本共用一套fixture配置,代码维护方便 2.conftest.py使用注意事项 c ...
- NSSCTF-原来你也玩原神
是一个杂项的题目,看到题目名字的时候,以为是和之前遇到的一个杂项题里面的原神的编码有关,然后发现不是的,给的是一个压缩包文件,使用winhex打开,并没有看到压缩包的文件头也没有看到,使用一般常用的b ...
- [题解]UVA658 It's not a Bug, it's a Feature!
链接:http://vjudge.net/problem/viewProblem.action?id=22169 描述:有n个漏洞,m个修复漏洞的方法,每种方法耗时不一样,求修复漏洞的最短时间.每种方 ...
- 打印报表工具,web报表工具对比
1.jasperreport报表 有批量报表打印功能,但一般需要通过专门的编程实现批量报表打印:一些较简单的分片式打印能通过主子表实现:不能自动适应纸张大小:不支持分栏打印:不支持一纸多页打印:不支 ...
- SUSCTF2022 Misc-AUDIO&RA2
前言:这次参加了susctf感受颇深,题目难度不是很大很大,但是很考验基础的技术熟练度,比如re这次就因为不会套脚本去解密,导致卡死在了第一道题,一道没做出来.所以只做了做misc和web. RA2 ...