本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
驗證 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
。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
命令始於驗證所指定之時間範圍內的最新摘要檔案。首先,命令會驗證已從宣告的所屬位置下載的摘要檔案。換句話說,如果df1
從 S3 位置CLI下載摘要文件p1
,驗證日誌將驗證。p1 == df1.digestS3Bucket + '/' + df1.digestS3Object
如果摘要檔案的簽章有效,則會檢查摘要檔案中所參考之每個日誌的雜湊值。此命令接著會回復,並連續驗證先前的摘要檔案和其參考的日誌檔案。它會持續直到到達指定的 start-time
值,或直到摘要鏈結束。如果摘要檔案遺失或無效,則會在輸出中指出無法驗證的時間範圍。
驗證結果
驗證結果會以摘要標頭開始,格式如下:
Validating log files for trail
trail_ARN
betweentime_stamp
andtime_stamp
主要輸出的每列都包含單一摘要或日誌檔案的驗證結果,格式如下:
<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 fingerprint |
找不到對應至摘要檔案中所記錄之指紋的公有金鑰。無法驗證摘要檔案。 |
Digest file |
INVALID: signature verification failed |
摘要檔案簽章無效。由於摘要檔案無效,因此無法驗證所參考的記錄檔,也無法對其中的API活動進行宣告。 |
Digest file |
INVALID: Unable to load PKCS #1 key with fingerprint
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
旗標。在下面的範例輸出中,發現一個錯誤。只會傳回標頭、錯誤和摘要資訊。
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。