热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

Mysql5.6审计功能_MySQL

1前言为了安全和操作的可追溯性考虑,越来越多的公司加入了审计功能。mysql55推出了相关的审计功能,到5620功能进一步完善,算是勉强可用了,虽然细粒度方面做的不是太好,但是后续版本还
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的标签详细一些。具体的标签信息如下: 实例:


 
  2013-09-17T15:03:24 UTC
  1_2013-09-17T15:03:24
  Audit
  1
  1
  /usr/local/mysql/bin/mysqld
    --socket=/usr/local/mysql/mysql.sock
    --port=3306
  x86_64-osx10.6
  5.7.2-m12-log
 
 
  2013-09-17T15:03:40 UTC
  2_2013-09-17T15:03:24
  Connect
  2
  0
  0
  root
  
  localhost
  127.0.0.1
  connect
  root
  
  test
 

...

 
  2013-09-17T15:03:41 UTC
  4_2013-09-17T15:03:24
  Query
  2
  0
  0
  root[root] @ localhost [127.0.0.1]
  
  localhost
  127.0.0.1
  drop_table
  DROP TABLE IF EXISTS t
 
 
  2013-09-17T15:03:41 UTC
  5_2013-09-17T15:03:24
  Query
  2
  0
  0
  root[root] @ localhost [127.0.0.1]
  
  localhost
  127.0.0.1
  create_table
  CREATE TABLE t (i INT)
 

...

 
  2013-09-17T15:03:41 UTC
  7_2013-09-17T15:03:24
  Quit
  2
  0
  0
  
  
  
  
  connect
 

...

 
  2013-09-17T15:03:47 UTC
  9_2013-09-17T15:03:24
  Shutdown
  3
  0
  0
  root[root] @ localhost [127.0.0.1]
  
  localhost
  127.0.0.1
  
 
 
  2013-09-17T15:03:47 UTC
  10_2013-09-17T15:03:24
  Quit
  3
  0
  0
  
  
  
  
  connect
 
 
  2013-09-17T15:03:49 UTC
  11_2013-09-17T15:03:24
  NoAudit
  1
 


:文件的根标签为,并以 为结束标签
:包含一系列的必选标签和可选标签,可选标签是否出现取决于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。

推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
author-avatar
炽热冰菊66
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有