将追踪事件复制到 CloudTrail湖中 - Amazon CloudTrail
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

将追踪事件复制到 CloudTrail湖中

您可以将现有跟踪事件复制到 CloudTrail Lake 事件数据存储中,以创建记录到跟踪的事件的 point-in-time快照。复制跟踪事件不会干扰跟踪记录事件的功能,也不会以任何方式修改跟踪。

您可以将跟踪事件复制到为事件配置的现有 CloudTrail 事件数据存储中,也可以创建新的 CloudTrail 事件数据存储并选择复制跟踪事件选项作为事件数据存储创建的一部分。有关将跟踪事件复制到现有事件数据存储的更多信息,请参阅 使用 CloudTrail 控制台将跟踪事件复制到现有的事件数据存储中。有关创建新的事件数据存储的更多信息,请参阅 为事件创建事件数据存 CloudTrail储

将跟踪事件复制到 CloudTrail Lake 事件数据存储允许您对复制的事件运行查询。 CloudTrail 与事件历史记录或运行LookupEvents中的简单键和值查找相比,Lake 查询提供了更深入、更可自定义的事件视图。有关 CloudTrail Lake 的更多信息,请参阅与 L Amazon CloudTrail ake 合作

如果您要将跟踪事件复制到组织事件数据存储,则必须使用该组织的管理账户。您不能使用组织的委托管理员账户复制跟踪事件。

CloudTrail 湖泊事件数据存储会产生费用。创建事件数据存储时,您可以选择要用于事件数据存储的定价选项。定价选项决定了摄取和存储事件的成本,以及事件数据存储的默认和最长保留期。有关 CloudTrail 定价和管理 Lake 成本的信息,请参阅Amazon CloudTrail 定价管理 CloudTrail 湖泊成本

将跟踪事件复制到 CloudTrail Lake 事件数据存储时,会根据事件数据存储提取的未压缩数据量产生费用。

将跟踪事件复制到 CloudTrail Lake 时, CloudTrail 解压缩以 gzip(压缩)格式存储的日志,然后将日志中包含的事件复制到您的事件数据存储中。未压缩数据的大小可能大于 S3 的实际存储大小。要对未压缩数据的大小进行总体估计,可以将 S3 存储桶中日志的大小乘以 10。

您可以通过为复制的事件指定更窄的时间范围来降低成本。如果您计划仅使用事件数据存储来查询复制的事件,则可以关闭事件摄取,以免对将来的事件产生费用。有关更多信息,请参阅 Amazon CloudTrail 定价管理 CloudTrail 湖泊成本

SCENARIOS(场景)

下表描述了复制跟踪事件的一些常见场景,以及如何使用控制台完成每个场景。

场景 如何在控制台中完成此操作?

无需摄取新事件即可分析和查询 CloudTrail Lake 中的历史轨迹事件

在创建事件数据存储时,创建新的事件数据存储并选择复制跟踪事件选项。创建事件数据存储时,请取消选择摄取事件(程序的步骤 15),以确保事件数据存储仅包含跟踪的历史事件,不包含未来事件。

用 CloudTrail Lake 事件数据存储替换现有跟踪

使用与您的跟踪相同的事件选择器创建事件数据存储,以确保事件数据存储与跟踪具有相同的覆盖范围。

为避免源跟踪和目标事件数据存储之间存在重复事件,请为复制的事件选择一个早于事件数据存储创建时间的时间范围。

创建事件存储后,您可以关闭跟踪的日志记录,避免产生额外费用。

复制跟踪事件的注意事项

