

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

# CloudTrail 摘要文件结构
<a name="cloudtrail-log-file-validation-digest-file-structure"></a>

每个摘要文件均包含前一小时提交到您的 Amazon S3 存储桶的日志文件的名称，这些日志文件的哈希值，以及前一日志文件的数字签名。最新摘要文件的签名存储在摘要文件对象的元数据属性中。数字签名和哈希值用于验证日志文件和摘要文件本身的完整性。

## 摘要文件位置
<a name="cloudtrail-log-file-validation-digest-file-location"></a>

摘要文件提交到 Amazon S3 存储桶位置，语法如下。

```
s3://amzn-s3-demo-bucket/optional-prefix/AWSLogs/aws-account-id/CloudTrail-Digest/
    region/digest-end-year/digest-end-month/digest-end-date/
    aws-account-id_CloudTrail-Digest_region_trail-name_region_digest_end_timestamp.json.gz
```

**注意**  
对于组织跟踪记录，存储桶位置还包括组织单位 ID，如下所示：  

```
s3://amzn-s3-demo-bucket/optional-prefix/AWSLogs/O-ID/aws-account-id/CloudTrail-Digest/
    region/digest-end-year/digest-end-month/digest-end-date/
    aws-account-id_CloudTrail-Digest_region_trail-name_region_digest_end_timestamp.json.gz
```

**注意**  
如果 CloudTrail 需要包含由于处理延迟而未在原始摘要中引用的日志文件，则会交付回填摘要文件。回填摘要文件在其文件名中使用`_backfill`后缀，如下所示：  

```
s3://amzn-s3-demo-bucket/optional-prefix/AWSLogs/aws-account-id/CloudTrail-Digest/
    region/digest-end-year/digest-end-month/digest-end-date/
    aws-account-id_CloudTrail-Digest_region_trail-name_region_digest_end_timestamp_backfill.json.gz
```

## 示例摘要文件内容
<a name="cloudtrail-log-file-validation-digest-file-contents"></a>

以下示例摘要文件包含 CloudTrail 日志信息。

```
{
  "awsAccountId": "111122223333",
  "digestStartTime": "2015-08-17T14:01:31Z",
  "digestEndTime": "2015-08-17T15:01:31Z",
  "digestS3Bucket": "amzn-s3-demo-bucket",
  "digestS3Object": "AWSLogs/111122223333/CloudTrail-Digest/us-east-2/2015/08/17/111122223333_CloudTrail-Digest_us-east-2_your-trail-name_us-east-2_20150817T150131Z.json.gz",
  "digestPublicKeyFingerprint": "31e8b5433410dfb61a9dc45cc65b22ff",
  "digestSignatureAlgorithm": "SHA256withRSA",
  "newestEventTime": "2015-08-17T14:52:27Z",
  "oldestEventTime": "2015-08-17T14:42:27Z",
  "previousDigestS3Bucket": "amzn-s3-demo-bucket",
  "previousDigestS3Object": "AWSLogs/111122223333/CloudTrail-Digest/us-east-2/2015/08/17/111122223333_CloudTrail-Digest_us-east-2_your-trail-name_us-east-2_20150817T140131Z.json.gz",
  "previousDigestHashValue": "97fb791cf91ffc440d274f8190dbdd9aa09c34432aba82739df18b6d3c13df2d",
  "previousDigestHashAlgorithm": "SHA-256",
  "previousDigestSignature": "50887ccffad4c002b97caa37cc9dc626e3c680207d41d27fa5835458e066e0d3652fc4dfc30937e4d5f4cc7f796e7a258fb50a43ac427f2237f6e505d4efaf373d156e15e3b68dea9f58111d395b62628d6bd367a9024d2183b5c5f6e19466d3a996b92df705bc997b8a0e13430f241d733cf95df4e41bb6c304c3f58363043572ea57a27085639ce187e679c0d81c7519b1184fa77fb7ab0b0e40a32dace6e1eefc3995c5ae182da49b62b26398cebb52a2201a6387b75b89c83e5570bcb9bba6c34a80f2f00a1c6ebe07d1ff149eccd812dc805bb3eeff6657db32a6cb48d2d096404eb76181877bc6ebb8cd0b23f823200155b2fd8848d428e46e8456328a",
  "logFiles": [
    {
      "s3Bucket": "amzn-s3-demo-bucket",
      "s3Object": "AWSLogs/111122223333/CloudTrail/us-east-2/2015/08/17/111122223333_CloudTrail_us-east-2_20150817T1445Z_9nYN7gp2eWAJHIfT.json.gz",
      "hashValue": "9bb6196fc6b84d6f075a56548feca262bd99ba3c2de41b618e5b6e22c1fc71f6",
      "hashAlgorithm": "SHA-256",
      "newestEventTime": "2015-08-17T14:52:27Z",
      "oldestEventTime": "2015-08-17T14:42:27Z"
    }
  ]
}
```

## 摘要文件字段描述
<a name="cloudtrail-log-file-validation-digest-file-descriptions"></a>

下面是摘要文件中每个字段的描述：

`awsAccountId`  
已发送摘要文件的 AWS 账户 ID。

`digestStartTime`  
摘要文件所涵盖的起始 UTC 时间范围，以日志文件交付的时间为参考。 CloudTrail这意味着，如果时间范围是 [Ta, Tb]，则摘要包含在 Ta 与 Tb 之间提交给客户的所有日志文件。

`digestEndTime`  
摘要文件所涵盖的 UTC 结束时间范围，以日志文件交付的时间为参考。 CloudTrail这意味着，如果时间范围是 [Ta, Tb]，则摘要包含在 Ta 与 Tb 之间提交给客户的所有日志文件。

`digestS3Bucket`  
已将最新摘要文件传送到的 Amazon S3 存储桶的名称。

`digestS3Object`  
最新摘要文件的 Amazon S3 对象密钥（即，Amazon S3 存储桶位置）。字符串中的前两个区域显示摘要文件是从哪个区域提交的。最后的区域（`your-trail-name` 之后）是跟踪的主区域。主区域是创建跟踪的区域。如果是多区域跟踪，主区域可能不是提交摘要文件的区域。

`newestEventTime`  
摘要的日志文件中的所有事件中最近事件的 UTC 时间。

`oldestEventTime`  
摘要的日志文件中的所有事件中最早事件的 UTC 时间。  
如果摘要文件延迟提交，则 `oldestEventTime` 的值将早于 `digestStartTime` 的值。

`previousDigestS3Bucket`  
上一个摘要文件传送到的 Amazon S3 存储桶。

`previousDigestS3Object`  
上一个摘要文件的 Amazon S3 对象密钥（即，Amazon S3 存储桶位置）。

`previousDigestHashValue`  
前一摘要文件的未压缩内容的十六进制编码哈希值。

`previousDigestHashAlgorithm`  
用于对前一摘要文件进行哈希处理的哈希算法的名称。

