を使用した CloudTrail ログファイルの整合性の検証 AWS CLI - AWS CloudTrail

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

を使用した CloudTrail ログファイルの整合性の検証 AWS CLI

を使用してログを検証するには AWS Command Line Interface、 コマンドを使用します CloudTrail validate-logs。このコマンドは、Amazon S3 バケットに配信されたダイジェストファイルを使用して、検証を実行します。ダイジェストファイルの詳細については、「CloudTrail ダイジェストファイル構造」を参照してください。

AWS CLI では、次のタイプの変更を検出できます。

  • CloudTrail ログファイルの変更または削除

  • CloudTrail ダイジェストファイルの変更または削除

  • 上記の両方の変更または削除

注記

は、ダイジェストファイルによって参照されるログファイルのみ AWS CLI を検証します。詳細については、「特定のファイルが によって配信されたかどうかの確認 CloudTrail」を参照してください。

前提条件

とのログファイルの整合性を検証するには AWS CLI、次の条件を満たす必要があります。

  • へのオンライン接続が必要です AWS。

  • ダイジェストファイルとログファイルを含む Amazon S3 バケットへの読み取りアクセスが必要です。

  • ダイジェストファイルとログファイルは、 が CloudTrail 配信した元の Amazon S3 の場所から移動しないでください。

注記

ローカルディスクにダウンロードしたログファイルは、 AWS CLIで検証することはできません。検証のために独自のツールを作成する際のガイダンスについては、「 CloudTrail ログファイルの整合性検証のカスタム実装」を参照してください。

validate-logs

構文

次に、validate-logs の構文を示します。オプションパラメータは角括弧で示されます。

aws cloudtrail validate-logs --trail-arn <trailARN> --start-time <start-time> [--end-time <end-time>] [--s3-bucket <DOC-EXAMPLE-BUCKET>] [--s3-prefix <prefix>] [--account-id <account-id>] [--verbose]

注記

validate-logs コマンドはリージョン固有です。特定の のログを検証するには、--regionグローバルオプションを指定する必要があります AWS リージョン。

オプション

validate-logs のコマンドラインオプションは、次のとおりです。--trail-arn--start-time オプションは必須です。この --account-id オプションは、組織の証跡に追加で必要です。

--start-time

指定された UTC タイムスタンプ値またはその後に配信されるログファイルを検証するように指定します。例えば、2015-01-08T05:21:42Z などです。

--end-time

必要に応じて、指定された UTC タイムスタンプ値、またはその前に配信されるログファイルを検証するように指定します。デフォルト値は、現在の UTC 時間 (Date.now()) です。例えば、2015-01-08T12:31:41Z などです。

注記

指定された時間範囲では、validate-logs コマンドは、対応するダイジェストファイルで参照されるログファイルのみをチェックします。Amazon S3 バケットの他のログファイルは、チェックされません。詳細については、「特定のファイルが によって配信されたかどうかの確認 CloudTrail 」を参照してください。

--s3-bucket

必要に応じて、ダイジェストファイルが保存される Amazon S3 バケットを指定します。バケット名が指定されていない場合、 は を呼び出してバケット名 AWS CLI を取得しますDescribeTrails()

--s3-prefix

必要に応じて、ダイジェストファイルが保存される Amazon S3 プレフィックスを指定します。指定しない場合、 AWS CLI は を呼び出して取得しますDescribeTrails()

注記

現在のプレフィックスが、指定した時間範囲内で使用されていたプレフィックスと異なる場合にのみ、このオプションを使用してください。

--account-id

オプションで、ログを検証するためのアカウントを指定します。このパラメータは、組織内の特定のアカウントのログを検証するための組織証跡に必要です。

--trail-arn

検証する証跡の Amazon リソースネーム (ARN) を指定します。証跡の ARN の形式を次に示します。

arn:aws:cloudtrail:us-east-2:111111111111:trail/MyTrailName
注記

証跡の証跡 ARN を取得するには、describe-trails を実行する前に validate-logs コマンドを使用することができます。

指定した時間範囲内で複数のバケットにログファイルが配信され、そのバケットのうち 1 つのみのログファイルに検証を限定する場合、証跡の ARN に加えてバケット名とプレフィックスを指定することができます。

--verbose

必要に応じて、指定された時間範囲内のすべてのログまたはダイジェストファイルの検証情報を出力します。出力は、ファイルが変更されていないか、変更または削除されたかどうかを示します。非詳細モード (デフォルト) では、検証に失敗した場合にのみ情報が返されます。

次の例では、現在の証跡に設定された Amazon S3 バケットを使用し、詳細な出力を指定して、指定された開始時刻から現在までのログファイルを検証します。

aws cloudtrail validate-logs --start-time 2015-08-27T00:00:00Z --end-time 2015-08-28T00:00:00Z --trail-arn arn:aws:cloudtrail:us-east-2:111111111111:trail/my-trail-name --verbose

validate-logs の働き

