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…...
QT5集成libmodbus:多线程优化主从机通信的实践指南
1. 为什么需要多线程优化libmodbus通信 在工业监控软件开发中,我们经常遇到一个典型场景:上位机需要实时采集多个下位机的数据,同时还要保证用户界面的流畅响应。使用QT5集成libmodbus时,很多开发者会直接在主线程中实现数据采集逻…...
别再只盯着日志了!利用RDP的.bmc缓存文件做Windows终端服务器取证(附Python工具链)
挖掘RDP客户端缓存:被忽视的Windows终端会话可视化取证新维度 当服务器日志被刻意删除或篡改时,安全人员往往陷入取证僵局。但很少有人意识到,每台连接过远程桌面的Windows电脑里,都藏着一种特殊的"视觉日志"——RDP位图…...
如何用浏览器扩展将网页内容一键转换为AI知识库
如何用浏览器扩展将网页内容一键转换为AI知识库 【免费下载链接】anything-llm 这是一个全栈应用程序,可以将任何文档、资源(如网址链接、音频、视频)或内容片段转换为上下文,以便任何大语言模型(LLM)在聊天…...
别再只盯着代码了!手把手教你读懂Cartographer的PGM和YAML地图文件(附Notepad++实操)
从二进制到坐标系:Cartographer地图文件深度解析与实战调参指南 当你第一次打开Cartographer生成的.pgm和.yaml文件时,是否感觉像在解读某种外星密码?那些数字和参数背后,藏着机器人如何理解世界的秘密。本文将带你像侦探一样拆解…...
10xGenomics单细胞测序选3‘还是5‘?一文讲清免疫组库与基因表达分析的黄金选择
10xGenomics单细胞测序:3与5端策略在免疫组库与基因表达分析中的科学抉择 当实验室的离心机停止运转,科研人员往往面临一个关键抉择:该选择3还是5端单细胞测序?这个看似技术性的选择,实则直接影响着后续免疫组库分析的…...
5分钟掌握Google Drive受保护PDF下载:免费开源解决方案终极指南
5分钟掌握Google Drive受保护PDF下载:免费开源解决方案终极指南 【免费下载链接】Google-Drive-PDF-Downloader 项目地址: https://gitcode.com/gh_mirrors/go/Google-Drive-PDF-Downloader 还在为Google Drive中那些"仅查看"权限的PDF文件而烦恼…...
3个步骤掌握InjectFix热修复核心方案
3个步骤掌握InjectFix热修复核心方案 【免费下载链接】InjectFix InjectFix is a hot-fix solution library for Unity 项目地址: https://gitcode.com/gh_mirrors/in/InjectFix 核心能力解析 🔧 原生方法修复:解决线上函数逻辑错误 解决什么问…...
代码重构美学
代码重构美学大赛技术文章大纲大赛背景与意义代码重构的定义及其在软件开发中的重要性美学在代码重构中的体现:可读性、简洁性、可维护性大赛的宗旨:推动高质量代码实践,提升开发者审美与工程能力参赛作品评审标准功能性:重构后代…...
5分钟掌握OptiScaler:让所有显卡都能享受DLSS级画质的免费神器
5分钟掌握OptiScaler:让所有显卡都能享受DLSS级画质的免费神器 【免费下载链接】OptiScaler DLSS replacement for AMD/Intel/Nvidia cards with multiple upscalers (XeSS/FSR2/DLSS) 项目地址: https://gitcode.com/GitHub_Trending/op/OptiScaler 还在为显…...
简单三步:用Qwen3语义雷达,为你的网站添加智能搜索功能
简单三步:用Qwen3语义雷达,为你的网站添加智能搜索功能 1. 为什么需要语义搜索? 传统的网站搜索功能大多基于关键词匹配,这种技术存在明显局限。当用户搜索"如何解决电脑卡顿"时,如果知识库中只有"提…...
