AWS CloudTrail
用户指南 (版本 1.0)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS CloudTrail 中的安全最佳实践

AWS CloudTrail 提供了您在开发和实施自己的安全策略时需要考虑的许多安全功能。以下最佳实践是一般准则,并不代表完整的安全解决方案。由于这些最佳实践可能不适合您的环境或不满足您的环境要求,因此将其视为有用的考虑因素而不是惯例。

CloudTrail 检测性安全最佳实践

创建跟踪

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

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

以下是您可以采取的一些步骤:

将跟踪应用到所有 AWS 区域

为了获取用户、角色或服务在您的 AWS 账户中所执行的事件的完全记录,每个跟踪应配置为记录所有 AWS 区域中的事件。通过记录所有 AWS 区域中的事件,您可以确保在您的 AWS 账户中发生的所有事件都会得到记录,而无论它们是在哪个 AWS 区域中发生的。这包括全局服务事件,这些事件记录到一个特定于该服务的 AWS 区域中。当您创建一个应用于所有区域的跟踪时,CloudTrail 会记录每个区域中的事件,并将 CloudTrail 事件日志文件传输到您指定的 S3 存储桶。如果您在创建应用到所有区域的跟踪后又添加了一个 AWS 区域,则该新区域会自动包括在内,该区域中的事件也将被记录。在 CloudTrail 控制台中创建跟踪时,这是默认选项。

以下是您可以采取的一些步骤:

启用 CloudTrail 日志文件完整性

在安全和取证调查中,经验证的日志文件非常重要。例如,通过经验证的日志文件,您可以十分确定日志文件本身未更改,或者特定用户凭证执行了特定 API 活动。通过 CloudTrail 日志文件完整性验证过程,您还可以知道日志文件是否已删除或更改,或者可以十分确定在给定时间段内未向您的账户提交任何日志文件。CloudTrail 日志文件完整性验证使用业界标准算法:哈希采用 SHA-256,数字签名采用带 RSA 的 SHA-256。这样,要修改、删除或伪造 CloudTrail 日志文件而不被检测到在计算上是不可行的。有关更多信息,请参阅 启用验证并验证文件

与 Amazon CloudWatch Logs 集成

CloudWatch Logs 允许您监控和接收由 CloudTrail 捕获的特定事件的警报。发送到 CloudWatch Logs 的事件是配置为由您的跟踪记录的那些事件,因此,请确保您已配置您的一个或多个跟踪以记录您有兴趣监控的事件类型(管理事件和/或数据事件)。

例如,您可以监控关键的安全和网络相关的管理事件,如失败的 AWS 控制台登录事件对 Amazon EC2 实例的更改,如启动、删除和重启实例。

以下是您可以采取的一些步骤:

CloudTrail 预防性安全最佳实践

CloudTrail 的以下最佳实践可以帮助防止安全事故。

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

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

以下是您可以采取的一些步骤:

  • 创建单独的 AWS 账户作为日志存档账户。如果您使用 AWS Organizations,请在组织中注册此账户,并考虑创建组织跟踪以便为组织中的所有 AWS 账户记录数据。

  • 如果您不使用 组织,但希望为多个 AWS 账户记录数据,请创建一个跟踪以在此日志存档账户中记录活动。将对此账户的访问权限限制为仅限应该对账户和审计数据具有访问权限的可信管理用户。

  • 作为创建跟踪的一部分(无论它是组织跟踪或针对单个 AWS 账户的跟踪),创建一个专用 Amazon S3 存储桶来存储此跟踪的日志文件。

  • 如果您要记录多个 AWS 账户的活动,请修改存储桶策略,以允许记录和存储您希望记录其 AWS 账户活动的所有 AWS 账户的日志文件。

  • 如果您没有使用组织跟踪,请在所有 AWS 账户中创建跟踪,同时在日志存档账户中指定 Amazon S3 存储桶。

使用 AWS KMS 托管密钥进行服务器端加密

默认情况下,CloudTrail 提交到您存储桶的日志文件是用 Amazon S3 托管加密密钥 (SSE-S3) 通过 Amazon 服务器端加密进行加密的。要提供可直接管理的安全层,您可以对 CloudTrail 日志文件换用AWS KMS 托管密钥 (SSE-KMS) 服务器端加密。要对 CloudTrail 使用 SSE-KMS,您需要创建并管理一个 KMS 密钥,也称为客户主密钥 (CMK)

注意

如果您使用 SSE-KMS 和日志文件验证,并且您已修改您的 Amazon S3 存储桶策略以仅允许 SSE-KMS 加密文件,您将无法创建利用该存储桶的跟踪,除非您修改存储桶策略以专门允许 AES256 加密,如以下示例策略行所示。

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

以下是您可以采取的一些步骤:

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

CloudTrail 跟踪将事件记录到您指定的 Amazon S3 存储桶。这些日志文件包含用户、角色或 AWS 服务采取的操作的审计日志。这些日志的完整性和完全性对于进行审计和取证至关重要。为了帮助确保完整性,当您创建或修改用于存储 CloudTrail 日志文件的任何 Amazon S3 存储桶的访问权限时,您应符合最小权限原则。

以下是您可以采取的一些步骤:

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

配置多重身份验证 (MFA) 可确保当尝试更改存储桶的版本控制状态或永久删除对象版本时,需要进行额外的身份验证。这有助于防止任何可能危害日志文件完整性的操作,即使某个用户获得有权永久删除 Amazon S3 对象的 IAM 用户的密码,也是如此。

以下是您可以采取的一些步骤:

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

CloudTrail 跟踪的默认设置是将日志文件无限期地存储在为此跟踪配置的 Amazon S3 存储桶中。您可以使用 Amazon S3 对象生命周期管理规则来定义您自己的保留策略,以更好地满足您的业务和审计需求。例如,您可能要将时间超过一年的日志文件存档到 Amazon Glacier,或者在经过一定时间之后删除日志文件。

限制访问 AWSCloudTrailFullAccess 策略

拥有 AWSCloudTrailFullAccess 策略的用户能够禁用或重新配置其 AWS 账户中最敏感且最重要的审计功能。此策略的用途不是与您 AWS 账户中的用户和角色共享,也不是为了广泛应用于这些用户和角色。将此策略的应用范围限制为尽可能少的人员,也即您希望作为 AWS 账户管理员的那些人员。