当前位置: 首页 > news >正文

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语言进阶 🔑个人信条: 🌵知行合一 &#x1f…...

无涯教程-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 装饰器基础 装饰器本质上是一个函数&#xff…...

什么是RESTful API,Spring MVC如何支持RESTful架构

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

cin、cin.getline()、getline()的用法【C++】

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

单向链表(c/c++)

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

像linux 一样清理Windows C盘

像 linux 有命令 du -sh 查看文件夹大小 但是windows 可就没有这个命令了&#xff0c;就算有命令&#xff0c;也不能扫描子目录里面的文件 但是windows 可以借助 软件来清理&#xff0c;和linux 一样 文件上面是目录&#xff0c;下面是文件所占用空间大小的图&#xff0c;咋…...

在Linux 下制作启动盘以及dd命令使用

在Linux 下制作启动盘以及dd命令使用 1、在Linux 下制作启动盘&#xff0c;可使用如下命令&#xff1a;2、Linux dd 命令(1)参数说明: 3、dd应用实例(1)将本地的/dev/hdb整盘备份到/dev/hdd(2)将/dev/hdb全盘数据备份到指定路径的image文件(3)将备份文件恢复到指定盘(4)备份/de…...

C语言插入排序

前言&#xff1a; 本文主要讲解插入排序中的直接插入排序和希尔排序。 1、直接插入排序&#xff1a; 1.1基本思想 直接插入排序是一种简单的插入排序法&#xff0c;其基本思想是把待排序的数值按照大小顺序逐个插入到一个已经排好序的有序序列中&#xff0c;直到将所有记录…...

SQL-DCL

DCL-管理用户 1.查询用户 USE mysql&#xff1b; SELECT * FROM user&#xff1b; 2.创建用户 CREATE USER “用户名”“主机名” IDENTIFIED BY "密码“&#xff1b; 3.修改用户密码 ALTER USER “用户名”“主机名” IDENTIFIED WITH mysql_native_password BY &quo…...

BiliTools:革新性开源B站资源下载工具,零基础也能轻松掌握的跨平台解决方案

BiliTools&#xff1a;革新性开源B站资源下载工具&#xff0c;零基础也能轻松掌握的跨平台解决方案 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持视频、音乐、番剧、课程下载……持续更新 项目地址: https://gitcode…...

如何通过AtlasOS实现Windows系统性能与隐私的双重提升:从卡顿到流畅的完整优化方案

如何通过AtlasOS实现Windows系统性能与隐私的双重提升&#xff1a;从卡顿到流畅的完整优化方案 【免费下载链接】Atlas &#x1f680; An open and lightweight modification to Windows, designed to optimize performance, privacy and security. 项目地址: https://gitcod…...

团队协作中的Git分支管理:为什么我们最终放弃了Rebase?

团队协作中的Git分支管理&#xff1a;为什么我们最终放弃了Rebase&#xff1f; 当我们的技术团队从5人扩展到20人时&#xff0c;Git仓库的提交历史突然变成了需要考古学家破译的楔形文字。最初被Rebase的"整洁线性历史"吸引的我们&#xff0c;在经历三个月的实践后&a…...

nli-distilroberta-base环境配置:Ubuntu/CentOS下Python依赖与CUDA版本兼容说明

nli-distilroberta-base环境配置&#xff1a;Ubuntu/CentOS下Python依赖与CUDA版本兼容说明 1. 项目概述 nli-distilroberta-base是一个基于DistilRoBERTa模型的自然语言推理(NLI)Web服务&#xff0c;专门用于判断两个句子之间的逻辑关系。该服务能够快速分析句子对&#xff…...

OpenClaw+Qwen3-VL:30B:低成本智能助手方案

OpenClawQwen3-VL:30B&#xff1a;低成本智能助手方案 1. 为什么选择本地部署的智能助手 去年我在团队内部推动了一个小实验&#xff1a;用公有云的对话API搭建了一个智能助手。三个月后收到账单时&#xff0c;那个数字让我意识到——对于长期运行的自动化任务&#xff0c;按…...

别再为XCode证书头疼了!Unity打包iOS App的保姆级避坑指南(含iOSDeviceSupport下载)

Unity打包iOS应用终极避坑手册&#xff1a;从Xcode证书到真机调试全链路解决方案 每次看到Unity打包iOS时Xcode弹出的红色错误提示&#xff0c;是不是感觉血压瞬间飙升&#xff1f;作为经历过上百次打包踩坑的老司机&#xff0c;我决定把那些官方文档从不提及的"隐藏关卡&…...

AI金融分析与智能交易系统:TradingAgents-CN全攻略

AI金融分析与智能交易系统&#xff1a;TradingAgents-CN全攻略 【免费下载链接】TradingAgents-CN 基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版 项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN 在数字化投资时代&#xff0c;如何…...

ICM45686数据老飘?GD32F470的IIC时序调试与FreeRTOS延时函数那些坑

GD32F470与ICM45686通信稳定性优化实战&#xff1a;从时序调试到FreeRTOS延时陷阱 当惯性导航系统的数据出现飘移、丢包或完全无法读取时&#xff0c;多数开发者会首先怀疑传感器硬件问题。但在使用GD32F470与ICM45686构建的系统中&#xff0c;真正的"魔鬼"往往藏在…...

如何用GPT-3.5的function calling功能对接理杏仁API获取金融数据(附完整代码)

金融数据智能对接实战&#xff1a;基于GPT-3.5函数调用与理杏仁API的深度整合 在金融科技领域&#xff0c;数据获取与处理的自动化一直是开发者关注的焦点。传统API对接往往需要编写大量固定逻辑的代码&#xff0c;而大语言模型的出现为这一流程带来了新的可能性。本文将深入探…...

QGIS插件开发实战:手把手教你用Python调用高德地图API做路径规划(附坐标转换避坑指南)

QGIS插件开发实战&#xff1a;Python集成高德地图API的路径规划全流程解析 当我们需要在QGIS中实现路径规划功能时&#xff0c;高德地图API提供了丰富的服务接口。本文将带你从零开始&#xff0c;开发一个能够调用高德地图API进行路径规划的QGIS插件&#xff0c;并重点解决开发…...