最近因为一些事情的发生,出现了好端端的页面,变成了空页面。转头开发同事就来质问我,是不是我动了什么,后来经过调查发现,是平台运营的同事误删资料导致的。

所以如果运维或者开发部门有很多人都分配了数据库的增删改之类的操作权限的话,某一天哪个表或者字段丢失了都无法找到是谁干的,所以这个锅只能运维来背了。因此很有必要把数据库的操作记录保存下来,但是代价就是服务器的效能就会变差一些了,但为了安全起见,还是建议开启的。

在一些操作限制中,难免会有人质疑具有super权限的用户做了什么动作,所以还是把root用户也一同审计在内,可以避免不必要的麻烦

1.我们就以mysql-5.7.17为例,安插第三方的插件来进行审计。通过多方了解,知道MySQL AUDIT Plugin是一个 MySQL安全审计插件,由McAfee提供,设计强调安全性和审计能力。可用作独立审计解决方案,或配置为数据传送给外部监测工具。

audit下载地址:

https://bintray.com/mcafee/mysql-audit-plugin/release

2.准备安装audit插件

[root@~]unzip audit-plugin-mysql-5.7-1.1.2-694-linux-x86_64.zip

Archive:  audit-plugin-mysql-5.7-1.1.2-694-linux-x86_64.zip

creating: audit-plugin-mysql-5.7-1.1.2-694/

creating: audit-plugin-mysql-5.7-1.1.2-694/lib/

inflating: audit-plugin-mysql-5.7-1.1.2-694/lib/libaudit_plugin.so

inflating: audit-plugin-mysql-5.7-1.1.2-694/COPYING

inflating: audit-plugin-mysql-5.7-1.1.2-694/THIRDPARTY.txt

inflating: audit-plugin-mysql-5.7-1.1.2-694/README.txt

creating: audit-plugin-mysql-5.7-1.1.2-694/utils/

inflating: audit-plugin-mysql-5.7-1.1.2-694/utils/offset-extract.sh

3.查看mysql为安插audit插件的路径

mysql > show global variables like 'plugin_dir';

+---------------+--------------------------+

| Variable_name | Value |

+---------------+--------------------------+

| plugin_dir    |/data0/mysql/lib/plugin/ |

+---------------+--------------------------+

1 row in set (0.00 sec)

4.将需要安装的插件复制到上述指定路径,并赋予可执行权限即可

[root@~]cd audit-plugin-mysql-5.7-1.1.2-694/lib

[root@lib]cp libaudit_plugin.so  /data0/mysql/lib/plugin/

[root@~]cd /data0/mysql/lib/plugin/

[root@plugin]chmod a+x libaudit_plugin.so

5.有了4的步骤以后,便可以在数据库上加载审计插件

mysql> install plugin audit soname 'libaudit_plugin.so';

