干货 | MySQL数据库安全之审计
副问题[/!--empirenews.page--]
每家公司都但愿营业高速增添,最好能出几个爆款产物可能爆款营业,从而发动公司营收高速攀升。但站在数据库打点员的角度,这却是实其着实的压力,营业高速增添肯定带来数据量的暴增。数据库体系的选型和计划是支撑整个营业体系的重要身分。 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的: 2、开启General Log: 执行SQL呼吁set global general_log=on 尔后查察general_log打开了: 3、验证:general_log打开后,全部SQL的会见城市记录在general_log_file指向的日记文件。我们执行几个SQL语句测试: 尔后查察ZB-PF11H2E3.log日记文件内里的内容,我们看到适才做的操纵都已经记录在日记里了: 开启General Log只要用户执行了操纵,无论对错,MySQL就会记录日记,这样的话日记量会很是复杂,对数据库服从有影响。以是我们一样平常不提议开启开成果,个体环境下也许会姑且的开一段时刻以供排查妨碍等行使。 要领二 BinLog+Init_connect BinLog是MySQL操纵时留下的日记,BinLog一方面可以用在数据库的规复与主从复制上,其它一方面可以用来做数据库的审计。 因为BinLog日记内里无法查询是谁在哪个时刻段登录的等信息,穷乏审计须要的信息。在MySQL中,每个毗连城市先执行init_connect举办毗连的初始化,我们可以在这里获取用户的登录名称和thread ID值。然后共同BinLog,就可以追踪到每个操纵语句的操纵时刻,操纵人等信息,再加上BinLog的日记信息实现审计。 设置和验证进程如下: 1、建设审计用的数据库和表: 2、建设具有操纵auditdb数据权限的用户: 假如已经有效户,必要对现有效户添加操纵auditdb的权限:
3、配置init_connect,并重启MySQL数据库在初始化参数文件[mysql]部门添加如下内容:
4、用user1用户登录,执行一些写入和删除的操纵; 5、用mysqlbinlog器材查察BinLog,按照delete操纵找到响应的ThreadId,尔后在前面建设的审计日记表auditdb.accesslog内里按照ThreadID找到用户登录信息: (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |