MySQL的审计功能

安全高效的使用数据库,在现在的IT环境里显得尤为重要,审计功能可以对数据库的操作进行评估,以满足安全生产和法律法规的要求。MySQL的企业版里,提供了一项审计功能——MySQL Enterprise Audit。MySQL的审计功能以插件来实现,支持在特定的MySQL服务器上执行标准审计、基于规则的监视、日志记录以及阻挡连接和查询活动。MySQL Enterprise Audit使用了公开的MySQL Audit API,如果你想使用这个API去自己开发一个审计插件,可以参考手册链接。

当用户安装了该插件后,会产生一个默认名称为audit.log的审计日志,该日志默认为XML格式,也支持JSON格式。日志的内容包括客户端的连接与断开,连接期间执行的操作,以及访问的对象等等。

MySQL Enterprise Audit主要由三部分构成:

一、服务器端由一个名为audit_log的插件对各种事件进行校验,以决定是否将其计入审计日志。

二、一组用户定义的函数(UDF)用于维护过滤器,控制记录行为,加密和读取日志等操作。

三、保存用户数据和过滤器数据的mysql系统表。

MySQL的审计功能使用起来非常简单,DBA启用插件后(插件可以动态启用、禁用),用户连接服务器进行的操作就可以记录到日志,DBA之后可以通过日志来评估审计事件。并且输出的日志格式与Oracle的审计兼容,满足Oracle审计规范。

审计日志支持过滤功能,用户可以根据需求灵活选择需要记录的审计事件。过滤是基于规则,通过用户定义函数(UDF)定义,并将其内容保存在mysql系统表内。过滤审计事件可以通过用户的账户、类、子类以及事件字段的值来实现。

过滤基于规则:

  • 包括/排除审计事件进行记录。
  • 除了记录功能,过滤器还可以阻止事件执行。
  • 定义多个过滤器,并且可以将其分配给任意数量的账户。
  • 可以定义默认的过滤器,为没有分配过滤器的用户使用。

通过使用下列UDF对审计进行操作:

  • audit_log_filter_set_filter():定义一个过滤器
  • audit_log_filter_remove_filter():删除过滤器
  • audit_log_filter_set_user():开始过滤用户帐户
  • audit_log_filter_remove_user():停止过滤用户帐户
  • audit_log_filter_flush():刷新过滤器表的手动更改

过滤器还可以阻挡执行特定事件,例如,对指定的表阻止其插入更新操作。

当执行该语句时,过滤器可以阻挡该操作,并返回“ERROR 1045 (28000): Statement was aborted by an audit log filter”。用户可以灵活利用该特性。

上述内容是关于MySQL企业版审计功能的一个简介,希望能对希望安全使用MySQL的您有所帮助。更为详尽的内容请访问官网手册。

本文分享自微信公众号 - MySQL解决方案工程师(mysqlse),作者:徐轶韬

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MySQL的一般查询日志

    MySQL有很多种日志,这一篇文章里主要介绍一般查询日志。General Query Log,一般查询日志是用来记录MySQL服务器做了哪些事情,当客户端连接至...

    MySQLSE
  • MySQL8.0的错误日志

    使用MySQL的时候,会经常涉及几个日志,例如二进制日志、慢查询日志、REDO日志、UNDO日志、错误日志以及通用日志。每种日志都有自己的用处和用法,建议日常使...

    MySQLSE
  • NDB Cluster 8.0中的自动模式同步:第1部分

    数据节点是MySQL NDB Cluster的分布式分片存储核心。MySQL服务器通常会访问其数据(在NDB中也称为SQL节点)。每个MySQL服务器都有自己的...

    MySQLSE
  • 详解三款日志采集工具--Logstash,Fluentd, Logtail比较

    DT时代,数以亿万计的服务器、移动终端、网络设备每天产生海量的日志。中心化的日志处理方案有效地解决了在完整生命周期内对日志的消费需求,而日志从设备采集上云是第一...

    lyb-geek
  • css-transform

    上面我们介绍了使用transform对元素进行旋转、缩放、倾斜、移动的方法,这里讲介绍综合使用这几个方法来对一个元素进行多重变形。

    踏浪
  • Laravel 5.5 异常处理 & 错误日志的解决

    Laravel 默认已经为我们配置好了错误和异常处理,我们在 App\Exceptions\Handler 类中触发异常并将响应返回给用户。

    砸漏
  • .NET Core的日志[3]:将日志写入Debug窗口

    定义在NuGet包“Microsoft.Extensions.Logging.Debug”中的DebugLogger会直接调用Debug的WriteLine方法...

    蒋金楠
  • 比对得到的SAM文件怎么看?

    SAM ( Sequence Alignment Map ) 文件是reads比对到基因组后得到的结果文件,记录了reads mapping到基因组的各项信息。...

    生信小王子
  • 利用神经网络算法的C#手写数字识别

    尽管在过去几年已经有许多系统和分类算法被提出,但是手写识别任然是模式识别中的一项挑战。

    人工智能资讯小编
  • Windows的分屏功能你会使用么?

    我们经常遇到这样的情况,打开word文件进行编辑,同时又要打开浏览器查找资料。这个时候一个屏幕就显得特别麻烦,一会儿要切到这个桌面,一会儿要切到那个窗口。但是其...

    菜鸟小白的学习分享

扫码关注云+社区

领取腾讯云代金券