`publicKeyFingerprint`  
与用于对摘要文件进行签名的私有密钥相匹配的公有密钥的十六进制编码指纹。您可以使用 AWS CLI 或 CloudTrail API 检索与摘要文件对应的时间范围内的公钥。对于返回的公有密钥，其指纹与此值匹配的公有密钥可用于验证摘要文件。有关检索摘要文件公钥的信息，请参阅 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/cloudtrail/list-public-keys.html](https://docs.aws.amazon.com/cli/latest/reference/cloudtrail/list-public-keys.html)命令或 CloudTrail [https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_ListPublicKeys.html](https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_ListPublicKeys.html)API。  
CloudTrail 每个区域使用不同的 private/public 密钥对。每个摘要文件都使用对其区域唯一的私钥进行签名。因此，当您验证来自特定区域的摘要文件时，必须从同一区域检索其相应公钥。

`digestSignatureAlgorithm`  
用于对摘要文件进行签名的算法。

`logFiles.s3Bucket`  
日志文件的 Amazon S3 存储桶的名称。

`logFiles.s3Object`  
最新日志文件的 Amazon S3 对象密钥。

`logFiles.newestEventTime`  
日志文件中最近事件的 UTC 时间。此时间还与日志文件本身的时间戳相对应。

`logFiles.oldestEventTime`  
日志文件中最早事件的 UTC 时间。

`logFiles.hashValue`  
未压缩日志文件内容的十六进制编码哈希值。

`logFiles.hashAlgorithm`  
用于对日志文件进行哈希处理的哈希算法。

## 启动摘要文件
<a name="cloudtrail-log-file-validation-digest-file-starting"></a>

启动日志文件完整性验证时，将生成一个启动摘要文件。重新启动日志文件完整性验证（通过禁用后重新启用日志文件完整性验证，或者通过停止记录然后在启用验证时重新启动记录）时，也将生成一个启动摘要文件。在启动摘要文件中，与前一摘要文件相关的以下字段将为空：
+ `previousDigestS3Bucket`
+ `previousDigestS3Object`
+ `previousDigestHashValue`
+ `previousDigestHashAlgorithm`
+ `previousDigestSignature`

## “空”摘要文件
<a name="cloudtrail-log-file-validation-digest-file-empty"></a>

CloudTrail 即使在摘要文件所代表的一小时内您的账户中没有 API 活动，也会提供摘要文件。如果需要确定在摘要文件报告的小时内未提交日志文件，这非常有用。

下面的示例说明当未出现 API 活动时记录了 1 小时的摘要文件的内容。注意，摘要文件内容最后的 `logFiles:[ ]` 字段为空。

```
{
  "awsAccountId": "111122223333",
  "digestStartTime": "2015-08-20T17:01:31Z",
  "digestEndTime": "2015-08-20T18:01:31Z",
  "digestS3Bucket": "amzn-s3-demo-bucket",
  "digestS3Object": "AWSLogs/111122223333/CloudTrail-Digest/us-east-2/2015/08/20/111122223333_CloudTrail-Digest_us-east-2_example-trail-name_us-east-2_20150820T180131Z.json.gz",
  "digestPublicKeyFingerprint": "31e8b5433410dfb61a9dc45cc65b22ff",
  "digestSignatureAlgorithm": "SHA256withRSA",
  "newestEventTime": null,
  "oldestEventTime": null,
  "previousDigestS3Bucket": "amzn-s3-demo-bucket",
  "previousDigestS3Object": "AWSLogs/111122223333/CloudTrail-Digest/us-east-2/2015/08/20/111122223333_CloudTrail-Digest_us-east-2_example-trail-name_us-east-2_20150820T170131Z.json.gz",
  "previousDigestHashValue": "ed96c4bac9eaa8fe9716ca0e515da51938be651b1db31d781956416a9d05cdfa",
  "previousDigestHashAlgorithm": "SHA-256",
  "previousDigestSignature": "82705525fb0fe7f919f9434e5b7138cb41793c776c7414f3520c0242902daa8cc8286b29263d2627f2f259471c745b1654af76e2073264b2510fd45236b3aea4d80c0e8e6455223d7bd54ff80af0edf22a5f14fa856626daec919f0591479aa4f213787ba1e1076328dcf8ff624e03a977fa5612dcf58594c590fd8c1c5b48bddf43fc84ecc00b41bedd0ff7f293c3e2de8dcdc78f98b03e17577f5822ba842399d69eb79921c0429773509520e08c8b518702d987dfbb3a4e5d8c5f17673ce1f989dfff82d4becf24e452f20d3bcac94ad50131f93e57f10155536acb54c60efbe9d57228c2b930bc6082b2318e3ccd36834a8e835b8d112dbf32145f445c11",
  "logFiles": []
}
```

## 摘要文件的签名
<a name="cloudtrail-log-file-validation-digest-file-signature"></a>

摘要文件的签名信息位于 Amazon S3 摘要文件对象的两个对象元数据属性中。每个摘要文件都有下面的元数据项：
+ `x-amz-meta-signature`

  摘要文件签名的十六进制编码值。下面是示例签名：

  ```
  3be472336fa2989ef34de1b3c1bf851f59eb030eaff3e2fb6600a082a23f4c6a82966565b994f9de4a5989d053d9d15d20fc5c43e66358652d93326550a4acc5c5f541bb52e9b455897ab723bd7cbabfe963a406a41d600f3658f7a3135e5ed9fcae7b79bb5857d1e5eb78fcce8595ce0ade2f3ad1d9f2d62be7bc4660d83166ce24586489b7da9ee9883eaf0b9efabb5dd3cbba565cc4aab5c9c46c9fa7e9cda310afcc5e8adcd9e48d0597ec5f8174a52c3bebb3e845eeb1d18904fbf4cc14cd117080098e10022ddf55e017a9431446acad8560de0ba1e477af9f8a3048bc6196350adad0cc0cb4ab99b5e7c9944437a3c674a038009220684ced7be07b4f
  28f1cc237f372264a51b611c01da429565def703539f4e71009051769469231bc22232fa260df02740047af532229885ea2b0e95ecd353326b7104941e0cbddb076a391f1fcf2923c19565f4841770a78723451aeb732ff1b6162dc40e601fc6720bc5325987942ebd817783b322f0ac77698523bf742fdea7aa44f4911b3101221b7e1233387f16a52077610498f4a1254211258e37da0fb4cb207aef593b4c1baa13674e85acc52046b3adb889e63331a66abac5de7e42ffdd6952987c31ae871650e130bd2e63bfe145b22bbd39ea192210f6df64d49b888a321e02d3fc4cf126accae30d2857ccd6b2286a7c9feba6c35c44161b24147d645e6ca26844ba
  05d3ffcb5d2dd5dc28f8bb5b7993938e8a5f912a82b448a367eccb2ec0f198ba71e23eb0b97278cf65f3c8d1e652c6de33a22ca8428821ffc95bf8b726ba9f37cfbc20c54dc5bd6159bdea1c4d951b68cb8e0528852c55bb0c5e499ea60560f7c2bb3af7f694407da863a2594f7a2f2838cb09254afbaf8003587746e719a0437f85eeffae534f283f3837eb939a9bccc3c71573500661245891051231b580ac92d9e0e68c6f47ad38975f493e2c40e7f303353c4adc7d563ef1e875977afac2e085f0c824045d998c9543d8a3293ad3c063b7a109d0bfd84b0b1e3f72c4f057e744e6a2cf9cc97727b08584f44bfa47799c5072b60f0b619aea88a17de585e9
  ```
+ `x-amz-meta-signature-algorithm`

  下面是用于生成摘要签名的算法示例值：

  `SHA256withRSA`
+ `x-amz-meta-backfill-generation-timestamp`

  生成回填摘要时的 UTC 时间戳。此元数据属性仅存在于回填摘要文件中，用于识别用于签名验证的正确公钥。以下是时间戳示例：

  `2025-05-20T00:00:00.000Z`

## 摘要文件链
<a name="cloudtrail-log-file-validation-digest-file-chaining"></a>

每个摘要文件都包含对其先前摘要文件的引用，这一事实实现了 “链接”，允许像这样的验证工具检测摘要文件是否已被删除。 AWS CLI 通过它，在指定时间范围内的摘要文件可以从最近开始往前连续检查。

**注意**  
禁用日志文件完整性验证后，摘要文件链将在一小时后中断。 CloudTrail 不会为在禁用日志文件完整性验证期间传送的日志文件创建摘要文件。例如，如果您在 1 月 1 日中午启用日志文件完整性验证，在 1 月 2 日中午禁用它，在 1 月 10 日中午再次启用它，则不会为从 1 月 2 日中午到 1 月 10 日中午之间提交的日志文件创建摘要文件。每当您停止 CloudTrail 记录或删除跟踪时，这同样适用。

如果您的跟踪的 [S3 存储桶策略](create-s3-bucket-policy-for-cloudtrail.md)配置错误或服务 CloudTrail 出现意外中断，则可能无法收到全部或部分摘要文件。要确认您的跟踪是否有任何摘要传输错误，请运行 [https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_GetTrailStatus.html](https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_GetTrailStatus.html) 命令并检查 `LatestDigestDeliveryError` 参数是否有错误。在交付问题得到解决（例如，通过修复存储桶策略）后， CloudTrail 将尝试重新传送任何丢失的摘要文件。在重新传输期间，摘要文件可能会乱序传输，因此链条可能会暂时显得中断。

如果日志记录停止或跟踪被删除， CloudTrail 将提供最终摘要文件。此摘要文件包含有关所有剩余日志文件的信息，所涵盖的事件直至（包含）`StopLogging` 事件。