Query OK, 0 rows affected (1.78 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

6.加载插件完毕后,查看审计插件是否已经插入到了数据库内,并查看相关插件版本

mysql> show global status like '%audit%';

+------------------------+-----------+

| Variable_name          | Value  |

+------------------------+-----------+

| Audit_protocol_version | 1.0 |

| Audit_version          | 1.1.2-694 |

+------------------------+-----------+

2 rows in set (0.00 sec)

7.开启数据库的审计功能

mysql> set global audit_json_file=on;

Query OK, 0 rows affected (0.00 sec)

8.查看数据库跟审计有关的相关信息

mysql> show global variables like '%audit%';

+---------------------------------+------------+

| Variable_name                   | Value  |

+-----------------------------------------------+

| audit_before_after              | after  |

| audit_checksum                  |          |

| audit_client_capabilities       | OFF  |

| audit_delay_cmds                |          |

| audit_delay_ms                  | 0        |

| audit_force_record_logins       | OFF |

| audit_header_msg                | ON   |

| audit_json_file                 | ON    |

| audit_json_file_bufsize         | 1     |

| audit_json_file_flush           | OFF    |

| audit_json_file_retry           | 60     |

| audit_json_file_sync            | 0     |

| audit_json_log_file             | mysql-audit.json   |

| audit_json_socket               | OFF  |

| audit_json_socket_name          | /var/run/db-audit/mysql.audit__data0_mysql-data_3306 |

| audit_json_socket_retry         | 10 |

| audit_offsets                   |      |

| audit_offsets_by_version        | ON   |

| audit_password_masking_cmds     | CREATE_USER,GRANT,SET_OPTION,SLAVE_START,CREATE_SERVER,ALTER_SERVER,CHANGE_MASTER,UPDATE    |

| audit_password_masking_regex    | identified(?:/\*.*?\*/|\s)*?by(?:/\*.*?\*/|\s)*?(?:password)?(?:/\*.*?\*/|\s)*?['|"](?.*?)(?.*?)(?.*?)(?.*?)(?

| audit_record_cmds               |        |

| audit_record_objs               |          |

| audit_sess_connect_attrs        | ON   |

| audit_socket_creds              | ON    |

| audit_uninstall_plugin          | OFF   |

| audit_validate_checksum         | ON    |

| audit_validate_offsets_extended | ON    |

| audit_whitelist_cmds            | BEGIN,COMMIT,PING  |

| audit_whitelist_users           |        |

+---------------------------------+------------------------+

29 rows in set (0.00 sec)

9.可以更改你想存放日志的路径,以便日后记得在哪里查找查看日志

audit_json_log_file就是数据库中审计日志mysql-audit.json存放的路径,一般审计日志放在了数据库的数据存放的路径上。像我的mysql-audit.json就存放在/data0/mysql-data里。当然如果你要换到你指定的路径也可以,用 mysql > set global audit_json_log_file='你想放置的路径';

10.缩减日志内容

在查看已经开启的审计日志以后,你就会发现日志量太大了,只要网站有人访问,肯定都会有select的日志记录,因为在默认情况下audit_record_cmds=null,记录所有操作指令,但是我们开启审计日志的目的是为了审计,不是为了记流水账,所以只记录insert、delete、update就可以了。这样就比较符合我们的初衷,所以可以像下面那样做:

mysql > set global audit_record_cmds = 'insert,delete,update';

11.局限到你想要审计的数据库即可

在默认情况下audit_record_objs=null,即是数据库里的所有对象都列为记录对象。但为了安全起见,我都审计。当然也可以指定哪些数据库的表格需要进行审计记录,如下例设置:

mysql > set global audit_record_objs = 'mysql.*,test.*';

12.mysql审计还是有搞特殊化的,就是白名单这种东西,简言之就是可以指定谁免受审计之苦。

设定如下:

mysql > set global audit_whitelist_users = 'z';

13.查看审计日志内容

cat /data0/mysql-data/mysql-audit.json

大概通过上述步骤,审计就可以说简略的完成了。

mysql 5.02审计_CentOS 7.2 mysql-5.7.17 审计插件安装、开启与设定相关推荐

  1. centos的mysql修改root密码_CentOS环境中MySQL修改root密码方法

    环境相关: OS:CentOS release 6.9 IP:192.168.1.10 MySQL:MariaDB-10.1.30 1. 修改前的确认 修改root密码是需要重启mysql库,确认生产 ...

  2. rpm卸载mysql不依靠依赖_centos彻底卸载mysql(不保留数据)

    1. rpm -qa | grep -i mysql 查找已经安装的mysql. MySQL-server-5.6.43-1.el6.x86_64 MySQL-client-5.6.43-1.el6. ...

  3. mysql开机启动脚本_centos简单的mysql开机自启和自动保存脚本

    1.备份 写一个testdbbackup.sh文件 ------------------------ #!/bin/sh DBName=test DBUser=root DBPasswd=root B ...

  4. centos 7.2 mysql 允许_CentOS 7.2 mysql-5.7.17 审计插件安装、开启与设定

    最近因为一些事情的发生,出现了好端端的页面,变成了空页面.转头开发同事就来质问我,是不是我动了什么,后来经过调查发现,是平台运营的同事误删资料导致的. 所以如果运维或者开发部门有很多人都分配了数据库的 ...

  5. mysql8审计_审计对存储在MySQL 8.0中的分类数据的更改

    作者:Mike Frank  译:徐轶韬 面临的挑战 使用敏感信息时您需要拥有审计日志.通常,此类数据将包含一个分类级别作为行的一部分,定义如何处理.审计等策略.在之前的博客中,我讨论了如何审计分类数 ...

  6. mysql审计插件安装_MySQL审计插件安装使用说明文档--升级版

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

  7. 事务第02讲:数据库事务(MySQL)

    事务第02讲:数据库事务[MySQL] 1. 什么是事务? 2. 事务基本要素 3. MySQL事务隔离级别 3.1 事务隔离级别概念 3.1.1 读未提交 3.1.2 读已提交 3.1.3 可重复读 ...

  8. 第06讲 连接到MySQL数据库02之jdbc

    本案例用于建立一个较为完整的案例,实现书本的增加删除修改查询 1 创建数据库 案例使用Mysql,数据库脚本代码如下: CREATE DATABASE IF NOT EXISTS `itcaststo ...

  9. 李玉婷MYSQL进阶02:条件查询

    李玉婷MYSQL进阶02:条件查询 语法结构: select: 查询列表 from:表名 where: 筛选条件 分类: 一.条件表达式 示例:salary>10000 条件运算符:> & ...

最新文章

  1. 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---34
  2. C语言处理字符串及内存操作
  3. 别把 Gateway 不当一回事!
  4. 静态方法中不能new内部类的实例对象的总结
  5. [图形学]切向空间(Tangent Space)
  6. ADSL拨号中出现的错误代码
  7. linux部署项目文档,Linux上部署综合项目专业资料.doc
  8. ruhr启动mysql数据库_Mysql表类型(存储引擎)的选择
  9. (软件工程复习核心重点)第六章实现和测试-第六节:白盒测试
  10. 【Flink】Flink 时间之 timerService().registerEventTimeTimer 主要做了什么
  11. 【白皮书分享】智能文字识别(OCR)能力评测与应用白皮书.pdf(附下载链接)...
  12. 第一次总结:整体框架
  13. php 排除前后空格,php去除字符串前后空格的方法
  14. VISIO科学图形包-亲测VISIO2013可用,应该适用其他高级版本
  15. 在树莓派上驱动CSI摄像头
  16. Deadline vs Qube vs Muster
  17. bandgap中简并点理解与仿真
  18. java学习视频网课收集
  19. matlab中的addemup是什么,毕业论文-rsa密码体制的设计及matlab语言下的实现
  20. 天津人民优步司机当周奖励政策 (8.3-8.9)

热门文章

  1. 华为畅享8可以云闪付吗_华为畅享8、魅族16X、海信彩墨屏阅读手机A5C对比
  2. java中并行_[JAVA] 12. Java中的并行Concurrency
  3. NFS挂载的问题svc: failed to register lockdv1 RPC service
  4. 行波和驻波动画演示gif_新技能get√ | 语文课上的笔顺动画可以这么做
  5. python opencv二值化图像_python opencv,读取彩色图像,提取三通道,图像二值化,提取图像的边缘...
  6. 华为正式发布鸿蒙智慧屏,华为正式发布鸿蒙OS操作系统 智慧屏将率先使用
  7. 宁波大学计算机王老师,王翀_宁波大学研究生导师信息
  8. [概念型] 区块链包含术语概念【27术语整理汇总】
  9. react native 开发笔记(二)
  10. 【深度学习入门到精通系列】Mean Iou