validate-logs コマンドは、指定された時間範囲で最新のダイジェストファイルを検証することによって開始します。まず、ダイジェストファイルが属している場所からダウンロードされたことを検証します。つまり、CLI が、S3 の場所 p1 からダイジェストファイル df1 をダウンロードすると、validate-logs は、p1 == df1.digestS3Bucket + '/' + df1.digestS3Object を確認します。

ダイジェストファイルの署名が有効である場合、ダイジェストファイルで参照されている各ログのハッシュ値をチェックします。次に、このコマンドは時間内に戻り、前のダイジェストファイルとその参照されたログファイルを連続して検証します。start-time の指定した値まで、またはダイジェストチェーンが終了するまで続きます。ダイジェストファイルが見つからない、または有効でない場合、検証不能な時間範囲が出力が示されます。

検証結果

検証結果は、次の形式の要約ヘッダーで始まります。

Validating log files for trail trail_ARN between time_stamp and time_stamp

メイン出力の各行には、1 つのダイジェストまたはログファイルの検証結果が、次の形式で格納されます。

<Digest file | Log file> <S3 path> <Validation Message>

次の表は、ログファイルとダイジェストファイルの有効な検証メッセージを示しています。

ファイルタイプ 検証メッセージ 説明
Digest file valid ダイジェストファイルの署名は、有効です。参照するログファイルをチェックすることができます。このメッセージは詳細モードでのみ表示されます。
Digest file INVALID: has been moved from its original location ダイジェストファイルが取得されている S3 バケットまたは S3 オブジェクトは、ダイジェストファイル自体に記録されている S3バケット または S3 オブジェクトの場所と一致しません。
Digest file INVALID: invalid format ダイジェストファイルの形式が無効です。ダイジェストファイルが表す時間範囲に対応するログファイルは検証できません。
Digest file INVALID: not found ダイジェストファイルが見つかりませんでした。ダイジェストファイルが表す時間範囲に対応するログファイルは検証できません。
Digest file INVALID: public key not found for fingerprint フィンガープリント ダイジェストファイルに記録されたフィンガープリントに対応するパブリックキーが見つかりませんでした。ダイジェストファイルが検証できません。
Digest file INVALID: signature verification failed ダイジェストファイルの署名が有効ではありません。ダイジェストファイルが有効ではないため、参照するログファイルを検証することはできず、その中の API アクティビティについてアサーションを作成することはできません。
Digest file INVALID: Unable to load PKCS #1 key with fingerprint フィンガープリント 指定されたフィンガープリントを持つ PKCS #1 形式の DER でエンコードされたパブリックキーをロードできなかったため、ダイジェストファイルを検証することはできません。
Log file valid ログファイルは検証され、配信後に変更されていません。このメッセージは詳細モードでのみ表示されます。
Log file INVALID: hash value doesn't match ログファイルのハッシュが一致しません。ログファイルは、 による配信後に変更されています CloudTrail。
Log file INVALID: invalid format ログファイルの形式が無効です。ログファイルを検証できません。
Log file INVALID: not found ログファイルが見つからず、検証できません。

出力には、返された結果に関する要約情報が含まれます。

出力例

詳細

次の例の validate-logs コマンドは、--verbose フラグを使用して、それに続くサンプル出力を作成します。[...] は、サンプル出力を省略したことを示します。

