Amazon CloudTrail 中的安全最佳实践 - Amazon CloudTrail
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Amazon CloudTrail 中的安全最佳实践

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

CloudTrail 检测性安全最佳实践

创建 跟踪

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

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

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

在所有 Amazon Web Services 区域 应用跟踪记录

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

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

启用 CloudTrail 日志文件完整性

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

与 Amazon CloudWatch Logs 集成

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

例如,您可以监控关键的安全和网络相关管理事件,例如失败的 Amazon Web Services Management Console 登录事件

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

CloudTrail 预防性安全最佳实践

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

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

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

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

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

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

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

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

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

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

预设情况下,CloudTrail 提交到您存储桶的日志文件是用 Amazon S3 托管加密密钥 (SSE-S3) 通过 Amazon 服务器端加密进行加密的。要提供可直接管理的安全层,您可以对 CloudTrail 日志文件改为使用 Amazon KMS 托管密钥的服务器端加密 (SSE-KMS)。要对 CloudTrail 使用 SSE-KMS,您需要创建并管理 Amazon KMS key,又称为 KMS 密钥。

注意

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

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

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

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

当您配置跟踪以向 Amazon SNS 发送通知时,CloudTrail 会向您的 SNS 主题访问策略添加一个策略语句,以允许 CloudTrail 向 SNS 主题发送内容。作为安全最佳实践,建议您将 aws:SourceArn(或选择 aws:SourceAccount)条件密钥添加到 CloudTrail 策略语句。这有助于防止未经授权的账户访问您的 SNS 主题。有关更多信息,请参阅 针对 CloudTrail 的 Amazon SNS 主题策略

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

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

执行以下步骤:

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

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

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

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

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

限制访问 AWSCloudTrail_FullAccess 策略

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