本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon CloudTrail 中的安全最佳实践
Amazon CloudTrail 提供了在您开发和实施自己的安全策略时需要考虑的大量安全功能。以下最佳实践是一般指导原则,并不代表完整安全解决方案。这些最佳实践可能不适合环境或不满足环境要求,请将其视为有用的考虑因素而不是惯例。
CloudTrail 检测性安全最佳实践
创建跟踪
要持续记录 Amazon 账户中的事件,您必须创建跟踪。尽管 CloudTrail 在 CloudTrail 控制台中为管理事件提供 90 天的事件历史记录信息而不创建跟踪,但它不是永久记录,且不会提供有关所有可能的事件类型的信息。要获得持续记录以及包含您指定的所有事件类型的记录,您必须创建跟踪,它将日志文件传送到您指定的 Simple Storage Service(Amazon S3)存储桶。
为了帮助管理您的 CloudTrail 数据,请考虑创建一个跟踪记录来记录所有 Amazon Web Services 区域 中的管理事件,然后创建其它跟踪记录来记录资源的特定事件类型,如 Simple Storage Service(Amazon S3)存储桶活动或 Amazon Lambda 函数。
以下是您可以采取的一些步骤:
在所有 Amazon Web Services 区域 应用跟踪记录
为了获取 IAM 身份或服务在您的 Amazon 账户中所执行之事件的完整记录,每个跟踪应配置为记录所有 Amazon Web Services 区域 中的事件。通过记录所有 Amazon Web Services 区域 中的事件,您可以确保在您的 Amazon 账户中发生的所有事件都会得到记录,而无论它们是在哪个 Amazon 区域中发生的。这包括全局服务事件,这些事件记录到一个特定于该服务的 Amazon 区域中。当您创建一个应用于所有区域的跟踪时,CloudTrail 会记录每个区域中的事件,并将 CloudTrail 事件日志文件传输到您指定的 S3 存储桶。如果您在创建应用于所有区域的跟踪后又添加了一个 Amazon 区域,则该新区域会自动包括在内,该区域中的事件也将被记录。在 CloudTrail 控制台中创建跟踪时,这是默认选项。
以下是您可以采取的一些步骤:
-
更新现有跟踪记录以记录所有 Amazon Web Services 区域 中的事件。
-
实施持续检测性控制,以通过使用 Amazon Config 中的 multi-region-cloud-trail-enabled 规则帮助确保创建的所有跟踪记录正在记录所有 Amazon Web Services 区域 中的事件。
启用 CloudTrail 日志文件完整性
在安全和取证调查中,经验证的日志文件非常重要。例如,通过经验证的日志文件,您可以十分确定日志文件本身未更改,或者特定 IAM 身份凭证执行了特定 API 活动。通过 CloudTrail 日志文件完整性验证过程,您还可以知道日志文件是否已删除或更改,或者可以十分确定在给定时间段内未向您的账户提交任何日志文件。CloudTrail 日志文件完整性验证使用行业标准算法:哈希采用 SHA-256,数字签名采用带 RSA 的 SHA-256。这样,要修改、删除或伪造 CloudTrail 日志文件而不被检测到在计算上是不可行的。有关更多信息,请参阅 启用验证并验证文件。
与 Amazon CloudWatch Logs 集成
CloudWatch Logs 允许您监控和接收由 CloudTrail 捕获的特定事件的警报。发送到 CloudWatch Logs 的事件是配置为由您的跟踪记录的那些事件,因此请确保您已配置您的跟踪以记录您感兴趣的事件类型(管理事件、数据事件和/或网络活动事件(预览版))。
例如,您可以监控关键的安全和网络相关管理事件,例如失败的 Amazon Web Services Management Console登录事件。
以下是您可以采取的一些步骤:
-
将跟踪配置为将事件发送到 CloudWatch Logs。
-
考虑实施持续的检测性控制,以通过使用 Amazon Config 中的 cloud-trail-cloud-watch-logs-enabled 规则,帮助确保所有跟踪记录都将事件发送到 CloudWatch Logs 进行监控。
使用 Amazon GuardDuty
Amazon GuardDuty 是一项威胁检测服务,有助于保护您的账户、容器、工作负载和 Amazon 环境中的数据。GuardDuty 通过使用机器学习(ML)模型以及异常和威胁检测功能,持续监控不同的日志来源,以识别环境中的潜在安全风险和恶意活动并确定其优先级。
例如,如果 GuardDuty 检测到通过实例启动角色专门为 Amazon EC2 实例创建的凭证正在被 Amazon 内的另一个账户使用,则它将检测到潜在的凭证泄露。有关更多信息,请参阅《Amazon GuardDuty 用户指南》。
使用 Amazon Security Hub
监控 CloudTrail 的使用情况,因为它与使用 Amazon Security Hub 的安全最佳实践有关。Security Hub 使用侦测性安全控件来评估资源配置和安全标准,以帮助您遵守各种合规框架。有关使用 Security Hub 评估 CloudTrail 资源的更多信息,请参阅《Amazon Security Hub User Guide》中的 Amazon CloudTrail controls。
CloudTrail 预防性安全最佳实践
CloudTrail 的以下最佳实践可以帮助防止安全事故。
记录到专用和集中式 Simple Storage Service(Amazon S3)存储桶
CloudTrail 日志文件是 IAM 身份或 Amazon 服务采取的操作的审计记录。这些日志的完整性、完全性和可用性对于进行取证和审计至关重要。通过登录到专用和集中化的 Simple Storage Service(Amazon S3)存储桶,您可以强制实施严格的安全控制、访问和责任划分。
以下是您可以采取的一些步骤:
-
创建单独的 Amazon 账户作为日志存档账户。如果您使用 Amazon Organizations,请在组织中注册此账户,并考虑创建组织跟踪以便为组织中的所有 Amazon 账户记录数据。
-
如果您不使用 Organizations,但希望为多个 Amazon 账户记录数据,请创建跟踪以在此日志存档账户中记录活动。将对此账户的访问权限限制为仅限应该对账户和审计数据具有访问权限的可信管理用户。
-
作为创建跟踪的一部分(无论它是组织跟踪或针对单个 Amazon 账户的跟踪),创建一个专用 Simple Storage Service(Amazon S3)存储桶来存储此跟踪的日志文件。
-
如果您要记录多个 Amazon 账户的活动,请修改存储桶策略,以允许记录和存储您希望记录其 Amazon 账户活动的所有 Amazon 账户的日志文件。
-
如果您没有使用组织跟踪记录,请在所有 Amazon 账户中创建跟踪,同时在日志存档账户中指定 Simple Storage Service(Amazon S3)存储桶。
使用 Amazon KMS 托管密钥进行服务器端加密。
默认情况下,CloudTrail 传输到您的 S3 存储桶的日志文件使用具有 KMS 密钥的服务器端加密(SSE-KMS)进行加密。要对 CloudTrail 使用 SSE-KMS,您需要创建并管理 Amazon KMS key,又称为 KMS 密钥。
注意
如果您使用 SSE-KMS 和日志文件验证,并且您已修改您的 Simple Storage Service(Amazon S3)存储桶策略以仅允许 SSE-KMS 加密文件,您将无法创建利用该存储桶的跟踪记录,除非您修改存储桶策略以专门允许 AES256 加密,如以下示例策略行所示。
"StringNotEquals": { "s3:x-amz-server-side-encryption": ["aws:kms", "AES256"] }
以下是您可以采取的一些步骤:
-
考虑实施持续的检测性控制,以通过使用 Amazon Config 中的 cloud-trail-encryption-enabled 规则,帮助确保所有跟踪记录都利用 SSE-KMS 加密日志文件。
将条件键添加到默认 Amazon SNS 主题策略
当您配置跟踪以向 Amazon SNS 发送通知时,CloudTrail 会向您的 SNS 主题访问策略添加一个策略语句,以允许 CloudTrail 向 SNS 主题发送内容。作为安全最佳实践,建议您将 aws:SourceArn
(或选择 aws:SourceAccount
)条件密钥添加到 Amazon SNS 主题策略语句。这有助于防止未经授权的账户访问您的 SNS 主题。有关更多信息,请参阅 针对 CloudTrail 的 Amazon SNS 主题策略。
对您存储日志文件的 Simple Storage Service(Amazon S3)存储桶实施最低权限访问
CloudTrail 跟踪记录将事件记录到您指定的 Simple Storage Service(Amazon S3)存储桶。这些日志文件包含 IAM 身份或 Amazon 服务采取的操作的审计日志。这些日志的完整性和完全性对于进行审计和取证至关重要。为了帮助确保完整性,当您创建或修改用于存储 CloudTrail 日志文件的任何 Simple Storage Service(Amazon S3)存储桶的访问权限时,您应符合最小权限原则。
执行以下步骤:
-
查看您在其中存储日志文件的任何和所有存储桶的 Simple Storage Service(Amazon S3)存储桶策略,如有必要,可对其进行调整以删除任何不必要的访问权限。如果您使用 CloudTrail 控制台创建跟踪,系统会为您生成此存储桶策略,但也可以手动创建和管理。
-
作为安全最佳实践,请务必手动将
aws:SourceArn
条件密钥添加到存储桶策略。有关更多信息,请参阅 针对 CloudTrail 的 Simple Storage Service(Amazon S3)存储桶策略。 -
如果您使用相同的 Simple Storage Service(Amazon S3)存储桶来存储多个 Amazon 账户的日志文件,请遵循接收多个账户的日志文件的指南。
-
如果您使用组织跟踪记录,请确保遵循组织跟踪记录的指南,然后在 使用以下方法为组织创建跟踪 Amazon CLI 中审核组织跟踪记录的 Simple Storage Service(Amazon S3)存储桶的策略示例。
在存储日志文件的 Amazon S3 存储桶上启用 MFA 删除
配置多重身份验证(MFA)后,尝试更改存储桶版本控制状态或删除存储桶中的对象版本时,需要进行额外的身份验证。这样,即使某个用户获得有权永久删除 Amazon S3 对象的 IAM 用户的密码,您仍然能够防止可能破坏日志文件的操作。
以下是您可以采取的一些步骤:
-
请查看《Amazon Simple Storage Service 用户指南》中的 MFA 删除指南。
注意
不能将 MFA 删除与生命周期配置一起使用。有关生命周期配置以及如何与其他配置交互的更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的生命周期和其他存储桶配置。
配置存储日志文件的 Simple Storage Service(Amazon S3)存储桶上的生命周期管理
CloudTrail 跟踪的默认设置是将日志文件无限期地存储在为此跟踪配置的 Simple Storage Service(Amazon S3)存储桶中。您可以使用 Simple Storage Service(Amazon S3)对象生命周期管理规则来定义您自己的保留策略,以更好地满足您的业务和审计需求。例如,您可能要将时间超过一年的日志文件存档到 Amazon Glacier,或者在经过一定时间之后删除日志文件。
注意
启用了多重身份验证(MFA)的存储桶上不支持生命周期配置。
限制访问 AWSCloudTrail_FullAccess 策略
拥有 AWSCloudTrail_FullAccess 策略的用户能够禁用或重新配置其 Amazon 账户中最敏感且最重要的审计功能。此策略不旨在与您 Amazon 账户中的 IAM 身份共享,也不是为了广泛应用于这些身份。将此策略的应用范围限制为尽可能少的人员,也即您希望作为 Amazon 账户管理员的那些人员。