ITPub博客

首页 > 数据库 > 数据库开发技术 > AWS:如何做云端数据库审计?

AWS:如何做云端数据库审计?

原创 数据库开发技术 作者:lukeunique 时间:2022-04-25 07:00:00 0 删除 编辑


编者按:

本文作者系晓亮,专注于数据库,大数据,公有云等领域。先后任职于Oracle,Tencent,AWS。个人主页:https://blog.51cto.com/hsbxxl

【免责声明】本公众号文章仅代表个人观点,与任何公司无关。

编辑|SQL和数据库技术(ID:SQLplusDB)


安全性和溯源性,是每一个合格的生产系统,必备的合规性要求。 他是谁?他在哪?他在干什么?也是每个系统遇到安全威胁的时候,系统运维人员最关心的问题。

只有做到可溯源,在安全事件发生时,我们才有数据,有证据和有方向的去分析和应对。

对于数据库产品,数据库审计,就是溯源的必备方式。这也是很多客户关心的话题。针对RDS Mysql,我们能审计每个用户的登录,和操作信息吗?答案是肯定的。

MySQL企业版有此功能,属于收费组件。社区版的Mysql,常见的审计插件就是“MariaDB 审核插件”和Percona审计插件。

1. AWS的RDS Mysql是社区版,审计方式,使用的是“MariaDB 审核插件”,使用方法,详见官方文档。本文就不赘述设置方法了。需要注意的是以下参数的设置。

https://docs.amazonaws.cn/AmazonRDS/latest/UserGuide/Appendix.MySQL.Options.AuditPlugin.html

选项设置

有效值

默认值

描述

SERVER_AUDIT_FILE_PATH

/rdsdbdata/log/audit/

/rdsdbdata/log/audit/

日志文件的位置。日志文件包含 SERVER_AUDIT_EVENTS 中指定的活动记录。有关更多信息,请参阅  查看和列出数据库日志文件 和  MySQL 数据库日志文件。

SERVER_AUDIT_FILE_ROTATE_SIZE

1–1000000000

1000000

达到该字节大小时,会导致文件轮换。有关更多信息,请参阅  日志文件大小。

SERVER_AUDIT_FILE_ROTATIONS

0–100

9

要保存的日志轮换数量。有关更多信息,请参阅  日志文件大小 和  下载数据库日志文件。

SERVER_AUDIT_EVENTS

CONNECT、QUERY

CONNECT、QUERY

要在日志中记录的活动类型。安装 MariaDB 审核插件可自行登录。

CONNECT:记录成功和失败的数据库连接以及数据库断开连接。

QUERY:记录针对数据库运行的所有查询文本。

TABLE:记录针对数据库运行查询时受查询影响的表。

对于 MariaDB,支持 CONNECT、QUERY 和 TABLE。

对于 MySQL,支持 CONNECT 和 QUERY。

SERVER_AUDIT_INCL_USERS

多个逗号分隔值

无

仅包括指定用户的活动。默认情况下,会记录所有用户的活动。如果 SERVER_AUDIT_EXCL_USERS 和 SERVER_AUDIT_INCL_USERS 中均指定了某位用户,则会记录该用户的活动。

SERVER_AUDIT_EXCL_USERS

多个逗号分隔值

无

排除指定用户的活动。默认情况下,会记录所有用户的活动。如果 SERVER_AUDIT_EXCL_USERS 和 SERVER_AUDIT_INCL_USERS 中均指定了某位用户,则会记录该用户的活动。

rdsadmin 用户会每秒查询一次数据库,以检查数据库的运行状况。根据您的其他设置,此活动可能导致您的日志文件大小非常快速地增长。如果您不需要记录此活动,请将 rdsadmin 用户添加到 SERVER_AUDIT_EXCL_USERS 列表。

注意

会始终为所有用户记录 CONNECT 活动,即使是该选项设置指定的用户。

SERVER_AUDIT_LOGGING

ON

ON

日志记录处于活动状态。唯一有效的值为 ON。Amazon RDS 不支持停用日志记录。如果您要停用日志记录,请删除 MariaDB 审核插件。有关更多信息,请参阅  删除 MariaDB 审核插件。

2. 开启审计功能后,我们就可以在console中看到audit log了。

3. 下面,我们看一下,audit log到底记录了什么信息。

3.1. 我前台操作的记录如下:3.1.1 使用管理员用户,登录数据库3.1.2 创建用户test2,并赋予一些全新3.1.3 使用新建的用户连接数据库3.1.4  执行数据库切换,创建表等命令3.2 audit log如下,可以看到以下几点信息3.2.1. 谁访问和执行的,来至于哪里?3.2.2. 执行的全部操作信息记录

4. 当然审计日志会记录数据库的全部操作,自然也就有一些我们不需要的信息参杂其中。例如RDS后台操作用户rdsadmin的全部操作记录。

突然意识到,audit log,也可以用来研究AWS RDS后面实现的一些自动化运维的原理。

5. 但是真的rdsadmin的操作信息,是不需要做审计的。我们可以考虑不记录rdsadmin用户的审计信息,只需修改“选项组”的参数SERVER_AUDIT_EXCL_USERS=rdsadmin即可

5.1 关闭之后的audit log输出:

---正常情况下,rdsadmin 用户会每秒查询一次数据库,以检查数据库的运行状况。不记录rdsadmin的信息之后,世界立即清净了许多

6. 针对数据库的审计,加密等操作,在增加安全性的同时,也要付出性能损耗的成本。

下文是AWS官方blog,其中讨论到RDS Mysql在开启审计之后,还是有比较大的性能损耗的。

https://aws.amazon.com/cn/blogs/china/cloudwatch-logs-kinesis-firehose-athena-quicksight-amazon-aurora/?nc1=b_rp

7. 开启audit之后,会有大量的audit log产生,但是RDS的日志会滚动删除,不能长久的保存。如果为了长时间审计的需求,将audit保存下来,还可以做更多的统计和分析。

通过RDS的Modify页面,将audit log输出到cloudwatch。

至此,RDS Mysql数据库审计功能如何使用已经了解了。通过audit数据,我们可以查找不合规的信息。用以优化数据库的安全性。

同时,我们也可以利用audit作为数据源,汇总到数据集/湖中。

通过大数据处理,以进一步分析和使用。甚至可以通过大数据的实时分析,结合机器学习。做到数据库安全受到威胁时,系统可以做出相应的自动补救操作。


——End——


专注于技术不限于技术!

用碎片化的时间,一点一滴地提高数据库技术和个人能力。

欢迎关注!



AWS系列:

云数据库:使用Amazon Performance Insights分析RDS性能问题

原文作者:SQL和数据库技术;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2017-07-21

  • 博文量
    107
  • 访问量
    63572