aws cloudtrail validate-logs --trail-arn arn:aws:cloudtrail:us-east-2:111111111111:trail/example-trail-name --start-time 2015-08-31T22:00:00Z --end-time 2015-09-01T19:17:29Z --verbose
Validating log files for trail arn:aws:cloudtrail:us-east-2:111111111111:trail/example-trail-name between 2015-08-31T22:00:00Z and 2015-09-01T19:17:29Z Digest file s3://DOC-EXAMPLE-BUCKET/AWSLogs/111111111111/CloudTrail-Digest/us-east-2/2015/09/01/111111111111_CloudTrail-Digest_us-east-2_example-trail-name_us-east-2_20150901T201728Z.json.gz valid Log file s3://DOC-EXAMPLE-BUCKET/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1925Z_WZZw1RymnjCRjxXc.json.gz valid Log file s3://DOC-EXAMPLE-BUCKET/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1915Z_POuvV87nu6pfAV2W.json.gz valid Log file s3://DOC-EXAMPLE-BUCKET/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1930Z_l2QgXhAKVm1QXiIA.json.gz valid Log file s3://DOC-EXAMPLE-BUCKET/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1920Z_eQJteBBrfpBCqOqw.json.gz valid Log file s3://DOC-EXAMPLE-BUCKET/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1950Z_9g5A6qlR2B5KaRdq.json.gz valid Log file s3://DOC-EXAMPLE-BUCKET/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1920Z_i4DNCC12BuXd6Ru7.json.gz valid Log file s3://DOC-EXAMPLE-BUCKET/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1915Z_Sg5caf2RH6Jdx0EJ.json.gz valid Digest file s3://DOC-EXAMPLE-BUCKET/AWSLogs/111111111111/CloudTrail-Digest/us-east-2/2015/09/01/111111111111_CloudTrail-Digest_us-east-2_example-trail-name_us-east-2_20150901T191728Z.json.gz valid Log file s3://DOC-EXAMPLE-BUCKET/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1910Z_YYSFiuFQk4nrtnEW.json.gz valid [...] Log file s3://DOC-EXAMPLE-BUCKET/AWSLogs/144218288521/CloudTrail/us-east-2/2015/09/01/144218288521_CloudTrail_us-east-2_20150901T1055Z_0Sfy6m9f6iBzmoPF.json.gz valid Log file s3://DOC-EXAMPLE-BUCKET/AWSLogs/144218288521/CloudTrail/us-east-2/2015/09/01/144218288521_CloudTrail_us-east-2_20150901T1040Z_lLa3QzVLpOed7igR.json.gz valid Digest file s3://DOC-EXAMPLE-BUCKET/AWSLogs/144218288521/CloudTrail-Digest/us-east-2/2015/09/01/144218288521_CloudTrail-Digest_us-east-2_example-trail-name_us-east-2_20150901T101728Z.json.gz INVALID: signature verification failed Digest file s3://DOC-EXAMPLE-BUCKETAWSLogs/144218288521/CloudTrail-Digest/us-east-2/2015/09/01/144218288521_CloudTrail-Digest_us-east-2_example-trail-name_us-east-2_20150901T091728Z.json.gz valid Log file s3://DOC-EXAMPLE-BUCKET/AWSLogs/144218288521/CloudTrail/us-east-2/2015/09/01/144218288521_CloudTrail_us-east-2_20150901T0830Z_eaFvO3dwHo4NCqqc.json.gz valid Digest file s3://DOC-EXAMPLE-BUCKET/AWSLogs/144218288521/CloudTrail-Digest/us-east-2/2015/09/01/144218288521_CloudTrail-Digest_us-east-2_example-trail-name_us-east-2_20150901T081728Z.json.gz valid Digest file s3://DOC-EXAMPLE-BUCKET/AWSLogs/144218288521/CloudTrail-Digest/us-east-2/2015/09/01/144218288521_CloudTrail-Digest_us-east-2_example-trail-name_us-east-2_20150901T071728Z.json.gz valid [...] Log file s3://DOC-EXAMPLE-BUCKET/AWSLogs/111111111111/CloudTrail/us-east-2/2015/08/31/111111111111_CloudTrail_us-east-2_20150831T2245Z_mbJkEO5kNcDnVhGh.json.gz valid Log file s3://DOC-EXAMPLE-BUCKET/AWSLogs/111111111111/CloudTrail/us-east-2/2015/08/31/111111111111_CloudTrail_us-east-2_20150831T2225Z_IQ6kXy8sKU03RSPr.json.gz valid Log file s3://DOC-EXAMPLE-BUCKET/AWSLogs/111111111111/CloudTrail/us-east-2/2015/08/31/111111111111_CloudTrail_us-east-2_20150831T2230Z_eRPVRTxHQ5498ROA.json.gz valid Log file s3://DOC-EXAMPLE-BUCKET/AWSLogs/111111111111/CloudTrail/us-east-2/2015/08/31/111111111111_CloudTrail_us-east-2_20150831T2255Z_IlWawYZGvTWB5vYN.json.gz valid Digest file s3://DOC-EXAMPLE-BUCKET/AWSLogs/111111111111/CloudTrail-Digest/us-east-2/2015/08/31/111111111111_CloudTrail-Digest_us-east-2_example-trail-name_us-east-2_20150831T221728Z.json.gz valid Results requested for 2015-08-31T22:00:00Z to 2015-09-01T19:17:29Z Results found for 2015-08-31T22:17:28Z to 2015-09-01T20:17:28Z: 22/23 digest files valid, 1/23 digest files INVALID 63/63 log files valid

非詳細

次の例 validate-logs コマンドでは、--verbose フラグを使用しません。次の出力例では、1 つのエラーが見つかりました。ヘッダー、エラー、要約情報のみが返されます。

aws cloudtrail validate-logs --trail-arn arn:aws:cloudtrail:us-east-2:111111111111:trail/example-trail-name --start-time 2015-08-31T22:00:00Z --end-time 2015-09-01T19:17:29Z
Validating log files for trail arn:aws:cloudtrail:us-east-2:111111111111:trail/example-trail-name between 2015-08-31T22:00:00Z and 2015-09-01T19:17:29Z Digest file s3://DOC-EXAMPLE-BUCKET/AWSLogs/144218288521/CloudTrail-Digest/us-east-2/2015/09/01/144218288521_CloudTrail-Digest_us-east-2_example-trail-name_us-east-2_20150901T101728Z.json.gz INVALID: signature verification failed Results requested for 2015-08-31T22:00:00Z to 2015-09-01T19:17:29Z Results found for 2015-08-31T22:17:28Z to 2015-09-01T20:17:28Z: 22/23 digest files valid, 1/23 digest files INVALID 63/63 log files valid

特定のファイルが によって配信されたかどうかの確認 CloudTrail

バケット内の特定のファイルが によって配信されたかどうかを確認するには CloudTrail、 ファイルを含む期間validate-logsの詳細モードで を実行します。ファイルが の出力に表示される場合validate-logs、ファイルは によって配信されました CloudTrail。