加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

干货 | MySQL数据库安全之审计

发布时间:2019-06-05 07:53:59 所属栏目:教程 来源:京东云开发者社区
导读:每家公司都但愿营业高速增添,最好能出几个爆款产物可能爆款营业,从而发动公司营收高速攀升。但站在数据库打点员的角度,这却是实其着实的压力,营业高速增添肯定带来数据量的暴增。数据库体系的选型和计划是支撑整个营业体系的重要身分。 MySQL数据库是
副问题[/!--empirenews.page--]

每家公司都但愿营业高速增添,最好能出几个爆款产物可能爆款营业,从而发动公司营收高速攀升。但站在数据库打点员的角度,这却是实其着实的压力,营业高速增添肯定带来数据量的暴增。数据库体系的选型和计划是支撑整个营业体系的重要身分。

干货 | MySQL数据库安详之审计

MySQL数据库是基于云原生的数据库产物之一,云原生为云数据库提供了重要动力,对比于传统自建数据库,云数据库比单个数据库具有更大的弹性和可扩展性。

数据库审计首要用于监督并记录对数据库处事器的衷耘噘纵举动,并记入审计日记或数据库中以便日后举办跟踪、查询、说明,以实现对用户操纵的监控和审计。审计是一项很是重要的事变,也是企业数据安详系统的重要构成部门。

MySQL企业版自带审计成果,可是必要付费。MySQL社区版没有审计成果,基于本钱的思量,许多用户回收社区版MySQL作为营业体系数据库。回收社区版MySQL怎样实现重要的审计成果,本文从自建和云处事两种环境来解答这个题目。

自建MySQL数据库的场景

本文自建数据库全部尝试情形是基于window10下MySQL5.7这个版本。

要领一 Genreal Log

默认环境下,MySQL不开启General log; 开启General log后,MySQL将全部达到MySQL Server的SQL语句记录下来。

开启General log步调:

1、查察General Log开启环境:执行SQL呼吁show variables like '%general_log%’ ;可以看到默认general_log是OFF的:

干货 | MySQL数据库安详之审计

2、开启General Log: 执行SQL呼吁set global general_log=on 尔后查察general_log打开了:

干货 | MySQL数据库安详之审计

3、验证:general_log打开后,全部SQL的会见城市记录在general_log_file指向的日记文件。我们执行几个SQL语句测试:

干货 | MySQL数据库安详之审计

尔后查察ZB-PF11H2E3.log日记文件内里的内容,我们看到适才做的操纵都已经记录在日记里了:

干货 | MySQL数据库安详之审计

开启General Log只要用户执行了操纵,无论对错,MySQL就会记录日记,这样的话日记量会很是复杂,对数据库服从有影响。以是我们一样平常不提议开启开成果,个体环境下也许会姑且的开一段时刻以供排查妨碍等行使。

要领二 BinLog+Init_connect

BinLog是MySQL操纵时留下的日记,BinLog一方面可以用在数据库的规复与主从复制上,其它一方面可以用来做数据库的审计。

因为BinLog日记内里无法查询是谁在哪个时刻段登录的等信息,穷乏审计须要的信息。在MySQL中,每个毗连城市先执行init_connect举办毗连的初始化,我们可以在这里获取用户的登录名称和thread ID值。然后共同BinLog,就可以追踪到每个操纵语句的操纵时刻,操纵人等信息,再加上BinLog的日记信息实现审计。

设置和验证进程如下:

1、建设审计用的数据库和表:

干货 | MySQL数据库安详之审计

2、建设具有操纵auditdb数据权限的用户:

干货 | MySQL数据库安详之审计

假如已经有效户,必要对现有效户添加操纵auditdb的权限:

  1. MySQL> insert into mysql.db (Host,Db,User1,Insert_priv) values ('%','auditdb','','Y'); 
  2. 2Query OK, 1 row affected (0.03 sec) 
  3. 3MySQL> flush privileges; 
  4. 4Query OK, 0 rows affected (0.00 sec) 

3、配置init_connect,并重启MySQL数据库在初始化参数文件[mysql]部门添加如下内容:

  1. log-bin=mysql-bin #开启Binlog 
  2. 2init_connect='insert into auditdb.accesslog(connectionid, connectionuser,logintime) values(connection_id(),user(),now());' #配置初始化毗连参数 

干货 | MySQL数据库安详之审计

4、用user1用户登录,执行一些写入和删除的操纵;

干货 | MySQL数据库安详之审计

5、用mysqlbinlog器材查察BinLog,按照delete操纵找到响应的ThreadId,尔后在前面建设的审计日记表auditdb.accesslog内里按照ThreadID找到用户登录信息:

干货 | MySQL数据库安详之审计

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读