search
HomeDatabaseMysql TutorialMysql5.6审计功能_MySQL

1. 前言

为了安全和操作的可追溯性考虑,越来越多的公司加入了审计功能。mysql5.5推出了相关的审计功能,到5.6.20功能进一步完善,算是勉强可用了,虽然细粒度方面做的不是太好,但是后续版本还是可以期待一下的。这里主要介绍下相关的功能和特性。

2. 开启审计

2.1 配置文件加载

mysql5.6中的审计是通过audit_log插件来实现的,我们可以在配置文件中加载该插件来开启。
[mysqld]  
plugin-load=audit_log.so  

如果希望数据库强制开启审计功能,如果不开启的话server不启动,或者审计功能不能进行时server挂住,加入
[mysqld]  
plugin-load=audit_log.so  
audit-log=FORCE_PLUS_PERMANENT 

2.2 加载插件列表

审计功能的开启还有另外一种方式,就是在命令行中安装审计插件。确保在数据库的插件目录中存在audit_log.so。[i686数据库的插件目录默认是/usr/lib/mysql/plugin,中,也可以指定参数plugin_dir]
mysql> INSTALL PLUGIN audit_log SONAME 'audit_log.so';  

3. 参数介绍

审计参数如下: \

3.1 audit_log_buffer_size

audit_log_buffer_size :审计缓存,建议设置为4096的倍数,该参数只有在audit_log_strategy为ASYNCHRONOUS时生效。

3.2 audit_log_connection_policy

audit_log_connection_policy:记录了连接审计的信息。包含三个参数
Value Description
ALL Log all connection events
ERRORS Log only failed connection events
NONE Do not log connection events
如果设置了audit_log_policy可能会被覆盖。

3.3 audit_log_current_session

audit_log_current_session:标志当前会话是否进入审计,是个只读参数,只能通过 audit_log_exclude_accounts和 audit_log_include_accounts来控制哪儿些进入会话审计。

3.4 audit_log_exclude_accounts/audit_log_include_accounts

audit_log_exclude_accounts:控制哪儿些用户可以不进入审计,字符串类型,默认可以使用逗号分隔。
audit_log_include_accounts:控制哪儿些用户可以进入审计,字符串类型,默认可以使用逗号分隔。
exclude和include同时只有一个参数生效。

3.5 audit_log_file

audit_log_file:可以用于控制审计日志的名称和路径。

3.6 audit_log_flush

audit_log_flush:控制审计日志的归档,只有在audit_log_rotate_on_size=0的时候生效,在手工重命名审计日志归档后,可以指定audit_log_flush=1来生成新的审计日志。

3.7 audit_log_format

