本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
审核跟踪
审计跟踪记录(或审计日志)提供与 AWS 账户中安全相关的事件的时间顺序记录。其中包括 Amazon RDS 的事件,这些事件为影响您的数据库或云环境的活动顺序提供了书面证据。在 Amazon RDS for MySQL 或 MariaDB 中,使用审计跟踪记录涉及:
-
监控数据库实例审计日志
-
监控 AWS CloudTrail 中的 Amazon RDS API 调用
对于 Amazon RDS 数据库实例,审计的目标通常包括:
-
为以下内容启用问责制:
-
对参数或安全配置执行的修改
-
在数据库架构、表或行中执行的操作,或者影响特定内容的操作
-
-
入侵检测和调查
-
可疑活动检测和调查
-
检测授权问题;例如,识别普通用户或特权用户滥用访问权限的行为
数据库审计跟踪记录试图回答以下典型问题:谁查看或修改了数据库中的敏感数据? 这是什么时候发生的? 特定用户从哪里访问数据? 特权用户是否滥用了其无限访问权限?
MySQL 和 MariaDB 都通过使用 MariaDB 审计插件实现数据库实例审计跟踪记录功能。此插件会记录数据库活动,例如用户登录数据库和对数据库运行的查询。数据库活动记录存储在日志文件中。若要访问审计日志,数据库实例必须使用具有 MARIADB_AUDIT_PLUGIN 选项的自定义选项组。有关更多信息,请参阅 Amazon RDS 文档中的 MySQL 的 MariaDB 审计插件支持。审计日志中的记录以插件定义的特定格式存储。您可以在 MariaDB 服务器文档
您的 AWS 账户的 AWS 云审计跟踪记录由 AWS CloudTrail 服务提供。CloudTrail 将 Amazon RDS 的 API 调用作为事件捕获。所有 Amazon RDS 操作都会记录。CloudTrail 提供了用户、角色或 AWS 服务在 Amazon RDS 中所执行操作的记录。事件包括在 AWS 管理控制台、AWS CLI、AWS SDK 和 API 中所执行的操作。
示例
在典型的审计场景中,您可能需要将 AWS CloudTrail 跟踪与数据库审计日志和 Amazon RDS 事件监控相结合。例如,您可能遇到的情况是,您的 Amazon RDS 数据库实例(例如 database-1)的数据库参数已修改,您的任务是确定谁进行了修改、更改了哪些内容以及更改发生的时间。
要完成任务,请执行以下步骤:
-
列出发生在数据库实例
database-1上的 Amazon RDS 事件,并确定类别configuration change中是否存在包含消息Finished updating DB parameter group的事件。$ aws rds describe-events --source-identifier database-1 --source-type db-instance { "Events": [ { "SourceIdentifier": "database-1", "SourceType": "db-instance", "Message": "Finished updating DB parameter group", "EventCategories": [ "configuration change" ], "Date": "2022-12-01T09:22:40.413000+00:00", "SourceArn": "arn:aws:rds:eu-west-3:111122223333:db:database-1" } ] } -
确定数据库实例正在使用哪个数据库参数组:
$ aws rds describe-db-instances --db-instance-identifier database-1 --query 'DBInstances[*].[DBInstanceIdentifier,Engine,DBParameterGroups]' [ [ "database-1", "mariadb", [ { "DBParameterGroupName": "mariadb10-6-test", "ParameterApplyStatus": "pending-reboot" } ] ] ] -
使用 AWS CLI 在部署
database-1的区域中,于在步骤 1 中发现的 Amazon RDS 事件前后的时间段内,搜索 CloudTrail 事件,其中EventName=ModifyDBParameterGroup。$ aws cloudtrail --region eu-west-3 lookup-events --lookup-attributes AttributeKey=EventName,AttributeValue=ModifyDBParameterGroup --start-time "2022-12-01, 09:00 AM" --end-time "2022-12-01, 09:30 AM" { "eventVersion": "1.08", "userIdentity": { "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AIDACKCEVSQ6C2EXAMPLE", "arn": "arn:aws:iam::111122223333:role/Role1", "accountId": "111122223333", "userName": "User1" } } }, "eventTime": "2022-12-01T09:18:19Z", "eventSource": "rds.amazonaws.com", "eventName": "ModifyDBParameterGroup", "awsRegion": "eu-west-3", "sourceIPAddress": "AWS Internal", "userAgent": "AWS Internal", "requestParameters": { "parameters": [ { "isModifiable": false, "applyMethod": "pending-reboot", "parameterName": "innodb_log_buffer_size", "parameterValue": "8388612" }, { "isModifiable": false, "applyMethod": "pending-reboot", "parameterName": "innodb_write_io_threads", "parameterValue": "8" } ], "dBParameterGroupName": "mariadb10-6-test" }, "responseElements": { "dBParameterGroupName": "mariadb10-6-test" }, "requestID": "fdf19353-de72-4d3d-bf29-751f375b6378", "eventID": "0bba7484-0e46-4e71-93a8-bd01ca8386fe", "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management", "sessionCredentialFromConsole": "true" }
CloudTrail 事件显示,AWS 账户 111122223333 中角色为 Role1 的用户 User1 于 2022-12-01 at 09:18:19
h 修改了数据库实例 database-1 使用的数据库参数组 mariadb10-6-test。修改了两个参数,并设置为以下值:
-
innodb_log_buffer_size = 8388612 -
innodb_write_io_threads = 8
其他 CloudTrail 和 CloudWatch Logs 功能
您可以通过在 CloudTrail 控制台中查看事件历史记录对过去 90 天内的操作和安全事故进行问题排查。要延长保留期并利用其他查询功能,您可以使用 AWS CloudTrail Lake。借助 AWS CloudTrail Lake,您可以在事件数据存储中保存事件数据长达七年。此外,此服务支持复杂的 SQL 查询,相比事件历史记录中的简单密钥值查询提供的视图,这些查询提供更深入、更可自定义的事件视图。
要监控您的审计跟踪记录、设置告警并在特定活动发生时收到通知,您需要将 CloudTrail 配置为将跟踪记录发送到 CloudWatch Logs。将跟踪记录存储为 CloudWatch Logs 后,您可以定义指标筛选条件来评估日志事件以匹配字词、短语或值,并将指标分配给指标筛选条件。此外,您还可以创建根据您指定的阈值和时间段生成的 CloudWatch 告警。例如,您可以配置告警,向负责的团队发送通知,以便他们可以采取适当的措施。您也可以将 CloudWatch 配置为自动执行操作以响应警报。