复制跟踪事件时,请将以下因素考虑在内。

  • 复制跟踪事件时, CloudTrail 使用 S3 GetObjectAPI 操作检索源 S3 存储桶中的跟踪事件。有些 S3 归档存储类,例如 S3 Glacier Flexible Retrieval、S3 Glacier Deep Archive、S3 Outposts 和 S3 Intelligent-Tiering Deep Archive 层,无法使用 GetObject 来访问。要复制存储在这些归档存储类中的跟踪事件,必须先使用 S3 RestoreObject 操作还原副本。有关还原已归档的对象的信息,请参阅《Amazon S3 用户指南》中的恢复已归档的对象

  • 将跟踪事件复制到事件数据存储时, CloudTrail 无论目标事件数据存储的事件类型、高级事件选择器或 Amazon Web Services 区域的配置如何,都会复制所有跟踪事件。

  • 在将跟踪事件复制到现有的事件数据存储之前,请确保根据您的应用场景适当配置了事件数据存储的定价选项和保留期。

    • 定价选项:定价选项决定了摄取和存储事件的成本。有关定价选项的更多信息,请参阅 Amazon CloudTrail 定价事件数据存储定价选项

    • 保留期:保留期限决定事件数据在事件数据存储中保存多长时间。 CloudTrail 仅复制在事件数据存储保留期eventTime内的跟踪事件。要确定适当的保留期,请计算要复制的最早事件(以天为单位)和要在事件数据存储中保留这些事件的天数(保留期 = oldest-event-in-days+ number-days-to-retain)的总和。例如,如果您要复制的最早事件已有 45 天,并且您想将事件在事件数据存储中再保留 45 天,则可以将保留期设置为 90 天。

  • 如果您要将跟踪事件复制到事件数据存储中进行调查,并且不想摄取任何未来事件,则可以停止对事件数据存储的摄取。创建事件数据存储时,请取消选择摄取事件选项(程序的步骤 15),以确保事件数据存储仅包含跟踪的历史事件,不包含未来事件。

  • 在复制跟踪事件之前,请禁用任何附加到源 S3 存储桶的访问控制列表(ACL),并更新目标事件数据存储的 S3 存储桶策略。有关更新 S3 存储桶策略的更多信息,请参阅 复制跟踪事件所用的 Amazon S3 存储桶策略。有关禁用 ACL 的更多信息,请参阅为您的存储桶控制对象所有权和禁用 ACL

  • CloudTrail 仅复制源 S3 存储桶中的 Gzip 压缩日志文件中的跟踪事件。 CloudTrail 不会从未压缩的日志文件或使用 Gzip 以外的格式压缩的日志文件中复制跟踪事件。

  • 为避免源跟踪和目标事件数据存储之间存在重复事件,请为复制的事件选择一个早于事件数据存储创建时间的时间范围。

  • 默认情况下, CloudTrail 仅复制 S3 存储桶CloudTrail前缀中包含 CloudTrail 的事件和CloudTrail前缀中的前缀,而不检查其他 Amazon 服务的前缀。如果要复制其他前缀中包含 CloudTrail 的事件,则必须在复制跟踪事件时选择前缀。

  • 要将跟踪事件复制到组织事件数据存储,必须使用该组织的管理账户。您不能使用委托管理员账户将跟踪事件复制到组织事件数据存储。

复制跟踪事件所需的权限

在复制跟踪事件之前,请确保您拥有 IAM 角色的所有必需权限。如果您选择现有 IAM 角色来复制跟踪事件,则只需要更新 IAM 角色权限。如果您选择创建新的 IAM 角色,请为该角色 CloudTrail 提供所有必要的权限。

如果源 S3 存储桶使用 KMS 密钥进行数据加密,请确保 KMS 密钥策略 CloudTrail 允许解密存储桶中的数据。如果源 S3 存储桶使用多个 KMS 密钥,则必须更新每个密钥的策略 CloudTrail 以允许解密存储桶中的数据。

复制跟踪事件所需的 IAM 权限

复制跟踪事件时,您可以选择创建新的 IAM 角色,也可以使用现有 IAM 角色。当您选择新的 IAM 角色时, CloudTrail 会创建一个具有所需权限的 IAM 角色,您无需采取任何进一步的操作。

如果您选择现有角色,请确保 IAM 角色的策略 CloudTrail 允许从源 S3 存储桶复制跟踪事件。此部分提供所需 IAM 角色权限和信任策略的示例。

以下示例提供了权限策略,该策略 CloudTrail 允许从源 S3 存储桶复制跟踪事件。将 myBucketNamemyAccountID区域前缀eventDataStoreID 替换为适合您的配置的值。myAccountID 是用于 CloudTrail Lake 的 Amazon 账户 ID,它可能与 S3 存储桶的 Amazon 账户 ID 不同。

