MySQL 使用开源审计插件
文章目录
- 前言
- 1. 审计插件下载
- 2. 审计插件参数
- 2.1 server_audit_events
- 2.2 server_audit_excl_users
- 2.3 server_audit_output_type
- 2.4 server_audit_file_path
- 2.5 server_audit_file_rotate_now
- 2.6 server_audit_file_rotate_size
- 2.7 server_audit_file_rotations
- 2.8 server_audit_incl_users
- 2.9 server_audit_loc_info
- 2.10 server_audit_logging
- 2.11 server_audit_mode
- 2.12 server_audit_query_log_limit
- 2.13 server_audit_syslog_facility
- 2.14 server_audit_syslog_ident
- 2.15 server_audit_syslog_info
- 2.16 server_audit_syslog_priority
- 3. 审计插件使用
- 4. 卸载审计插件
- 5. 总结
前言
MySQL 只有企业版有审计插件,开源社区版没有审计插件。企业要通过等保需要开通审计功能,这里记录使用 MariaDB 开源审计插件,让 MySQL 社区版拥有审计功能。
1. 审计插件下载
审计插件是包含在 MariaDB 中的,所以需要先下载 MariaDB 然后将 server_audit.so
审计插件 copy 出来。
MariaDB 的 10.1 版本对应与 Oracle 的 MySQL 5.7 版本,这里是 MariaDB 官方下载地址 可以从链接里下载 MariaDB。
tar -zxvf mariadb-10.1.48-linux-systemd-x86_64.tar.gz
进入 /lib/plugin/
目录可以找到 server_audit.so
审计插件:
ll ./mariadb-10.1.48-linux-systemd-x86_64/lib/plugin/server_audit.so
-rw-r--r-- 1 esadmin mysql 245036 Oct 30 2020 ./mariadb-10.1.48-linux-systemd-x86_64/lib/plugin/server_audit.so
接下来,需要将插件 copy 到 MySQL 插件目录里面,可以执行下方 SQL 查询 MySQL base 目录:
select @@basedir;
+-------------------+
| @@basedir |
+-------------------+
| /usr/local/mysql/ |
+-------------------+
MySQL 插件目录在 basedir/lib/plugin/
下面,将插件 copy 到此目录:
cp /pg_data/mariadb-10.1.48-linux-systemd-x86_64/lib/plugin/server_audit.so /usr/local/mysql/lib/plugin/
修改文件属组,然后连接 MySQL 安装插件:
install plugin server_audit SONAME 'server_audit.so';
通过下方命令确认插件是否启动成功 Status = ACTIVE:
show plugins;
......
+----------------------------+----------+--------------------+-----------------+---------+
| Name | Status | Type | Library | License |
+----------------------------+----------+--------------------+-----------------+---------+
| SERVER_AUDIT | ACTIVE | AUDIT | server_audit.so | GPL |
+----------------------------+----------+--------------------+-----------------+---------+
2. 审计插件参数
通过下方参数可以查看审计插件涉及到的参数:
root@mysql 14:33: [(none)]>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 |
+-------------------------------+-----------------------+
2.1 server_audit_events
该参数设置需要保存哪些类型的 SQL 语句,可以保存的类型有:
CONNECT, QUERY, TABLE, QUERY_DDL, QUERY_DML, QUERY_DCL, QUERY_DML_NO_SELECT
如果没有设置该参数,将记录所有类型的 SQL 语句。
2.2 server_audit_excl_users
用户列表,设置后表示该列表的用户行为将不会被记录,相当于一个黑名单。
2.3 server_audit_output_type
指定日志输出类型,可为 SYSLOG 或 FILE,默认和推荐使用的模式都是 FILE 模式。
2.4 server_audit_file_path
当 server_audit_output_type=file 时,通过该参数可以设置日志存放目录,默认为 server_audit.log
表示在数据目录。
2.5 server_audit_file_rotate_now
强制日志文件轮转。
2.6 server_audit_file_rotate_size
限制日志文件的大小,默认为 1000000
2.7 server_audit_file_rotations
日志轮转的次数,默认为 0 表示不轮转。
2.8 server_audit_incl_users
用户列表,设置后表示哪些用户的操作需要被记录,优先级高于 server_audit_excl_users 参数列表。
2.9 server_audit_loc_info
记录内部信息,用户可忽略。
2.10 server_audit_logging
默认为 OFF,设置为 ON 表示打开审计日志记录。
2.11 server_audit_mode
内核人员开发调试使用的参数,用户可忽略。
2.12 server_audit_query_log_limit
限制审计日志记录中字符串长度,默认为 1024。
2.13 server_audit_syslog_facility
SYSLOG-mode 变量,设置一些 “facility”。
2.14 server_audit_syslog_ident
设置 ident 作为审计日志的一部分。
2.15 server_audit_syslog_info
将指定字符串添加到审计日志中。
2.16 server_audit_syslog_priority
SYSLOG-mode 变量,为 syslog 定义日志记录的优先级。
3. 审计插件使用
开启审计日志,每个日志大小为 5G 可以有 10 文件进行轮换。
server_audit_logging = ON
server_audit_file_path = /pg_data/mysql_audit_log
server_audit_file_rotate_size = 5G
server_audit_file_rotations = 10
server_audit_file_rotate_now = ON
server_audit_file_path 参数的目录需要提前创建好,并配置 mysql 属组,然后重启 MySQL 服务。
审计日志的记录格式是:
[timestamp],[serverhost],[username],[host],[connectionid],[queryid],[operation],[database],[object],[retcode]
20230830 15:55:51,db4,root,localhost,2,0,CONNECT,,,0
20230830 15:55:51,db4,root,localhost,2,1,QUERY,,'select @@version_comment limit 1',0
20230830 15:55:51,db4,root,localhost,2,2,QUERY,,'select USER()',0
20230830 15:55:56,db4,root,localhost,2,3,QUERY,,'show databases',0
20230830 15:56:16,db4,root,localhost,2,4,QUERY,,'SELECT DATABASE()',0
20230830 15:56:16,db4,root,localhost,2,6,QUERY,op_service_db,'show databases',0
20230830 15:56:16,db4,root,localhost,2,7,QUERY,op_service_db,'show tables',0
20230830 15:56:19,db4,root,localhost,2,19,QUERY,op_service_db,'show tables',0
20230830 15:59:25,db4,root,localhost,2,20,QUERY,op_service_db,'set global server_audit_syslog_ident = \'test01\'',0
4. 卸载审计插件
执行下方 SQL 卸载插件即可:
UNINSTALL PLUGIN 'server_audit';
5. 总结
以上就是审计日志的配置和使用说明,值得注意的是,开通审计会增加数据库性能开销,需要关注磁盘空间使用情况。
相关文章:
MySQL 使用开源审计插件
文章目录 前言1. 审计插件下载2. 审计插件参数2.1 server_audit_events2.2 server_audit_excl_users2.3 server_audit_output_type2.4 server_audit_file_path2.5 server_audit_file_rotate_now2.6 server_audit_file_rotate_size2.7 server_audit_file_rotations2.8 server_au…...
Python入门教程 | Python3 集合(Set)
Python3 集合(Set) 集合(set)是一个无序的不重复元素序列。 集合中的元素不会重复,并且可以进行交集、并集、差集等常见的集合操作。 可以使用大括号 { } 创建集合,元素之间用逗号 , 分隔, 或…...

