Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1731477
  • 博文数量: 107
  • 博客积分: 1715
  • 博客等级: 上尉
  • 技术积分: 3168
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-18 18:42
个人简介

阿里巴巴DBA,原去哪儿网DBA。专注于MySQL源码研究、DBA运维、CGroup虚拟化及Linux Kernel源码研究等。 github:https://github.com/HengWang/ Email:king_wangheng@163.com 微博 :@王恒-Henry QQ :506437736

文章分类

全部博文(107)

文章存档

2014年(2)

2013年(38)

2012年(67)

分类: Mysql/postgreSQL

2012-07-30 15:38:57


目的

基于之前设计开发的mysql审计插件,以及《MySQL审计插件安装使用说明文档》的内容介绍,对完善后的mysql审计插件进行补充和说明。主要对新增内容进行详细说明,进一步完善审计插件的功能。

新增内容

         针对之前版本中存在的不足,功能不够完善的问题,对MySQL审计插件进行进一步的开发和完善。新增内容主要有:

1、增加审计数据库、数据表功能。

之前版本中没有实现该功能,在当前版本中,将审计选项中audit_dbsaudit_tables的处理实现。可以审计某些数据库,或者某些数据表,有利于针对不同应用系统的特殊应用。从而配合审计粒度,对审计内容进行进一步的细化和定制。

2、增加忽略审计的用户、数据库、数据表功能。

         鉴于审计应用的特殊性,添加忽略的审计用户、数据库、数据表功能。可以实现忽略某个或某些用户的操作记录;忽略某个或某些数据库的操作记录;忽略某个表的操作记录。这样可以使得当审计的内容较多,而审计中需要剔除某些不必要的审计内容的情况下,这些参数可以有效简化审计的选项配置。

         增加的配置文件的选项:

选项

功能

ignore_users

忽略的用户

ignore_dbs

忽略的数据库

ignore_tables

忽略的数据表

        

         选项的设置格式在配置文件中给出了具体的说明,类似audit_usersaudit_dbsaudit_tables选项。

         在添加忽略的审计用户、数据库、数据表与审计对象发生冲突时,将按照忽略优先的原则进行。例如:audit_dbs = importantaudit_tables = test.testignore_dbs = testignore_tables = important.test,那么审计的内容会首先忽略important.test表的所有操作,而审计test.test数据表的所有操作,然后忽略test数据库的所有操作,审计important数据看的操作。

3、增加审计操作的数据库信息。

         由于操作的sql语句中几乎不会直接写操作的数据库,而仅靠sql语句不能有效的辨识操作的数据库。在存在不同数据库中有相同数据表的情况下,数据库审计不能有效的跟踪审计内容。增加数据库信息,可以有效的提高sql审核的内容。

文件输出格式

         文件格式分为两种,分别为连接审计和操作审计。

1、连接审计

连接相关的审计日志信息的格式如下所示。

具体的:

[2012-06-20 15:40:39]:审计的时间。

[CONNECT]:为连接的类型;

status:为连接成功(0)或者失败(错误号)的状态;

user:为连接的用户名;

external-user:为外部连接的用户,在使用中间件或者代理服务的时候有效;

proxy-user:为代理服务的用户名;

host:表示连接的主机名;

ip:连接的ip地址;

database:表示连接的数据库名。

 

[2012-06-20 15:40:39] [CONNECT] status: # ; thread_id: # ; user: XXX ; external-user: XXX ; proxy-user: XXX ; host: XXX ; ip: ###.###.###.### ; database: XXX

2、操作审计

操作相关的审计日志信息的格式如下所示。操作相关的命令包括CREATEDROPALTERINSERTUPDATEDELETEGRANTREVOKE等对数据或数据库有影响的操作。以下以CREATE为例,进行详细说明。

具体的:

[2012-06-20 15:40:39]:审计的时间。

[CREATE]为操作的类型;

error_code:为操作的错误码,操作成功为0

thread_id:执行操作的线程id

user:执行操作的用户名;

command:操作命令的类型,是数据库内部的定义,数据相关操作一般为Query

databasesSQL语句涉及到的所有数据库。

query:操作的SQL语句。

charset:操作的字符集类型;

time:执行操作的时间点,该值为从1970年以来的长整数。

rows:执行操作影响数据的行数。

 

[2012-06-20 15:40:39] [CREATE] error_code:X # thread_id:X # user:X # command:X # databases:X # query:X # charset:X # time:X # rows:X

数据表定义

CREATE TABLE mysql.audit (

  `audit_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

  `command` varchar(20) NOT NULL DEFAULT 'NULL',

  `status` int(11) NOT NULL DEFAULT '0',

  `thread_id` bigint(32) unsigned NOT NULL DEFAULT '0',

  `user` varchar(20) NOT NULL DEFAULT 'NULL',

  `external_user` varchar(20) NOT NULL DEFAULT 'NULL',

  `proxy_user` varchar(20) NOT NULL DEFAULT 'NULL',

  `host` varchar(20) NOT NULL DEFAULT 'NULL',

  `ip` varchar(20) NOT NULL DEFAULT 'NULL',

  `databases` varchar(255) NOT NULL DEFAULT 'NULL',

  `query` varchar(255) NOT NULL DEFAULT 'NULL',

  `charset` varchar(20) NOT NULL DEFAULT 'NULL',

  `event_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',

  `rows` bigint(32) NOT NULL DEFAULT '0'

) ENGINE=CSV DEFAULT CHARSET=utf8 ;

 

进一步工作

1、完善查看审计参数状态,show status like ‘audit%’中动态显示当前参数状态。

 

阅读(4082) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

SnowJF2013-01-16 12:11:03

你好啊,我在安装audit.so的时候提示
ERROR 1123 (HY000): Can't initialize function 'audit';Plugin initialization function failed.请问我可以去哪里查找错误呢?