key-regionkeyAccountIDkeyID 替换为用于加密源 S3 存储桶的 KMS 密钥的值。如果源 S3 存储桶未使用 KMS 密钥进行加密,则可省略 AWSCloudTrailImportKeyAccess 语句。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSCloudTrailImportBucketAccess", "Effect": "Allow", "Action": ["s3:ListBucket", "s3:GetBucketAcl"], "Resource": [ "arn:aws:s3:::myBucketName" ], "Condition": { "StringEquals": { "aws:SourceAccount": "myAccountID", "aws:SourceArn": "arn:aws:cloudtrail:region:myAccountID:eventdataStore/eventDataStoreId" } } }, { "Sid": "AWSCloudTrailImportObjectAccess", "Effect": "Allow", "Action": ["s3:GetObject"], "Resource": [ "arn:aws:s3:::myBucketName/prefix", "arn:aws:s3:::myBucketName/prefix/*" ], "Condition": { "StringEquals": { "aws:SourceAccount": "myAccountID", "aws:SourceArn": "arn:aws:cloudtrail:region:myAccountID:eventdataStore/eventDataStoreId" } } }, { "Sid": "AWSCloudTrailImportKeyAccess", "Effect": "Allow", "Action": ["kms:GenerateDataKey","kms:Decrypt"], "Resource": [ "arn:aws:kms:key-region:keyAccountID:key/keyID" ] } ] }

以下示例提供了 IAM 信任策略,该策略 CloudTrail 允许代入 IAM 角色从源 S3 存储桶复制跟踪事件。将 myAccountID地区eventDataStoreID 替换为适合您的配置的值。myAccountID 是用于 CloudTrail Lake 的 Amazon 账户 ID,它可能与 S3 存储桶的 Amazon 账户 ID 不同。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "myAccountID", "aws:SourceArn": "arn:aws:cloudtrail:region:myAccountID:eventdataStore/eventDataStoreId" } } } ] }

复制跟踪事件所用的 Amazon S3 存储桶策略

默认情况下,Simple Storage Service(Amazon S3)存储桶和对象都是私有的。仅资源所有者(创建存储桶的 Amazon 账户)能够访问存储桶及其包含的对象。资源所有者可以通过编写访问策略来向其他资源和用户授予访问权。

在复制跟踪事件之前,必须更新 S3 存储桶策略 CloudTrail 以允许从存储桶复制跟踪事件。

您可以在 S3 存储桶策略中添加以下语句以授予这些权限。将 roLearn 和,myBucketName替换为适合您的配置的值。

{ "Sid": "AWSCloudTrailImportBucketAccess", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketAcl", "s3:GetObject" ], "Principal": { "AWS": "roleArn" }, "Resource": [ "arn:aws:s3:::myBucketName", "arn:aws:s3:::myBucketName/*" ] },

用于解密源 S3 存储桶中数据的 KMS 密钥政策

如果源 S3 存储桶使用 KMS 密钥进行数据加密,请确保 KMS 密钥策略 CloudTrail 提供从启用了 SSE-KMS 加密的 S3 存储桶复制跟踪事件所需的kms:Decryptkms:GenerateDataKey权限。如果源 S3 存储桶使用多个 KMS 密钥,则必须更新每个密钥的策略。更新 KMS 密钥策略 CloudTrail 允许解密源 S3 存储桶中的数据,运行验证检查以确保事件符合 CloudTrail标准,并将事件复制到 CloudTrail Lake 事件数据存储中。

以下示例提供了 KMS 密钥策略,该策略 CloudTrail 允许解密源 S3 存储桶中的数据。将 roLearnmyBucketNamemyAccount eventDataStoreID、regi on 和 Id 替换为适合您的配置的值。myAccountID 是用于 CloudTrail Lake 的 Amazon 账户 ID,它可能与 S3 存储桶的 Amazon 账户 ID 不同。

{ "Sid": "AWSCloudTrailImportDecrypt", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Principal": { "AWS": "roleArn" }, "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::myBucketName/*" }, "StringEquals": { "aws:SourceAccount": "myAccountID", "aws:SourceArn": "arn:aws:cloudtrail:region:myAccountID:eventdataStore/eventDataStoreId" } } }

使用 CloudTrail 控制台将跟踪事件复制到现有的事件数据存储中

按照以下程序将跟踪事件复制到事件数据存储中。有关如何创建新的事件数据存储的信息,请参阅 为事件创建事件数据存 CloudTrail储

注意

在将跟踪事件复制到现有的事件数据存储之前,请确保根据您的应用场景适当配置了事件数据存储的定价选项和保留期。

  • 定价选项:定价选项决定了摄取和存储事件的成本。有关定价选项的更多信息,请参阅 Amazon CloudTrail 定价事件数据存储定价选项

  • 保留期:保留期限决定事件数据在事件数据存储中保存多长时间。 CloudTrail 仅复制在事件数据存储保留期eventTime内的跟踪事件。要确定适当的保留期,请计算要复制的最早事件(以天为单位)和要在事件数据存储中保留这些事件的天数(保留期 = oldest-event-in-days+ number-days-to-retain)的总和。例如,如果您要复制的最早事件已有 45 天,并且您想将事件在事件数据存储中再保留 45 天,则可以将保留期设置为 90 天。

要将跟踪事件复制到事件数据存储
  1. 登录 Amazon Web Services Management Console 并打开 CloudTrail 控制台,网址为 https://console.aws.amazon.com/cloudtrail/

  2. 在 CloudTrail 控制台的左侧导航窗格中选择 T rail s。

  3. Trails(跟踪)页面上,选择跟踪,然后选择 Copy events to Lake(将事件复制到 Lake)。如果跟踪的源 S3 存储桶使用 KMS 密钥进行数据加密,请确保 KMS 密钥策略 CloudTrail 允许解密存储桶中的数据。如果源 S3 存储桶使用多个 KMS 密钥,则必须更新每个密钥的策略 CloudTrail 以允许解密存储桶中的数据。有关更新 KMS 密钥政策的更多信息,请参阅 用于解密源 S3 存储桶中数据的 KMS 密钥政策

  4. (可选)默认情况下, CloudTrail 仅复制 S3 存储桶CloudTrail前缀中包含 CloudTrail 的事件和CloudTrail前缀中的事件,而不检查其他 Amazon 服务的前缀。如果要复制其他前缀中包含 CloudTrail 的事件,请选择输入 S3 URI,然后选择浏览 S3 浏览到该前缀。

    S3 存储桶策略必须授予对复制跟踪事件的 CloudTrail 访问权限。有关更新 S3 存储桶策略的更多信息,请参阅 复制跟踪事件所用的 Amazon S3 存储桶策略

  5. 在 “指定事件的时间范围” 中,选择复制事件的时间范围。 CloudTrail 在尝试复制跟踪事件之前,请检查前缀和日志文件名以验证该名称是否包含所选开始日期和结束日期之间的日期。您可以选择 Relative range(相对范围)或者 Absolute range(绝对范围)。为避免源跟踪和目标事件数据存储之间存在重复事件,请选择一个早于事件数据存储创建时间的时间范围。

    注意

    CloudTrail 仅复制在事件数据存储保留期eventTime内的跟踪事件。例如,如果事件数据存储的保留期为 90 天,则 CloudTrail 不会复制任何eventTime超过 90 天的跟踪事件。

    • 如果选择相对范围,则可以选择复制过去 6 个月、1 年、2 年、7 年或自定义范围内记录的事件。 CloudTrail 复制选定时间段内记录的事件。

    • 如果选择 “绝对范围”,则可以选择特定的开始和结束日期。 CloudTrail 复制在所选开始日期和结束日期之间发生的事件。

  6. 对于 Delivery location(送达位置),请从下拉列表中选择目标事件数据存储。

  7. 对于 Permissions(权限),请从以下 IAM 角色选项中进行选择。如果您选择现有的 IAM 角色,请验证 IAM 角色策略是否提供了必要的权限。有关更新 IAM 角色权限的更多信息,请参阅 复制跟踪事件所需的 IAM 权限

    • 选择 Create a new role (recommended)(创建新角色(推荐))以创建新的 IAM 角色。对于 Enter IAM role name(输入 IAM 角色名称),输入角色的名称。 CloudTrail 会自动为这个新角色创建必要的权限。

    • 选择使用自定义 IAM 角色 ARN 以使用未列出的自定义 IAM 角色。对于 Enter IAM role ARN(输入 IAM 角色 ARN),输入 IAM ARN。

    • 从下拉列表中选择现有的 IAM 角色。

  8. 选择 Copy events(复制事件)。

  9. 系统将提示您确认复制。如果您已准备好确认,请选择 Copy trail events to Lake(将跟踪事件复制到 Lake),然后选择 Copy events(复制事件)。

  10. Copy details(复制详情)页面中,您可以查看复制状态并检查是否复制失败。跟踪事件复制完成后,如果复制未出错,则 Copy status(复制状态)将设置为 Completed(已完成),否则如果出错了,则设置为 Failed(失败)。

    注意

    事件复制详细信息页面上显示的详细信息不是实时的。Prefixes copied(已复制的前缀)等详细信息的实际值可能高于页面上显示的值。 CloudTrail 在事件副本的过程中逐步更新详细信息。

  11. 如果 Copy status(复制状态)为 Failed(失败),则要先修复 Copy failures(复制失败)中显示的所有错误,然后选择 Retry copy(重试复制)。当您重试复制时,会在出现故障的位置 CloudTrail 恢复副本。

有关查看跟踪事件复制详细信息的更多信息,请参阅 事件复制详细信息