audit_log_format:审计日志的格式,分为OLD和NEW(NEW格式在5.6.14才出现)。当更改格式的时候需要进行3个步骤:
1 :关闭数据库 2:重命名当前的audit.log文件
3:更改audit_log_format参数,并重启mysql,重启后会自动生成一个新的audit.log文件
防止NEW格式和OLD格式在同一个审计日志中,会导致审计功能错误。 audit_log_policy :记录了审计日志的控制策略:
Value Description
ALL Log all events
LOGINS Log only login events
QUERIES Log only query events
NONE Log nothing (disable the audit stream

3.8 audit_log_statement_policy

audit_log_statement_policy:记录了语句的审计策略,可能会被audit_log_policy给覆盖:
Value Description
ALL Log all statement events
ERRORS Log only failed statement events
NONE Do not log statement events

3.9 audit_log_rotate_on_size

audit_log_rotate_on_size:审计日志的文件大小。当参数大于0的时候,当审计日志超过限制后,会自动的重命名为加时间戳后缀的日志文件。同时创建新的审计日志。

3.10 audit_log_strategy

audit_log_strategy:审计日志的刷新策略分为:
Value Meaning
ASYNCHRONOUS Log asynchronously, wait for space in output buffer
PERFORMANCE Log asynchronously, drop request if insufficient space in output buffer
SEMISYNCHRONOUS Log synchronously, permit caching by operating system
SYNCHRONOUS Log synchronously, call sync() after each request

4. 日志格式

审计日志格式是XML的形式,NEW要比OLD的标签详细一些。具体的标签信息如下: 实例:
<!--?xml version="1.0" encoding="UTF-8"?-->

 
  <timestamp>2013-09-17T15:03:24 UTC</timestamp>
  <record_id>1_2013-09-17T15:03:24</record_id>
  <name>Audit</name>
  <server_id>1</server_id>
  <version>1</version>
  <startup_options>/usr/local/mysql/bin/mysqld
    --socket=/usr/local/mysql/mysql.sock
    --port=3306</startup_options>
  <os_version>x86_64-osx10.6</os_version>
  <mysql_version>5.7.2-m12-log</mysql_version>
 </audit_record>
 
  <timestamp>2013-09-17T15:03:40 UTC</timestamp>
  <record_id>2_2013-09-17T15:03:24</record_id>
  <name>Connect</name>
  <connection_id>2</connection_id>
  <status>0</status>
  <status_code>0</status_code>
  <user>root</user>
  <os_login></os_login>
  <host>localhost</host>
  <ip>127.0.0.1</ip>
  <command_class>connect</command_class>
  <priv_user>root</priv_user>
  <proxy_user></proxy_user>
  <db>test</db>
 </audit_record>

...

 
  <timestamp>2013-09-17T15:03:41 UTC</timestamp>
  <record_id>4_2013-09-17T15:03:24</record_id>
  <name>Query</name>
  <connection_id>2</connection_id>
  <status>0</status>
  <status_code>0</status_code>
  <user>root[root] @ localhost [127.0.0.1]</user>
  <os_login></os_login>
  <host>localhost</host>
  <ip>127.0.0.1</ip>
  <command_class>drop_table</command_class>
  <sqltext>DROP TABLE IF EXISTS t</sqltext>
 </audit_record>
 
  <timestamp>2013-09-17T15:03:41 UTC</timestamp>
  <record_id>5_2013-09-17T15:03:24</record_id>
  <name>Query</name>
  <connection_id>2</connection_id>
  <status>0</status>
  <status_code>0</status_code>
  <user>root[root] @ localhost [127.0.0.1]</user>
  <os_login></os_login>
  <host>localhost</host>
  <ip>127.0.0.1</ip>
  <command_class>create_table</command_class>
  <sqltext>CREATE TABLE t (i INT)</sqltext>
 </audit_record>

...

 
  <timestamp>2013-09-17T15:03:41 UTC</timestamp>
  <record_id>7_2013-09-17T15:03:24</record_id>
  <name>Quit</name>
  <connection_id>2</connection_id>
  <status>0</status>
  <status_code>0</status_code>
  <user></user>
  <os_login></os_login>
  <host></host>
  <ip></ip>
  <command_class>connect</command_class>
 </audit_record>

...

 
  <timestamp>2013-09-17T15:03:47 UTC</timestamp>
  <record_id>9_2013-09-17T15:03:24</record_id>
  <name>Shutdown</name>
  <connection_id>3</connection_id>
  <status>0</status>
  <status_code>0</status_code>
  <user>root[root] @ localhost [127.0.0.1]</user>
  <os_login></os_login>
  <host>localhost</host>
  <ip>127.0.0.1</ip>
  <command_class></command_class>
 </audit_record>
 
  <timestamp>2013-09-17T15:03:47 UTC</timestamp>
  <record_id>10_2013-09-17T15:03:24</record_id>
  <name>Quit</name>
  <connection_id>3</connection_id>
  <status>0</status>
  <status_code>0</status_code>
  <user></user>
  <os_login></os_login>
  <host></host>
  <ip></ip>
  <command_class>connect</command_class>
 </audit_record>
 
  <timestamp>2013-09-17T15:03:49 UTC</timestamp>
  <record_id>11_2013-09-17T15:03:24</record_id>
  <name>NoAudit</name>
  <server_id>1</server_id>
 </audit_record>
</audit>


:文件的根标签为,并以 为结束标签
:包含一系列的必选标签和可选标签,可选标签是否出现取决于audit record类型。
:必选,例如Query,可能出现的值还包含Audit, Binlog Dump, Change user, Close stmt, Connect Out, Connect, Create DB, Daemon, Debug, Delayed insert, Drop DB, Execute, Fetch, Field List, Init DB, Kill, Long Data, NoAudit, Ping, Prepare, Processlist, Query, Quit, Refresh, Register Slave, Reset stmt, Set option, Shutdown, Sleep, Statistics, Table Dump, Time.
:必选,例如28743_2013-09-18T21:03:24,包含一些列数字和时间戳,数字表示的是记录数,每增加一条记录,数字加1.
:必选,例如2013-09-17T15:03:49 UTC,包含时间戳和时区两部分,记录的是从客户端接收到的sql执行完时刻的时间。
以下标签audit record类型决定是否出现
:命令的类型。例如drop_table.
:例如127,代表客户端连接标识符的无符号整型数字。
:mysql连接的默认数据库名称,该标签只在 值是Connect或Change user时出现.
:client端的主机名,该标签只在 值是Connect,Change user或Query时出现,例如localhost
:client端的IP地址,该标签只在 值是Connect,Change user或Query时出现,例如127.0.0.1
:mysql版本号,只在 值是Audit时出现,例如5.7.1-m11-log
:外部用户,该标签只在 值是Connect,Change user或Query时出现。
:表示运行数据库的服务器的操作系统,只在 值是Audit时出现,例如x86_64-Linux
:服务器认证的客户端名称。该标签只在 值是Connect或Change user时出现。例如root
:通过proxy连接到mysql的用户。该标签只在 值是Connect或Change user时出现。
:mysql数据库服务器的ID号,该标签只在 值是Audit或No Audit时出现。例如1
:实际执行的SQL语句。该标签只在 值是 Query 或 Execute时出现。例如DELETE FROM t1
:mysql数据库启动选项,该标签只在 值是Audit时出现,例如/usr/local/mysql/bin/mysqld --port=3306 --log-output=FILE
:代表sql命令的执行状态,0表示成功,其余表示有错误。例如1051
:代表sql命令的执行状态,0表示成功,1表示有错误。例如0
:客户端连接mysql服务器的用户名。例如root[root] @ localhost [127.0.0.1]
:表示日志文件格式的版本号。该标签只在 值是Audit时出现。例如1

5. 审计限制

审计日志默认存放在data路径下,由于XML文件没有经过加密,官网建议通过参数指定到特殊路径下,设置相应人员权限,进行安全控制。 此外审计功能有如下情况不能进行记录: 1)只有top-level(无变量定义)的语句才能进行审计,存储程序如存储过程,触发器,函数等不审计; 2)涉及到外部文件的语句无法进行审计,如load data infile。

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
使用JavaScript实现自动登录功能使用JavaScript实现自动登录功能Jun 15, 2023 pm 11:52 PM