视频汇聚/视频云存储/视频监控管理平台EasyCVR安全检查的相关问题及解决方法2.0
开源EasyDarwin视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,在视频监控播放上,TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放,可同时播放多…...

【C++模拟实现】反向迭代器的实现
【C模拟实现】反向迭代器的实现 目录 【C模拟实现】反向迭代器的实现反向迭代器的代码示例反向迭代器的模拟实现要点引入iterator模版参数rbegin()和rend()的实现 作者:爱写代码的刚子 时间:2023.9.5 前言:本篇博客主要介绍反向迭代器的实现&…...

Kubernetes技术--k8s核心技术持久化存储
有时候需要在集群中进行一些重要的数据进行持久化存储,然后需要的时候再进行挂载,那么下面我们一起来看看如何实现数据的持久化存储操作。 1.nfs网络存储 -1.找一台服务器做nfs的服务端,安装nfs。(这里我们直接在master上实现)。 这里应该找再单独的搭建一个node节点做持…...

【80天学习完《深入理解计算机系统》】第十四天 复习第三章
专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录) 文章字体风格: 红色文字表示&#…...

库中是如何实现string类的?
🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 …...

无涯教程-JavaScript - WORKDAY.INTL函数
描述 WORKDAY.INTL函数返回带有自定义周末参数的指定工作日数之前或之后的日期的序列号。周末参数指示哪些和多少天是周末。周末和指定为假期的任何日子均不视为工作日。 语法 WORKDAY.INTL (start_date, days, [weekend], [holidays])争论 Argument描述Required/OptionalS…...

STM32--蓝牙
本文主要介绍基于STM32F103C8T6和蓝牙模块实现的交互控制 简介 蓝牙(Bluetooth)是一种用于无线通信的技术标准,允许设备在短距离内进行数据交换和通信。它是由爱立信(Ericsson)公司在1994年推出的,以取代…...
java 实现原型模式
原型模式(Prototype Pattern)是一种创建型设计模式,它允许创建对象的副本,而无需暴露对象的创建细节。在Java中,原型模式通常通过克隆对象来实现。要实现原型模式,需要满足以下条件: 被克隆的对…...

maven本地安装jar包install-file,解决没有pom的问题
背景: 公司因为权限问题,没有所有的代码,内部maven还在搭建,所以需要拿到同事的jar包,本地install: mvn install:install-file -DgroupIdcom..framework -DartifactIdcloud-api -Dversion1.0.0-SNAPSHOT …...

【C++学习笔记】5、变量作用域
文章目录 【 1、局部变量 】【 2、全局变量 】【 3、局部变量和全局变量的初始化 】 作用域是程序的一个区域,一般来说有三个地方可以定义变量: 在函数或一个代码块内部声明的变量,称为局部变量。 在函数参数的定义中声明的变量,称…...

Python中的装饰器
迷途小书童的 Note 读完需要 5分钟 速读仅需 2 分钟 装饰器是一个非常有用而又常被误解的功能,可以让我们在不修改函数或类的源代码情况下给它们提供扩展功能。本文将通过具体示例带你深入理解 Python 装饰器的用法。 1 装饰器基础 装饰器本质上是一个函数ÿ…...

什么是RESTful API,Spring MVC如何支持RESTful架构
文章目录 🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏 ✨收录专栏:Java框架 ✨文章内容:Spring MVC支持RESTful架构 🤝希望作者的文章能对你有所帮助…...

cin、cin.getline()、getline()的用法【C++】
一、cin>> 用法1:输入一个数字或字符 #include <iostream> using namespace std; int main () {int a,b;cin>>a>>b;cout<<ab<<endl;return 0; } 用法2:接收一个字符串,遇“空格”、“TAB”、“回车”…...

单向链表(c/c++)
链表是一种常见的数据结构,其中运用到了结构体指针,链表可以实现动态存储分配,换而言之,链表是一个功能强大的数组,可以在某个节点定义多种数据类型,可以实现任意的添加,删除,插入节…...

像linux 一样清理Windows C盘
像 linux 有命令 du -sh 查看文件夹大小 但是windows 可就没有这个命令了,就算有命令,也不能扫描子目录里面的文件 但是windows 可以借助 软件来清理,和linux 一样 文件上面是目录,下面是文件所占用空间大小的图,咋…...
在Linux 下制作启动盘以及dd命令使用
在Linux 下制作启动盘以及dd命令使用 1、在Linux 下制作启动盘,可使用如下命令:2、Linux dd 命令(1)参数说明: 3、dd应用实例(1)将本地的/dev/hdb整盘备份到/dev/hdd(2)将/dev/hdb全盘数据备份到指定路径的image文件(3)将备份文件恢复到指定盘(4)备份/de…...

C语言插入排序
前言: 本文主要讲解插入排序中的直接插入排序和希尔排序。 1、直接插入排序: 1.1基本思想 直接插入排序是一种简单的插入排序法,其基本思想是把待排序的数值按照大小顺序逐个插入到一个已经排好序的有序序列中,直到将所有记录…...
SQL-DCL
DCL-管理用户 1.查询用户 USE mysql; SELECT * FROM user; 2.创建用户 CREATE USER “用户名”“主机名” IDENTIFIED BY "密码“; 3.修改用户密码 ALTER USER “用户名”“主机名” IDENTIFIED WITH mysql_native_password BY &quo…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...

【Oracle APEX开发小技巧12】
有如下需求: 有一个问题反馈页面,要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据,方便管理员及时处理反馈。 我的方法:直接将逻辑写在SQL中,这样可以直接在页面展示 完整代码: SELECTSF.FE…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...

计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...