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

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

将跟踪事件复制到事件数据存储

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

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

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

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 存储桶复制跟踪事件。将 DOC-EXAMPLE-BUCKET、myAc countID区域前缀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:::DOC-EXAMPLE-BUCKET" ], "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:::DOC-EXAMPLE-BUCKET/prefix", "arn:aws:s3:::DOC-EXAMPLE-BUCKET/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区域eventDataStoreArn 替换为适合您的配置的值。myAccount Amazon Web Services 账户 ID 是用于 CloudTrail Lake 的 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 存储桶复制跟踪事件。

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

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

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

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

以下示例提供了 KMS 密钥策略,该策略 CloudTrail 允许解密源 S3 存储桶中的数据。roLearnDOC-EXAMPLE-BUCKET、myAc countID、region 和 eventDataStore 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:::DOC-EXAMPLE-BUCKET/*" }, "StringEquals": { "aws:SourceAccount": "myAccountID", "aws:SourceArn": "arn:aws:cloudtrail:region:myAccountID:eventdataStore/eventDataStoreId" } } }