随着互联网的发展,人们越来越依赖网络,大部分时间都在使用各种各样的网站和应用程序,这也使得我们需要记住很多账号和密码。为了方便用户的使用,很多网站提供了自动登录功能,让用户免除频繁输入账号和密码的烦恼。本文将介绍使用JavaScript实现自动登录功能的方法。一、登录流程分析在开始实现自动登录功能之前,我们需要了解整个登录流程。一般情况下,一个网站的登录流程

如何使用PHP实现天气预报功能如何使用PHP实现天气预报功能Jun 27, 2023 pm 05:54 PM

PHP作为一款流行的后端编程语言,在Web开发领域广受欢迎。天气预报功能是一种常见的Web应用场景,基于PHP实现天气预报功能相对简单易懂。本文将介绍如何使用PHP实现天气预报功能。一、获取天气数据API要实现天气预报功能,首先需要获取天气数据。我们可以使用第三方天气API来获取实时、准确的天气数据。目前,国内主流的天气API供应商包括免费的“心知天气”和收

如何使用 Windows Copilot 与剪贴板一起展开、解释、总结或修改复制的文本如何使用 Windows Copilot 与剪贴板一起展开、解释、总结或修改复制的文本Jul 29, 2023 am 08:41 AM

在Copilot目前在Windows11上拥有的少数功能中,也许最有用的功能是允许您交互和调整已复制到剪贴板的文本的功能。这使得将Copilot用作文本编辑和摘要工具变得容易,您可以直接从桌面使用。以下是您需要了解的有关使用Copilot在Windows上解释、修订、扩展和汇总文本的所有信息。如何在WindowsCopilot中使用复制的文本Copilot的预览版让我们第一次很好地了解了Windows对原生AI支持的集成。修改或扩展从其他地方复制的文本的早期功能之一可以通过内容创建、摘要、修订和

