审核跟踪 - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

审核跟踪

审计跟踪(或审计日志)提供与安全相关的按时间顺序记录您的 AWS 账户中的事件。它包括 Amazon RDS 的事件,这些事件为影响您的数据库或云环境的活动顺序提供书面证据。在适用于 MySQL 或 MariaDB 的亚马逊 RDS 中,使用审计记录涉及:

  • 监控数据库实例审计日志

  • 监控中的亚马逊 RDS API 调用AWS CloudTrail

对于 Amazon RDS 数据库实例,审计目标通常包括:

  • 为以下各项启用问责制:

    • 对参数或安全配置执行的修改

    • 在数据库架构、表或行中执行的操作,或影响特定内容的操作

  • 入侵检测和调查

  • 可疑活动检测和调查

  • 检测授权问题;例如,识别普通用户或特权用户滥用访问权限的情况

数据库审计线索试图回答以下典型问题:谁查看或修改了数据库中的敏感数据? 这是什么时候发生的? 特定用户从哪里访问数据? 特权用户是否滥用了他们的无限访问权限?

MySQL 和 MariaDB 都使用 MariaDB 审计插件实现了数据库实例审计跟踪功能。此插件记录数据库活动,例如用户登录数据库和针对数据库运行的查询。数据库活动记录存储在日志文件中。若要访问审计日志,数据库实例必须使用具有 MARIADB_AUDIT_PLUGIN 选项的自定义选项组。有关更多信息,请参见MariaDB 审计插件支持 MySQL在亚马逊 RDS 文档中。审核日志中的记录以插件定义的特定格式存储。您可以在以下位置找到有关审核日志格式的更多详细信息MariaDB 服务器文档

这个AWS Cloud为你提供审计记录AWS账户由提供AWS CloudTrail服务。CloudTrail将亚马逊 RDS 的 API 调用捕获为事件。所有亚马逊 RDS 操作都会被记录下来。CloudTrail提供用户、角色或其他人在 Amazon RDS 中执行的操作的记录AWS服务。事件包括在... 中采取的行动AWS管理控制台,AWS CLI,以及AWS软件开发工具包和 API。

示例

在典型的审计场景中,您可能需要合并AWS CloudTrail使用数据库审计日志和 Amazon RDS 事件监控进行跟踪。例如,您可能遇到的场景是 Amazon RDS 数据库实例的数据库参数(例如,database-1) 已修改,您的任务是确定谁进行了修改、更改了什么以及更改何时发生。

要完成任务,请执行以下步骤:

  1. 列出发生在数据库实例上的 Amazon RDS 事件database-1并确定该类别中是否存在事件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" } ] }
  2. 确定数据库实例正在使用哪个数据库参数组:

    $ 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" } ] ] ]
  3. 使用AWS CLI去搜寻CloudTrail事件在那里的区域database-1是在步骤 1 中发现的 Amazon RDS 事件前后的时段内部署的,在哪里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事件表明User1带角色Role1从AWS账户 111122223333 修改了数据库参数组mariadb10-6-test,它曾被数据库实例使用database-12022-12-01 at 09:18:19 h。修改了两个参数并将其设置为以下值:

  • innodb_log_buffer_size = 8388612

  • innodb_write_io_threads = 8

额外CloudTrail和CloudWatch日志功能

您可以通过以下方式对过去 90 天内的操作和安全事件进行故障排除事件历史在CloudTrail控制台。要延长保留期并利用其他查询功能,您可以使用AWS CloudTrail湖。和AWS CloudTrailLake,您可以在事件数据存储中保存事件数据长达七年。此外,该服务支持复杂的 SQL 查询,与中简单的键值查找所提供的视图相比,该查询提供了更深入、更可定制的事件视图事件历史

要监控您的审计记录、设置警报并在发生特定活动时收到通知,您需要配置CloudTrail将其跟踪记录发送到CloudWatch日志。在跟踪记录存储为CloudWatch日志,您可以定义指标筛选器来评估日志事件以匹配术语、短语或值,并将指标分配给指标筛选器。此外,你可以创建CloudWatch根据您指定的阈值和时间段生成的警报。例如,您可以配置向负责团队发送通知的警报,以便他们可以采取适当的措施。您也可以将 CloudWatch 配置为自动执行操作以响应警报。