资讯专栏INFORMATION COLUMN

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

tigerZH / 2134人阅读

摘要:相比传统数据库,云数据库易于部署管理和扩展,提供数据可靠性安全性运行状态监控等全套解决方案。下面给大家介绍云数据库审计的开启使用关闭等功能。

每家公司都希望业务高速增长,最好能出几个爆款产品或者爆款业务,从而带动公司营收高速攀升。但站在数据库管理员的角度,这却是实实在在的压力,业务高速增长必然带来数据量的暴增。数据库系统的选型和设计是支撑整个业务系统的重要因素。

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的权限:

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

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

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

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

5、用mysqlbinlog工具查看BinLog,根据delete操作找到相应的ThreadId,而后在前面创建的审计日志表auditdb.accesslog里面根据ThreadID找到用户登录信息:

查看当前binlog mysqlbin.000029的内容,并找到delete操作对应的ThreadID D:mysql57bin>mysqlbinlog ../data/mysql-bin.000029

从Binlog中可以得知删除Test2表对应的threadid是8,根据ThreadID在审计表里查看用户的登录信息,可以得知这个删除操作是user1用户在本机执行的操作。

说明:采用这种方式进行审计,由于init-connect只会在连接时执行,不会对数据库产生大的性能影响,但是init-connect不会记录拥有root权限的用户记录.

方法三 使用审计插件

除了商业版的审计插件外,常见的还有三类审计插件Percona Audit Log Plugin、MariaDB Audit Plugin、McAfee MySQL Audit Plugin。这几个插件功能上大同小异,只是展示的内容和格式略有不同。
我们以MariaDB Audit Plugin为例,给大家介绍如何采用插件的方式实现对Mysql数据的审计。

一、下载与安装

1、下载MariaDB Audit Plugin插件(下载地址:https://downloads.mariadb.org...

2、安装:把server_audit.dll复制到对应的mysql插件库中D:mysql57libplugin,执行install安装命令:

3、安装验证:Mysql>show variables like "%audit%"

二、关键审计参数说明

server_audit_logging:启动或关闭审计
server_audit_events:指定记录事件的类型,可以用逗号分隔的多个值(connect,query,table) ,默认为空代表审计所有事件。
server_audit_incl_users:指定哪些用户的活动将记录,默认审计所有用户,该变量比server_audit_excl_users优先级高
server_audit_excl_users:指定哪些用户行为不记录
server_audit_output_type:指定日志输出类型,可为SYSLOG或FILE,缺省输出至审计文件

三、审计过程示例

1、开启审计mysql>set global server_audit_logging=on

由于是验证测试,我们其余参数都按默认设置。

2、执行一些数据库操作:

3、查看审计记录日志,server_audit.log,默认在data目录下:

我们看见,刚才在Mysql数据库的操作都已经审计上了。

使用公有云RDS服务的场景

目前云计算的普及,云供应商都提供云数据库服务,当然Mysql是云数据库服务重要的一员。相比传统数据库,云数据库易于部署、管理和扩展,提供数据可靠性、安全性、运行状态监控等全套解决方案。
那么在云数据库Mysql上是如何实现对数据库的审计的呢?我们以京东云云数据库Mysql为例,京东云的Mysql审计功能是通过MariaDB Audit Plugin插件实现的。下面给大家介绍云数据库Mysql审计的开启、使用、关闭等功能。

1、登录云数据库 RDS 管理控制台;

2、选择需要查询 SQL 审计的目标实例,点击目标实例, 进入实例详情页,切换至 SQL 审计 Tab 页;

3、点击审计状态开关就可以在线切换审计的开启与关闭;

4、执行一些数据库的操作,而后看审计数据。审计开启后,SQL 审计查询功能说明如下:

执行时间:可以选择从当前时间往前推 7 天的时间区间,作为 SQL 审计查询的时间段;
数据库:可以查看指定数据库的 SQL 语句;
账号:可以查看指定账号的 SQL 语句。

5、点击查询按钮,查看符合要求的SQL审计结果列表:

通过上面的例子,可以看见,云数据库的管理和运维比自建数据库确实要简单很多,用户不用关心审计的方式、审计数据的存储位置等等。只不过,云数据库由于是以云服务的形式提供给最终用户,用户就需要按照云服务的要求和使用说明进行操作。

重磅来袭
618带你上云
云数据库-MySQL只需1折


点击云数据库了解更多详情

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/49128.html

相关文章

  • 守护客户数据价值:企业级NewSQL HTAP分布式云TBase架构详解

    摘要:用户友好的数据库特性主键,外键,序列,约束,分区表,存储过程,触发器,子查询等企业级的特性完整支持。处理存储本节点相关的元数据,每个节点还存储数据的一个分片。 欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 作者:jasonys,隶属于腾讯技术工程事业群数据平台部,负责TBase数据的技术研发和架构设计,有超过10年的数据库内核开发设计经验,完成多种数据库的架构设计和开发...

    liujs 评论0 收藏0
  • 干货 | 京东云账号安全管理最佳实践

    摘要:账号操作保护建议启用操作保护,在控制台进行关键操作时对操作人进行验证,进一步提高账号安全性。结语本文介绍了京东云提供的一些账号安全管理最佳实践能力,请掌握并持续遵循这些最佳实践。 showImg(https://segmentfault.com/img/bVbtNqp?w=688&h=113); showImg(https://segmentfault.com/img/bVbtSTC?...

    Ajian 评论0 收藏0
  • TXSQL:云计算时代据库核弹头——云+未来峰会开发者专场回顾

    摘要:腾讯内核研发专家张青林在腾讯云未来峰会的开发者专场做了主题为云计算时代数据库核弹头的技术内容分享,本次分享从五个方面介绍腾讯云和的概念腾讯云作为国内云计算领先公司,在全球建立了多个数据中心,供数于万计的开发者使用。 欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 5月23-24日,以焕启为主题的腾讯云+未来峰会在广州召开,广东省各级政府机构领导、海内外业内学术专家、行业大咖...

    wenhai.he 评论0 收藏0
  • 磊哥测评据库SaaS篇:腾讯云控制台、DMC和小程序

    摘要:是腾讯云提供的关系型数据库管理工具,目前支持和,腾讯云的数据库管理功能由控制台和小程序提供。小程序搜索腾讯云助手即可使用腾讯云助手集合了很多腾讯云产品,目前数据库产品支持和。 本文由云+社区发表作者:腾讯云数据库 随着云计算和数据库技术的发展,数据库正在变得越来越强大。数据库的性能如处理速度、对高并发的支持在节节攀升,同时分布式、实时的数据分析、兼容主流数据库等强大的性能正在越来越多...

    william 评论0 收藏0
  • 数据赋能:腾讯TDSQL分布式金融级据库前沿技术

    摘要:年月日,腾讯团队为中国数据库技术大会带来了腾讯最新的数据库核心技术原创的全态数据的概念和基于历史态数据的可见性判断算法。腾讯专家工程师李海翔在上做了主题为为数据赋能腾讯分布式金融级数据库前沿技术的技术内容分享。 欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 简介:李海翔,网名那海蓝蓝,腾讯金融云数据库技术专家。中国人民大学信息学院工程硕士企业导师。著有《数据库事务处理的艺...

    Guakin_Huang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<