未来功能抢先用 Safari 技术预览 173 版本释出未来功能抢先用 Safari 技术预览 173 版本释出Jul 02, 2023 pm 01:37 PM

Apple今日释出了Safari技术预览173版本,涵盖部分可能于Safari17推出的功能。该版本适用于macOSSonoma测试版以及macOSVentura系统,有兴趣的用户可于官方网页下载。Safari技术预览173版于设定中新增了功能标志区块,取代原先开发菜单的实验功能。该区块可让开发者快速地搜索特定功能,并以不同形式将「稳定」、「可供测试」、「预览」或「开发人员」等状态标示出来。重新设计的开发菜单可以帮助创作者更容易找到关键工具,以便建立网页、网页应用程序、其他应用程序中的网页内容、

如何在iPhone上扫描QR码如何在iPhone上扫描QR码Jul 20, 2023 am 09:13 AM

Apple在设备中内置了这个方便的功能,可以从iPhone上的相机轻松访问它,这将允许您自动扫描设备上的QR码。二维码代表快速响应码,本质上是一种二维条形码,可以通过配备内置摄像头的各种智能手机和其他电子设备轻松扫描和解释。扫描二维码后,用户通常会被定向到特定网站或提示激活应用程序中的特定功能。这种令人难以置信的方便功能在现代智能手机(包括Apple的iPhone)中变得越来越普遍,它是用户以最小的努力访问信息,服务或功能的便捷方式。许多公司在实体产品上使用此功能,您可以扫描其产品上的二维码,然

Google Colab将很快使用Codey进行AI编码Google Colab将很快使用Codey进行AI编码Jun 09, 2023 am 10:43 AM

GoogleColab是一个自2017年以来一直在促进Python编程的平台,它将利用Google的高级代码模型Codey引入AI编码功能。Codey基于PaLM2模型构建,对来自外部来源的大型高质量代码数据集进行了精心微调,以提高其在编码任务方面的性能。Colab即将推出的功能包括代码补全、自然语言到代码生成以及代码辅助聊天机器人。最初的重点将放在代码生成上,该功能旨在使用户能够生成更大的代码块并从注释或提示编写整个函数。这旨在减少编写重复代码的需求,允许用户专注于编程和数据科学的更复杂的方面

鸿蒙OS3.0的功能有什么?鸿蒙OS3.0的功能有什么?Jun 29, 2023 pm 10:53 PM

鸿蒙os3.0目前正在测试阶段,很快用户就将迎来新的系统体验了,那么相较于2.0版本,鸿蒙os3.0有什么功能呢?华为鸿蒙3.0包含了多屏协同、性能共享等功能,用户可以获得更加完善的协同体验,同时也能提升手机运行大型游戏或软件的流畅度。另外,它简化了小窗交互方式,并改进通知栏,带给你更为完美的体验,接下来就让小编给大家分析一下华为鸿蒙3.0新功能介绍,一起来了解一下吧。华为鸿蒙3.0功能介绍1、多屏协同:此前鸿蒙2.0可以在电脑手机之间互相切换使用,提高了用户的工作效率和使用体验,但此次的鸿蒙3

win10电脑系统纯版和专业版有什么区别win10电脑系统纯版和专业版有什么区别Jul 19, 2023 am 11:01 AM

win10系统是目前主流的操作系统,也是微软最新的产品,版本很多。其中有网友纠结不知道选择win10纯版还是win10专业版,win10电脑系统纯版和专业版有什么区别。以下小系列将告诉你win10电脑系统纯版和专业版的区别。win10纯版:Win10纯版是网上第三方系统爱好者,在微软原版系统的基础上删除一些自带广告封装的系统。没有多余的软件捆绑,但稳定性可能没有正式版和专业版那么强。最重要的是win10纯版可以在网上下载安装,由民间专家优化,完全免费,功能和专业版没有太大区别。win10专业版:

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft