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

CloudTrail 概念

本部分汇总了与 CloudTrail 相关的基本概念。

什么是 CloudTrail 事件?

CloudTrail 中的事件是 AWS 账户中的活动的记录。此活动可以是用户、角色或可由 CloudTrail 监控的服务所执行的操作。CloudTrail 事件提供通过 AWS 管理控制台、AWS 开发工具包、命令行工具和其他 AWS 服务执行的 API 和非 API 账户活动的历史记录。有两类事件可以记录在 CloudTrail 中:管理事件和数据事件。默认情况下,跟踪记录管理事件,但不记录数据事件。

管理事件和数据事件都使用相同的 CloudTrail JSON 日志格式。您可以通过 managementEvent 字段中的值识别它们。

注意

CloudTrail 不记录所有 AWS 服务。有些 AWS 服务不启用所有 API 和事件的日志记录。即使您配置为记录跟踪中的所有管理事件和数据事件,您也不会创建带所有可能的 AWS 事件的日志。有关不受支持的服务的更多信息,请参阅 CloudTrail 不支持的服务。有关会为某个特定服务记录哪些 API 的详细信息,请参阅 CloudTrail 支持的服务和集成中有关该服务的文档。

什么是管理事件?

管理事件提供对在您 AWS 账户内的资源上执行的管理操作的见解。这些也称为控制层面操作。示例管理事件包括:

  • 配置安全性(例如,IAM AttachRolePolicy API 操作)。

  • 注册设备(例如,Amazon EC2 CreateDefaultVpc API 操作)。

  • 配置传送数据的规则(例如,Amazon EC2 CreateSubnet API 操作)。

  • 设置日志记录(例如,AWS CloudTrail CreateTrail API 操作)。

管理事件还包括在您的账户中发生的非 API 事件。例如,当一个用户登录到您的账户时,CloudTrail 会记录 ConsoleLogin 事件。有关更多信息,请参阅CloudTrail 捕获的非 API 事件。有关 CloudTrail 为 AWS 服务记录的管理事件的列表,请参阅CloudTrail 支持的服务和集成

什么是数据事件?

数据事件提供对在资源上或资源内执行的资源操作的见解。这些也称为数据层面操作。数据事件通常是高容量活动。示例数据事件包括:

  • Amazon S3 对象级别 API 活动(例如,GetObjectDeleteObjectPutObject API 操作)。

  • AWS Lambda 函数执行活动 (Invoke API)。

默认情况下,在您创建跟踪时,数据事件处于禁用状态。要记录 CloudTrail 数据事件,您必须明确将要为其收集活动的受支持的资源或资源类型添加到跟踪。有关更多信息,请参阅 创建跟踪数据事件

记录数据事件将收取额外费用。有关 CloudTrail 定价,请参阅 AWS CloudTrail 定价

什么是 CloudTrail 事件历史记录?

CloudTrail 事件历史记录提供过去 90 天的 CloudTrail 事件的可查看、可搜索和可下载记录。您可以使用此历史记录了解您的 AWS 账户在 AWS 管理控制台、AWS 开发工具包、命令行工具和其他 AWS 服务中执行的操作。您可以通过选择要显示的列来在 CloudTrail 控制台中自定义事件历史记录的视图。

什么是跟踪?

跟踪是一种配置,可用于将 CloudTrail 事件传送到 Amazon S3 存储桶、CloudWatch Logs 和 CloudWatch Events。您可以使用跟踪来筛选您希望传送的 CloudTrail 事件,使用 AWS KMS 密钥加密您的 CloudTrail 事件日志文件,并设置日志文件传送的 Amazon SNS 通知。有关如何创建和管理跟踪的更多信息,请参阅为您的 AWS 账户创建跟踪

什么是组织跟踪?

组织跟踪是一种配置,可以将组织内的主账户和所有成员账户中的 CloudTrail 事件传送到同一 Amazon S3 存储桶、CloudWatch Logs 和 CloudWatch Events。创建组织跟踪可帮助您为组织定义统一的事件记录策略。

