AWS CloudTrail
ユーザーガイド (Version 1.0)

CloudTrail ダイジェストファイルの構造

各ダイジェストファイルには、過去 1 時間の間に Amazon S3 バケットに送られたログファイルの名前、これらのログファイルのハッシュ値、前のダイジェストファイルのデジタル署名が含まれます。現在のダイジェストファイルの署名は、ダイジェストファイルオブジェクトのメタデータプロパティに格納されます。デジタル署名とハッシュは、ログファイルおよびダイジェストファイル自体の整合性を検証するために使用されます。

ダイジェストファイルの場所

ダイジェストファイルは、次の構文で表される Amazon S3 バケットの場所に送られます。

s3://s3-bucket-name/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://s3-bucket-name/optional-prefix/AWSLogs/OU-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 ログの情報が含まれるダイジェストファイルの例です。

{ "awsAccountId": "111122223333", "digestStartTime": "2015-08-17T14:01:31Z", "digestEndTime": "2015-08-17T15:01:31Z", "digestS3Bucket": "S3-bucket-name", "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": "S3-bucket-name", "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": "S3-bucket-name", "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" } ] }

ダイジェストファイルのフィールドの説明

以下では、ダイジェストファイルの各フィールドについて説明します。

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 バケットの場所) です。文字列の最初の 2 つのリージョンは、ダイジェストファイルの配信元のリージョンを示します。最後のリージョン (your-trail-name の後) は、証跡のホームリージョンです。ホームリージョンは、証跡が作成されたリージョンです。マルチリージョンの証跡の場合、このリージョンはダイジェストファイル配信元のリージョンと異なる場合があります。

newestEventTime

ダイジェストに含まれるログファイルのすべてのイベントの中で最新のイベントの UTC 時刻です。

oldestEventTime

ダイジェストに含まれるログファイルのすべてのイベントの中で最も古いイベントの UTC 時刻です。

注記

ダイジェストファイルが遅れて配信された場合、oldestEventTime の値は digestStartTime の値より前になります。

previousDigestS3Bucket

前のダイジェストファイルの配信先であった Amazon S3 バケットです。

previousDigestS3Object

前のダイジェストファイルの Amazon S3 オブジェクトキー (つまり、Amazon S3 バケットの場所) です。

previousDigestHashValue

前のダイジェストファイルの圧縮されていない内容の 16 進エンコードされたハッシュ値です。

previousDigestHashAlgorithm

前のダイジェストファイルのハッシュ計算に使用されたハッシュアルゴリズムの名前です。

publicKeyFingerprint

このダイジェストファイルの署名に使用されたプライベートキーと一致するパブリックキーの 16 進エンコードされたフィンガープリントです。AWS CLI または CloudTrail API を使用して、ダイジェストファイルに対応する時間範囲のパブリックキーを取得できます。返されたパブリックキーのうち、フィンガープリントがこの値と一致するものを使用して、ダイジェストファイルを検証できます。ダイジェストファイルのパブリックキーを取得する方法については、AWS CLI の list-public-keys コマンドまたは CloudTrail の ListPublicKeys API を参照してください。

注記

CloudTrail は、リージョンごとに異なるプライベート/パブリックキーペアを使用します。各ダイジェストファイルは、リージョンに固有のプライベートキーを使用して署名されます。したがって、特定のリージョンからのダイジェストファイルを検証するときは、同じリージョンで対応するパブリックキーを検索する必要があります。

digestSignatureAlgorithm

ダイジェストファイルの署名に使用されるアルゴリズムです。

logFiles.s3Bucket

ログファイルの Amazon S3 バケットの名前です。

logFiles.s3Object

現在のログファイルの Amazon S3 オブジェクトキーです。

logFiles.newestEventTime

ログファイルに含まれる最新のイベントの UTC 時刻です。この時刻は、ログファイル自体のタイムスタンプにも対応しています。

logFiles.oldestEventTime

ログファイルに含まれる最も古いイベントの UTC 時刻です。

logFiles.hashValue

圧縮されていないログファイルの内容の 16 進エンコードされたハッシュ値です。

logFiles.hashAlgorithm

ログファイルのハッシュ計算に使用されたハッシュアルゴリズムです。

開始ダイジェストファイル

ログファイルの整合性の検証が開始されると、開始ダイジェストファイルが生成されます。開始ダイジェストファイルは、ログファイルの整合性の検証が再開されるときにも生成されます (ログファイルの整合性検証をいったん無効にしてから再び有効にすることで、またはログ記録を停止してから検証を有効にしてログ記録を再び開始することで)。開始ダイジェストファイルでは、前のダイジェストファイルに関する以下のフィールドは null になります。

  • previousDigestS3Bucket

  • previousDigestS3Object

  • previousDigestHashValue

  • previousDigestHashAlgorithm

  • previousDigestSignature

"空の" ダイジェストファイル

CloudTrail は、ダイジェストファイルが表す 1 時間の期間中にアカウントで API アクティビティが発生しなかった場合でも、ダイジェストファイルを配信します。これは、ダイジェストファイルによって報告される 1 時間の間にログファイルが配信されなかったことをアサートする必要がある場合に役に立つことがあります。

次の例では、API アクティビティが発生しなかった 1 時間を記録したダイジェストファイルの内容を示します。ダイジェストファイルの内容の最後にある logFiles:[ ] フィールドが空であることに注意してください。

{ "awsAccountId": "111122223333", "digestStartTime": "2015-08-20T17:01:31Z", "digestEndTime": "2015-08-20T18:01:31Z", "digestS3Bucket": "example-bucket-name", "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": "example-bucket-name", "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": [] }

ダイジェストファイルの署名

ダイジェストファイルの署名情報は、Amazon S3 ダイジェストファイルオブジェクトの 2 つのオブジェクトメタデータプロパティにあります。各ダイジェストファイルには、次のメタデータエントリが含まれます。

  • x-amz-meta-signature

    ダイジェストファイルの署名の 16 進エンコードされた値です。以下に、署名の例を示します。

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

    次に示すのは、ダイジェストの署名を生成するために使用されたアルゴリズムの値の例です。

    SHA256withRSA

ダイジェストファイルの連鎖

各ダイジェストファイルに含まれる前のダイジェストファイルへの参照によって作成される "連鎖" により、AWS CLI などの検証ツールはダイジェストファイルが削除された場合にそれを検出できます。また、指定された時間範囲内のダイジェストファイルを、新しいものから順に連続的に検査することもできます。

注記

ログファイルの整合性検証を無効にすると、ダイジェストファイルのチェーンは 1 時間後に切れます。CloudTrail は、ログファイルの整合性検証が無効になっていた期間中に配信されたログファイルに対しては、ダイジェストファイルを作成しません。たとえば、1 月 1 日の正午にログファイルの整合性検証を有効にし、1 月 2 日の正午にそれを無効にした後、1 月 10 日の正午に再び有効にした場合、1 月 2 日正午から 1 月 10 日正午までの間に配信されたログファイルに対しては、ダイジェストファイルは作成されません。CloudTrail のログ記録を停止した場合、または証跡を削除した場合も、同じようになります。

ログ記録を停止すると、または証跡を削除すると、CloudTrail は最終ダイジェストファイルを配信します。このダイジェストファイルには、StopLogging イベントまでのイベントを対象とする残りのすべてのログファイルに関する情報が含まれている場合があります。