

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

# 审核跟踪
<a name="audit-trails"></a>

审计跟踪记录（或审计日志）提供与 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 审计插件支持](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.MySQL.Options.AuditPlugin.html)。审计日志中的记录以插件定义的特定格式存储。您可以在 [MariaDB 服务器文档](https://mariadb.com/kb/en/mariadb-audit-plugin-log-format/)中找到有关审计日志格式的更多详细信息。

您的 AWS 账户的 AWS 云审计跟踪记录由 [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html) 服务提供。CloudTrail 将 Amazon RDS 的 API 调用作为事件捕获。所有 Amazon RDS 操作都会记录。CloudTrail 提供了用户、角色或 AWS 服务在 Amazon RDS 中所执行操作的记录。事件包括在 AWS 管理控制台、AWS CLI、AWS SDK 和 API 中所执行的操作。

## 示例
<a name="example"></a>

在典型的审计场景中，您可能需要将 AWS CloudTrail 跟踪与数据库审计日志和 Amazon RDS 事件监控相结合。例如，您可能遇到的情况是，您的 Amazon RDS 数据库实例（例如 `database-1`）的数据库参数已修改，您的任务是确定谁进行了修改、更改了哪些内容以及更改发生的时间。

要完成任务，请执行以下步骤：

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"
           }
       ]
   }
   ```

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"
               }
           ]
       ]
   ]
   ```

1. 使用 AWS CLI 在部署 `database-1` 的区域中，于在步骤 1 中发现的 Amazon RDS 事件前后的时间段内，[搜索 CloudTrail 事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events-cli.html)，其中 `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 功能
<a name="additional-features"></a>

您可以通过在 CloudTrail 控制台中查看**事件历史记录**对过去 90 天内的操作和安全事故进行问题排查。要延长保留期并利用其他查询功能，您可以使用 [AWS CloudTrail Lake](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-lake.html)。借助 AWS CloudTrail Lake，您可以在事件数据存储中保存事件数据长达七年。此外，此服务支持复杂的 SQL 查询，相比**事件历史记录**中的简单密钥值查询提供的视图，这些查询提供更深入、更可自定义的事件视图。

要监控您的审计跟踪记录、设置告警并在特定活动发生时收到通知，您需要[将 CloudTrail 配置为将跟踪记录发送到 CloudWatch Logs](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/monitor-cloudtrail-log-files-with-cloudwatch-logs.html)。将跟踪记录存储为 CloudWatch Logs 后，您可以定义指标筛选条件来评估日志事件以匹配字词、短语或值，并将指标分配给指标筛选条件。此外，您还可以创建根据您指定的阈值和时间段生成的 CloudWatch 告警。例如，您可以配置告警，向负责的团队发送通知，以便他们可以采取适当的措施。您也可以将 CloudWatch 配置为自动执行操作以响应警报。