当您创建组织跟踪时,将在属于您的组织的每个 AWS 账户中创建具有您所指定名称的跟踪。成员账户中拥有 CloudTrail 权限的用户在从其 AWS 账户登录 AWS CloudTrail 控制台时,或者当他们运行 describe-trails 等 AWS CLI 命令时,将能够看到此跟踪(包括跟踪 ARN)(不过成员账户在使用 AWS CLI 时必须使用组织跟踪的 ARN,而不是名称)。但是,成员账户中的用户将没有足够的权限删除组织跟踪、启用和关闭日志记录、更改要记录的事件类型,或以任何其他方式更改组织跟踪。有关 AWS Organizations 的更多信息,请参阅 组织 术语和概念。有关创建和使用组织跟踪的更多信息,请参阅为组织创建跟踪

如何管理 CloudTrail?

CloudTrail 控制台

您可以通过 AWS CloudTrail 控制台使用和管理 CloudTrail 服务。此控制台提供了用于执行许多 CloudTrail 任务的用户界面,这些任务包括:

  • 查看您的 AWS 账户的近期事件和事件历史记录。

  • 下载过去 90 天事件的已筛选或完整文件.

  • 创建和编辑 CloudTrail 跟踪。

  • 配置 CloudTrail 跟踪,包括:

    • 选择 Amazon S3 存储桶。

    • 设置前缀。

    • 配置到 CloudWatch Logs 的传输。

    • 使用 AWS KMS 密钥加密。

    • 为日志文件传输启用 Amazon SNS 通知。

从 2019 年 4 月 12 日开始,跟踪只能在其记录事件的 AWS 区域中查看。如果您创建记录所有 AWS 区域中事件的跟踪,则它会显示在所有 AWS 区域的控制台中。如果您创建仅记录单个 AWS 区域中事件的日志,则可以在该 AWS 区域中查看和管理它。

有关 AWS 管理控制台的更多信息,请参阅 AWS 管理控制台

CloudTrail CLI

AWS Command Line Interface 是一个可用于从命令行与 CloudTrail 交互的统一工具。有关更多信息,请参阅 AWS Command Line Interface 用户指南。有关 CloudTrail CLI 命令的完整列表,请参阅可用命令

CloudTrail API

除了控制台和 CLI 之外,您还可以使用 CloudTrail RESTful API 来直接对 CloudTrail 进行编程。有关更多信息,请参见 AWS CloudTrail API Reference

AWS 软件开发工具包

作为使用 CloudTrail API 的替代方案,您可以使用某个 AWS 软件开发工具包。每个软件开发工具包均包含适用于各种编程语言和平台的库和示例代码。软件开发工具包提供了可通过编程方式访问 CloudTrail 的便捷方式。例如,您可以使用开发工具包以加密方式对请求进行签名,管理错误并自动重试请求。有关更多信息,请参阅适用于 Amazon Web Services 的工具页面。

如何控制对 CloudTrail 的访问?

AWS Identity and Access Management 是一项 Web 服务,可让 Amazon Web Services (AWS) 客户管理用户和用户权限。 使用 IAM 为需要访问 AWS CloudTrail 的任何人创建单独的用户。为您自己创建一个 IAM 用户,赋予该 IAM 用户管理权限,并将该 IAM 用户用于您的所有工作。在为访问您的账户的人员创建单独的 IAM 用户时,您可授予每个 IAM 用户一组独特的安全证书。您还可向每个 IAM 用户授予不同的权限。如有必要,可以随时更改或撤消 IAM 用户的权限。有关更多信息,请参阅控制 CloudTrail 的用户权限

您如何记录管理和数据事件?

默认情况下,跟踪将记录 AWS 账户的所有管理事件,但不包含数据事件。您可以选择创建或更新跟踪以记录数据事件。只有与您的跟踪设置匹配的事件才会传送到 Amazon S3 存储桶和 Amazon CloudWatch Events 以及(可选)Amazon CloudWatch Logs 日志组。如果事件与跟踪设置不匹配,则跟踪不会记录事件。有关更多信息,请参阅记录跟踪的数据和管理事件

如何使用 CloudTrail 执行监控?

CloudWatch Logs 和 CloudTrail

Amazon CloudWatch 是一项 Web 服务,可收集并跟踪指标以监控您的 Amazon Web Services (AWS) 资源以及在 AWS 上运行的应用程序。Amazon CloudWatch Logs 是 CloudWatch 的一项专门用来监控日志数据的功能。与 CloudWatch Logs 集成使 CloudTrail 能够将您的 AWS 账户中包含 API 活动的事件发送到 CloudWatch Logs 日志组。发送到 CloudWatch Logs 的 CloudTrail 事件会根据您定义的指标筛选条件触发警报。(可选)您可以配置 CloudWatch 警报来发送通知或基于指标筛选条件提取的日志流事件来更改所监控的资源。通过使用 CloudWatch Logs,还可跟踪 CloudTrail 事件以及从操作系统、应用程序或其他 AWS 服务发送到 CloudWatch Logs 的事件。有关更多信息,请参阅使用 Amazon CloudWatch Logs 监控 CloudTrail 日志文件

CloudTrail 在区域和全球范围如何工作?

跟踪可适用于所有区域或单个区域。最佳实践是创建应用到您工作所在的 AWS 分区中所有区域的跟踪。当您在 CloudTrail 控制台中创建跟踪时,这是默认设置。

注意

启用跟踪表示您创建一个跟踪并开始将 CloudTrail 事件日志文件传送到 Amazon S3 存储桶。在 CloudTrail 控制台中,当您创建跟踪时会自动启用日志记录。

将跟踪应用到所有区域有什么好处?

应用到所有区域的跟踪具有以下好处:

  • 跟踪的配置设置一致地应用到所有区域。

  • 您可以在单个 S3 存储桶中(或者,在一个 CloudWatch Logs 日志组中)接收来自所有区域的 CloudTrail 事件。

  • 从一个位置管理所有区域的跟踪配置。

  • 您将立即从新的区域接收事件。当启动新区域时,CloudTrail 会在新区域中自动为您创建设置与原跟踪相同的跟踪。

  • 您可以在不常用来监控异常活动的区域创建跟踪。

将一个跟踪应用到所有区域时会发生什么情况?

将一个跟踪应用到所有区域时,CloudTrail 将根据您在特定区域创建的跟踪,在您账户中的所有其他区域中创建配置完全相同的跟踪。

这有以下影响:

  • CloudTrail 将所有区域中的账户活动的日志文件都传输到您指定的单个 Amazon S3 存储桶,并且可选择传输到 CloudWatch Logs 日志组。

  • 如果您为跟踪配置了 Amazon SNS 主题,则会将有关所有区域中的日志文件传输的 SNS 通知发送到此单个 SNS 主题。

  • 如果启用了该项,则将在所有区域为该跟踪启用日志文件完整性验证。有关信息,请参阅 验证 CloudTrail 日志文件完整性

每区域多个跟踪

如果您拥有不同但相关的用户组,例如开发人员组、安全人员组和 IT 审计人员组,则可以为每个区域创建多个跟踪。这可使每个组均接收各自的日志文件副本。

CloudTrail 对每个地区最多支持五条跟踪。应用到所有区域的跟踪在每个区域都计一次跟踪计数。

以下示例是具有 5 条跟踪的区域:

  • 您在 美国西部(加利福利亚北部)区域 中创建两条仅适用于此区域的跟踪。

  • 您在 美国西部(加利福利亚北部)区域 创建另外两条适用于所有地区的跟踪。

  • 您在 亚太区域(悉尼) 中创建一条适用于所有地区的跟踪。此跟踪也在 美国西部(加利福利亚北部)区域 中作为一条跟踪。

您可以在 CloudTrail 控制台的 Trails (跟踪) 页面上查看所有区域中的跟踪的列表。有关更多信息,请参阅 更新跟踪。有关 CloudTrail 定价,请参阅 AWS CloudTrail 定价

AWS Security Token Service (AWS STS) 和 CloudTrail

AWS STS 是一个具有全球性终端节点并且也支持区域特定终端节点的服务。终端节点是作为 Web 服务请求入口点的 URL。例如,https://cloudtrail.us-west-2.amazonaws.com 是 AWS CloudTrail 服务的美国西部(俄勒冈)区域性入口点。区域性终端节点可帮助减少应用程序中的延迟。

在使用 AWS STS 特定于区域的终端节点时,该区域中的跟踪仅传输发生在该区域中的 AWS STS 事件。例如,如果您使用终端节点 sts.us-west-2.amazonaws.com,则 us-west-2 中的跟踪仅传输源自 us-west-2 的 AWS STS 事件。有关 AWS STS 区域终端节点的更多信息,请参阅 IAM 用户指南 中的在 AWS 区域中激活和停用 AWS STS

有关 AWS 区域终端节点的完整列表,请参阅 AWS General Reference 中的 AWS 区域和终端节点。有关来自全局 AWS STS 终端节点的事件的详细信息,请参阅关于全球服务事件

关于全球服务事件

对于大多数服务,事件被记录在发生操作的区域。对于诸如 AWS Identity and Access Management (IAM)、AWS STS、Amazon CloudFront 和 Route 53 之类的全球服务,事件将被传输到包括全球服务的任何跟踪中,并且记录为在 美国东部(弗吉尼亚北部)地区 中发生。

要避免接收重复的全球服务事件,请注意:

  • 默认情况下,全球服务事件传输到使用 CloudTrail 控制台创建的跟踪中。事件传输到跟踪的存储桶中。

  • 如果您有多个单区域跟踪,可考虑将跟踪配置为只在其中一个跟踪中传输全球服务事件。有关更多信息,请参阅 启用和禁用记录全球服务事件

  • 如果将跟踪配置从记录所有区域改为只记录单个区域,则会自动为该跟踪关闭全球服务事件日志记录。同样,如果将跟踪配置从记录单个区域改为记录所有区域,则会自动为该跟踪打开全球服务事件日志记录。

    有关更改跟踪的全球服务事件日志记录的更多信息,请参阅 启用和禁用记录全球服务事件

示例:

  1. 您在 CloudTrail 控制台中创建一个跟踪。默认情况下,此跟踪将记录全球服务事件。

  2. 您有多个单区域跟踪。

  3. 您不需要为单区域跟踪包含全球服务。全球服务事件会提交给第一个跟踪。有关更多信息,请参阅使用 AWS Command Line Interface 创建和更新跟踪

注意

在使用 AWS CLI、AWS 开发工具包或 CloudTrail API 创建或更新跟踪时,您可以指定是包括还是排除跟踪的全球服务事件。您不能从 CloudTrail 控制台中配置全球性服务事件日志记录。

CloudTrail 如何与其他 AWS 监控服务相关联?

CloudTrail 将另一个维度添加到已由 AWS 提供的监控功能。这不会改变或替换您可能已在使用的日志记录功能,例如用于 Amazon S3 或 Amazon CloudFront 订阅的那些功能。Amazon CloudWatch 侧重于性能监控和系统运行状况。CloudTrail 侧重于 API 活动。尽管 CloudTrail 不报告系统性能或运行状况,但您可以将 CloudTrail 与 CloudWatch 警报结合使用,从而获得您可能感兴趣的活动的通知。

合作伙伴解决方案

AWS 与日志记录和分析方面的第三方专家协作以提供利用 CloudTrail 输出的解决方案。有关更多信息,请访问 AWS CloudTrail 上的 CloudTrail 详细信息页。