

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

# 中的安全最佳实践 Amazon CloudTrail
<a name="best-practices-security"></a>

Amazon CloudTrail 提供了许多安全功能，供您在制定和实施自己的安全策略时考虑。以下最佳实践是一般指导原则，并不代表完整安全解决方案。这些最佳实践可能不适合环境或不满足环境要求，请将其视为有用的考虑因素而不是惯例。

**Topics**
+ [CloudTrail 侦探安全最佳实践](#best-practices-security-detective)
+ [CloudTrail 预防性安全最佳实践](#best-practices-security-preventative)

## CloudTrail 侦探安全最佳实践
<a name="best-practices-security-detective"></a>

**创建跟踪**

要持续记录您的 Amazon 账户中的事件，您必须创建跟踪。尽管在不创建跟踪的情况下在 CloudTrail 控制台中为管理事件 CloudTrail 提供 90 天的事件历史记录信息，但它不是永久记录，也不能提供有关所有可能的事件类型的信息。要获得持续记录以及包含您指定的所有事件类型的记录，您必须创建跟踪，它将日志文件传送到您指定的 Amazon S3 存储桶。

为了帮助管理您的 CloudTrail 数据，可以考虑创建一个记录所有管理事件的跟踪 Amazon Web Services 区域，然后创建其他跟踪来记录资源的特定事件类型，例如 Amazon S3 存储桶活动或 Amazon Lambda 函数。

以下是您可以采取的一些步骤：
+ [为您的 Amazon 账户创建跟踪记录。](cloudtrail-create-a-trail-using-the-console-first-time.md#creating-a-trail-in-the-console)
+ [为企业创建跟踪记录。](creating-trail-organization.md)

**创建多区域跟踪**

要获取 IAM 身份或 Amazon 中的服务所执行事件的完整记录，请创建多区域跟踪。多区域跟踪记录您的 Amazon Web Services 账户所有[启用 Amazon Web Services 区域](https://docs.amazonaws.cn/accounts/latest/reference/manage-acct-regions.html#manage-acct-regions-enable-standalone)的事件。通过在全部启用状态下记录事件 Amazon Web Services 区域，您可以确保捕获所有已启用区域中的活动 Amazon Web Services 账户。这包括记录[全局服务事件](cloudtrail-concepts.md#cloudtrail-concepts-global-service-events)，这些事件记录到该服务的 Amazon Web Services 区域 特定位置。使用 CloudTrail 控制台创建的所有跟踪均为多区域跟踪。

以下是您可以采取的一些步骤：
+ [为您的 Amazon 账户创建跟踪记录。](cloudtrail-create-a-trail-using-the-console-first-time.md#creating-a-trail-in-the-console)
+ [将现有单区域跟踪](cloudtrail-update-a-trail-console.md)转换为多区域跟踪。
+ 使用中的[multi-region-cloud-trail启用](https://docs.amazonaws.cn/config/latest/developerguide/multi-region-cloudtrail-enabled.html)规则，实施持续的侦探控制，以帮助确保创建的所有 Amazon Web Services 区域 跟踪都记录所有事件。 Amazon Config

**启用 CloudTrail 日志文件完整性**

在安全和取证调查中，经验证的日志文件非常重要。例如，通过经验证的日志文件，您可以十分确定日志文件本身未更改，或者特定 IAM 身份凭证执行了特定 API 活动。 CloudTrail 日志文件完整性验证过程还可以让您知道日志文件是否已被删除或更改，或者肯定地断言在给定时间段内没有向您的账户发送任何日志文件。 CloudTrail 日志文件完整性验证使用行业标准算法：SHA-256 用于哈希，SHA-256 使用 RSA 进行数字签名。这使得在没有检测到的情况下修改、删除或伪造 CloudTrail日志文件在计算上是不可行的。有关更多信息，请参阅 [启用验证并验证文件](cloudtrail-log-file-validation-intro.md#cloudtrail-log-file-validation-intro-enabling-and-using)。

**与 Amazon CloudWatch 日志集成**

CloudWatch 日志允许您监控和接收捕获的特定事件的警报 CloudTrail。发送到 CloudWatch 日志的事件是配置为由您的跟踪记录的事件，因此请确保已将一个或多个跟踪配置为记录您感兴趣的事件类型（管理事件数据事件 and/or 网络活动事件）。

例如，您可以监控密钥安全和与网络相关的管理事件，例如[Amazon Web Services 管理控制台 登录失败](cloudwatch-alarms-for-cloudtrail.md#cloudwatch-alarms-for-cloudtrail-signin)事件。

以下是您可以采取的一些步骤：
+ 查看示例[CloudWatch日志集成。 CloudTrail](cloudwatch-alarms-for-cloudtrail.md)
+ 配置您的跟踪以[将事件发送到 CloudWatch 日志](monitor-cloudtrail-log-files-with-cloudwatch-logs.md)。
+ 考虑实施持续的侦探控制，通过使用中的[cloud-trail-cloud-watch启用-logs](https://docs.amazonaws.cn/config/latest/developerguide/cloud-trail-cloud-watch-logs-enabled.html) 的规则，帮助确保所有跟踪都将事件发送到 CloudWatch 日志进行监控。 Amazon Config

**使用亚马逊 GuardDuty**

Amazon GuardDuty 是一项威胁检测服务，可帮助您保护您的账户、容器、工作负载和 Amazon 环境中的数据。通过使用机器学习 (ML) 模型以及异常和威胁检测功能，可以 GuardDuty 持续监控不同的日志源，以识别环境中的潜在安全风险和恶意活动，并确定其优先级。

例如，如果它检测到通过实例启动角色专为 Amazon EC2 实例创建但正在从其中的其他账户使用的证书，则 GuardDuty 会检测到潜在的证书泄露。 Amazon有关更多信息，请参阅 [https://docs.amazonaws.cn/guardduty/latest/ug/what-is-guardduty.html](https://docs.amazonaws.cn/guardduty/latest/ug/what-is-guardduty.html)。

**使用 Amazon Security Hub CSPM**

使用监控您的使用情况， CloudTrail 因为它与安全最佳实践有关[Amazon Security Hub CSPM](https://docs.amazonaws.cn/securityhub/latest/userguide/what-is-securityhub.html)。Security Hub CSPM 使用侦探*安全控制*来评估资源配置和*安全标准*，以帮助您遵守各种合规框架。有关使用 Security Hub CSPM 评估 CloudTrail 资源的更多信息，请参阅《*Amazon Security Hub 用户*指南》中的[Amazon CloudTrail 控件](https://docs.amazonaws.cn/securityhub/latest/userguide/cloudtrail-controls.html)。

## CloudTrail 预防性安全最佳实践
<a name="best-practices-security-preventative"></a>

的以下最佳做法 CloudTrail 可以帮助防止安全事件。

**记录到专用和集中式 Amazon S3 存储桶**

CloudTrail 日志文件是 IAM 身份或 Amazon 服务所执行操作的审计日志。这些日志的完整性、完全性和可用性对于进行取证和审计至关重要。通过登录到专用和集中化的 Amazon S3 存储桶，您可以强制实施严格的安全控制、访问和责任划分。

以下是您可以采取的一些步骤：
+ 创建一个单独的 Amazon 账户作为日志存档账户。如果您使用 Amazon Organizations，请在组织中注册此账户，并考虑[创建组织跟踪](creating-trail-organization.md)来记录组织中所有 Amazon 账户的数据。
+ 如果您不使用 Organizations，但想要记录多个 Amazon 账户的数据，请[创建一个跟踪](cloudtrail-create-a-trail-using-the-console-first-time.md#creating-a-trail-in-the-console)以记录此日志存档帐户中的活动。将对此账户的访问权限限制为仅限应该对账户和审计数据具有访问权限的可信管理用户。
+ 在创建跟踪的过程中，无论是组织跟踪还是单个 Amazon 账户的跟踪，都要创建一个专用 Amazon S3 存储桶来存储该跟踪的日志文件。
+ 如果您想记录多个 Amazon 账户的活动，[请修改存储桶策略](cloudtrail-set-bucket-policy-for-multiple-accounts.md)以允许记录和存储您想要记录 Amazon 账户活动的所有账户的日志 Amazon 文件。
+ 如果您没有使用组织跟踪记录，请在所有 Amazon 账户中创建跟踪，同时在日志存档账户中指定 Amazon S3 存储桶。

**使用带有 Amazon KMS 托管密钥的服务器端加密**

默认情况下，传送 CloudTrail 到您的 S3 存储桶的日志文件使用[服务器端加密和 KMS 密钥 (SSE-KMS) 进行](https://docs.amazonaws.cn/AmazonS3/latest/userguide/UsingKMSEncryption.html)加密。要将 SSE-KMS 与配合使用 CloudTrail，您需要创建并管理 KMS 密钥 [Amazon KMS key](https://docs.amazonaws.cn/kms/latest/developerguide/concepts.html)，也称为 KMS 密钥。

**注意**  
如果您使用 SSE-KMS 和日志文件验证，并且已将 Amazon S3 存储桶策略修改为仅允许 SSE-KMS 加密文件，则除非您将存储桶策略修改为明确允许 AES256 加密，否则您将无法创建使用该存储桶的跟踪，如以下示例策略行所示。  

```
"StringNotEquals": { "s3:x-amz-server-side-encryption": ["aws:kms", "AES256"] } 
```

以下是您可以采取的一些步骤：
+ [查看使用 SSE-KMS 加密您的日志文件的优点](encrypting-cloudtrail-log-files-with-aws-kms.md)。
+ [创建一个 KMS 密钥用来加密日志文件](create-kms-key-policy-for-cloudtrail.md)。
+ [为您的跟踪记录配置日志文件加密。](create-kms-key-policy-for-cloudtrail-update-trail.md)
+ 考虑实施持续的侦探控制，以帮助确保所有跟踪都使用中的规则使用 SSE-KMS 加密日志文件。[cloud-trail-encryption-enabled](https://docs.amazonaws.cn/config/latest/developerguide/cloud-trail-encryption-enabled.html) Amazon Config

**将条件键添加到默认 Amazon SNS 主题策略**

当您配置跟踪以向 Amazon SNS 发送通知时， CloudTrail 会在您的 SNS 主题访问策略中添加一条允许向 SNS 主题 CloudTrail 发送内容的策略声明。作为安全最佳实践，建议您将 `aws:SourceArn`（或选择 `aws:SourceAccount`）条件密钥添加到 Amazon SNS 主题策略语句。这有助于防止未经授权的账户访问您的 SNS 主题。有关更多信息，请参阅 [Amazon SNS 主题政策适用于 CloudTrail](cloudtrail-permissions-for-sns-notifications.md)。

**对您存储日志文件的 Amazon S3 存储桶实施最低权限访问**

CloudTrail 将事件跟踪到您指定的 Amazon S3 存储桶。这些日志文件包含 IAM 身份和 Amazon 服务所采取的操作的审计日志。这些日志的完整性和完全性对于进行审计和取证至关重要。为了帮助确保完整性，在创建或修改对用于存储 CloudTrail 日志文件的任何 Amazon S3 存储桶的访问权限时，应遵守最低权限原则。

执行以下步骤：
+ 查看您在其中存储日志文件的任何和所有存储桶的 [Amazon S3 存储桶策略](create-s3-bucket-policy-for-cloudtrail.md)，如有必要，可对其进行调整以删除任何不必要的访问权限。如果您使用 CloudTrail 控制台创建跟踪，则会为您生成此存储桶策略，但也可以手动创建和管理。
+ 作为安全最佳实践，请务必手动将 `aws:SourceArn` 条件密钥添加到存储桶策略。有关更多信息，请参阅 [适用于 Amazon S3 存储桶政策 CloudTrail](create-s3-bucket-policy-for-cloudtrail.md)。
+ 如果您使用相同的 Amazon S3 存储桶来存储多个 Amazon 账户的日志文件，请遵循[接收多个账户的日志文件](cloudtrail-receive-logs-from-multiple-accounts.md)的指南。
+ 如果您使用组织跟踪记录，请确保遵循[组织跟踪记录](creating-trail-organization.md)的指南，然后在 [使用以下方法为组织创建跟踪 Amazon CLI](cloudtrail-create-and-update-an-organizational-trail-by-using-the-aws-cli.md) 中审核组织跟踪记录的 Amazon S3 存储桶的策略示例。
+ 查看 [Amazon S3 安全文档](https://docs.amazonaws.cn/AmazonS3/latest/userguide/security.html)和[用于保护存储桶的示例演练](https://docs.amazonaws.cn/AmazonS3/latest/userguide/walkthrough1.html)。

**在存储日志文件的 Amazon S3 存储桶上启用 MFA 删除**

配置多重身份验证（MFA）后，尝试更改存储桶版本控制状态或删除存储桶中的对象版本时，需要进行额外的身份验证。这样，即使某个用户获得有权永久删除 Amazon S3 对象的 IAM 用户的密码，您仍然能够防止可能破坏日志文件的操作。

以下是您可以采取的一些步骤：
+ 请查看《Amazon Simple Storage Service 用户指南**》中的 [MFA 删除](https://docs.amazonaws.cn/AmazonS3/latest/userguide/MultiFactorAuthenticationDelete.html)指南。
+ [添加 Amazon S3 存储桶策略以请求 MFA](https://docs.amazonaws.cn/AmazonS3/latest/userguide/example-bucket-policies.html#example-bucket-policies-MFA)。

**注意**  
不能将 MFA 删除与生命周期配置一起使用。有关生命周期配置以及如何与其他配置交互的更多信息，请参阅**《Amazon Simple Storage Service 用户指南》中的[生命周期和其他存储桶配置](https://docs.amazonaws.cn/AmazonS3/latest/userguide/lifecycle-and-other-bucket-config.html)。

**配置存储日志文件的 Amazon S3 存储桶上的生命周期管理**

 CloudTrail 跟踪的默认设置是无限期地将日志文件存储在为跟踪配置的 Amazon S3 存储桶中。您可以使用 [Amazon S3 对象生命周期管理规则](https://docs.amazonaws.cn/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)来定义您自己的保留策略，以更好地满足您的业务和审计需求。例如，您可能要将时间超过一年的日志文件存档到 Amazon Glacier，或者在经过一定时间之后删除日志文件。

**注意**  
启用了多重身份验证（MFA）的存储桶上不支持生命周期配置。

**限制对 AWSCloudTrail\$1FullAccess策略的访问权限**

拥有该[AWSCloudTrail\$1FullAccess](security_iam_id-based-policy-examples.md#grant-custom-permissions-for-cloudtrail-users-full-access)策略的用户可以禁用或重新配置其 Amazon 账户中最敏感和最重要的审计功能。此策略不旨在与您 Amazon 账户中的 IAM 身份共享，也不是为了广泛应用于这些身份。将本政策的适用范围限制在尽可能少的个人，即您希望担任 Amazon 账户管理员的个人。