Convalida dell'integrità dei file di log di CloudTrail con la AWS CLI - AWS CloudTrail

Convalida dell'integrità dei file di log di CloudTrail con la AWS CLI

Per convalidare i log con AWS Command Line Interface, utilizza il comando CloudTrail validate-logs. Il comando utilizza i file digest distribuiti nel bucket Amazon S3 per eseguire la convalida. Per informazioni sui file digest, consulta Struttura dei file di digest di CloudTrail.

La AWS CLI consente di rilevare i seguenti tipi di modifiche:

  • Modifica o eliminazione dei file di log di CloudTrail

  • Modifica o eliminazione dei file digest di CloudTrail

  • Modifica o eliminazione di entrambi i tipi di file

Nota

La AWS CLI esegue la convalida solo dei file di log a cui i file digest fanno riferimento. Per ulteriori informazioni, consultare Verifica se un file specifico è stato distribuito da CloudTrail.

Prerequisiti

Per convalidare l'integrità dei file di log con la AWS CLI, devono essere soddisfatte le seguenti condizioni:

  • Devi disporre di connettività online a AWS.

  • Devi disporre dell'accesso in lettura al bucket Amazon S3 contenente i file digest e i file di log.

  • Il file digest e i file di log non devono essere spostati dal percorso Amazon S3 originale in cui CloudTrail li ha distribuiti.

Nota

I file di log scaricati su un disco locale non possono essere convalidati mediante la AWS CLI. Per istruzioni su come creare strumenti personalizzati per la convalida, consulta Implementazioni personalizzate della convalida dell'integrità dei file di log di CloudTrail.

validate-logs

Sintassi

Di seguito è riportata la sintassi per validate-logs. I parametri opzionali sono riportati tra parentesi.

aws cloudtrail validate-logs --trail-arn <trailARN> --start-time <start-time> [--end-time <end-time>] [--s3-bucket <bucket-name>] [--s3-prefix <prefix>] [--verbose]

Opzioni

Di seguito sono elencati le opzioni dalla riga di comando per validate-logs. Le opzioni --trail-arn e --start-time sono obbligatorie.

--start-time

Specifica che i file di log vengano distribuiti in corrispondenza della o dopo la convalida il valore del time stamp UTC specificato. Esempio: 2015-01-08T05:21:42Z.

--end-time

(Opzionale) Specifica che i file di log vengano distribuiti in corrispondenza o prima della convalida il valore del time stamp UTC specificato. Il valore di default è l'ora UTC corrente (Date.now()). Esempio: 2015-01-08T12:31:41Z.

Nota

Per l'intervallo di tempo specificato, il comando validate-logs controlla solo i file di log per i quali esistono riferimenti nei corrispondenti file digest. Non viene controllato alcun altro file di log nel bucket Amazon S3. Per ulteriori informazioni, consultare Verifica se un file specifico è stato distribuito da CloudTrail.

--s3-bucket

Facoltativamente, specifica il bucket Amazon S3 in cui vengono archiviati i file digest. Se non viene specificato alcun nome di bucket, la AWS CLI ne recupererà uno mediante una chiamata di DescribeTrails().

--s3-prefix

Facoltativamente, specifica il prefisso Amazon S3 in cui vengono archiviati i file digest. Se non viene specificato alcun valore, la AWS CLI ne recupererà uno mediante una chiamata di DescribeTrails().

Nota

È consigliabile utilizzare questa opzione solo se il prefisso corrente è diverso dal prefisso in uso durante l'intervallo di tempo specificato.

--trail-arn

Specifica l'ARN (Amazon Resource Name) del trail da convalidare. Il formato dell'ARN di un trail è riportato di seguito.

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

Per recuperare l'ARN per un trail, puoi utilizzare il comando describe-trails prima di eseguire validate-logs.

Potresti decidere di specificare il nome e il prefisso del bucket, oltre al relativo ARN, se i file di log sono stati distribuiti in più di un bucket nell'intervallo di tempo specificato e vuoi limitare il processo di convalida ai file di log in uno solo dei bucket.

--verbose

(Opzionale) Restituisce le informazioni di convalida per ogni file di log o file digest nell'intervallo di tempo specificato. L'output indica se il file è rimasto invariato o se è stato modificato o eliminato. In modalità non dettagliata (impostazione di default), le informazioni vengono restituite solo nei casi in cui si è verificato un errore di convalida.

Esempio

L'esempio seguente consente di convalidare i file di log dall'ora di inizio specificata all'ora corrente utilizzando il bucket Amazon S3 configurato per il percorso corrente e specificando l'output dettagliato.

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

Funzionamento di validate-logs

Il comando validate-logs inizia con la convalida del file digest più recente nell'intervallo di tempo specificato. In primo luogo, verifica se il file digest è stato scaricato da un percorso a cui il file effettivamente appartiene. In altre parole, se la CLI ha scaricato il file digest df1 dal percorso S3 p1, validate-logs verificherà quanto segue: p1 == df1.digestS3Bucket + '/' + df1.digestS3Object.

Se la firma del file digest è valida, controlla il valore hash di ciascuno dei log a cui viene fatto riferimento nel file digest. Il comando va a ritroso nel tempo e convalida i file digest precedenti e i corrispondenti file di log di riferimento, in sequenza. Continua il processo fino al raggiungimento del valore specificato per start-time o fino al termine della sequenza di file digest. Se un file digest non è disponibile o non è valido, l'intervallo di tempo che non può essere convalidato è indicato nell'output.

Risultati della convalida

I risultati della convalida iniziano con un'intestazione di riepilogo avente il formato seguente:

Validating log files for trail trail_ARN between time_stamp and time_stamp

Ogni riga dell'output principale contiene i risultati della convalida per un singolo file digest o file di log nel formato seguente:

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

Nella tabella riportata di seguito sono descritti i possibili messaggi di convalida per i file di log e i file digest.

Tipo di file Messaggio di convalida Descrizione
Digest file valid La firma del file digest è valida. I file di log a cui fa riferimento possono essere controllati. Questo messaggio è incluso solo nella modalità dettagliata (verbose).
Digest file INVALID: has been moved from its original location Il bucket S3 o l'oggetto S3 da cui il file digest è stato recuperato non corrisponde alla posizione del bucket S3 o a quella dell'oggetto S3 registrate nel file digest stesso.
Digest file INVALID: invalid format Il formato del file digest non è valido. I file di log corrispondenti all'intervallo di tempo rappresentato dal file digest non può essere convalidato.
Digest file INVALID: not found Il file digest non è stato trovato. I file di log corrispondenti all'intervallo di tempo rappresentato dal file digest non può essere convalidato.
Digest file INVALID: public key not found for fingerprint impronta La chiave pubblica corrispondente alla impronta registrata nel file digest non è stata trovata. Il file digest non può essere convalidato.
Digest file INVALID: signature verification failed La firma del file digest non è valida. Poiché il file digest non è valido, i file di log a cui fa riferimento non possono essere convalidati e non è possibile effettuare alcuna asserzione sulla corrispondente attività delle API.
Digest file INVALID: Unable to load PKCS #1 key with fingerprint impronta Poiché è risultato impossibile caricare la chiave pubblica con codifica DER nel formato PKCS # 1 e con l'impronta specificata, il file digest non può essere convalidato.
Log file valid Il file di log è stato convalidato e non è stato modificato dopo la distribuzione. Questo messaggio è incluso solo nella modalità dettagliata (verbose).
Log file INVALID: hash value doesn't match L'hash per il file di log non corrisponde. Il file di log è stato modificato dopo la distribuzione da parte di CloudTrail.
Log file INVALID: invalid format Il formato del file di log non è valido. Il file di log non può essere convalidato.
Log file INVALID: not found Il file di log non è stato trovato e non può essere convalidato.

L'output include informazioni riepilogative sui risultati restituiti.

Output di esempio

Modalità dettagliata

Il comando validate-logs di esempio seguente utilizza il flag --verbose e restituisce l'output di esempio seguente. [...] indica che l'output di esempio è stato abbreviato.

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://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://example-bucket/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1925Z_WZZw1RymnjCRjxXc.json.gz valid Log file s3://example-bucket/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1915Z_POuvV87nu6pfAV2W.json.gz valid Log file s3://example-bucket/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1930Z_l2QgXhAKVm1QXiIA.json.gz valid Log file s3://example-bucket/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1920Z_eQJteBBrfpBCqOqw.json.gz valid Log file s3://example-bucket/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1950Z_9g5A6qlR2B5KaRdq.json.gz valid Log file s3://example-bucket/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1920Z_i4DNCC12BuXd6Ru7.json.gz valid Log file s3://example-bucket/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1915Z_Sg5caf2RH6Jdx0EJ.json.gz valid Digest file s3://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://example-bucket/AWSLogs/111111111111/CloudTrail/us-east-2/2015/09/01/111111111111_CloudTrail_us-east-2_20150901T1910Z_YYSFiuFQk4nrtnEW.json.gz valid [...] Log file s3://example-bucket/AWSLogs/144218288521/CloudTrail/us-east-2/2015/09/01/144218288521_CloudTrail_us-east-2_20150901T1055Z_0Sfy6m9f6iBzmoPF.json.gz valid Log file s3://example-bucket/AWSLogs/144218288521/CloudTrail/us-east-2/2015/09/01/144218288521_CloudTrail_us-east-2_20150901T1040Z_lLa3QzVLpOed7igR.json.gz valid Digest file s3://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://example-bucket/AWSLogs/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://example-bucket/AWSLogs/144218288521/CloudTrail/us-east-2/2015/09/01/144218288521_CloudTrail_us-east-2_20150901T0830Z_eaFvO3dwHo4NCqqc.json.gz valid Digest file s3://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://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://example-bucket/AWSLogs/111111111111/CloudTrail/us-east-2/2015/08/31/111111111111_CloudTrail_us-east-2_20150831T2245Z_mbJkEO5kNcDnVhGh.json.gz valid Log file s3://example-bucket/AWSLogs/111111111111/CloudTrail/us-east-2/2015/08/31/111111111111_CloudTrail_us-east-2_20150831T2225Z_IQ6kXy8sKU03RSPr.json.gz valid Log file s3://example-bucket/AWSLogs/111111111111/CloudTrail/us-east-2/2015/08/31/111111111111_CloudTrail_us-east-2_20150831T2230Z_eRPVRTxHQ5498ROA.json.gz valid Log file s3://example-bucket/AWSLogs/111111111111/CloudTrail/us-east-2/2015/08/31/111111111111_CloudTrail_us-east-2_20150831T2255Z_IlWawYZGvTWB5vYN.json.gz valid Digest file s3://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

Modalità non dettagliata

Il comando validate-logs di esempio seguente non utilizza il flag --verbose. Nell'output di esempio che segue è stato rilevato un errore. Vengono restituite solo le informazioni relative a intestazione, errori e riepilogo.

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://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

Verifica se un file specifico è stato distribuito da CloudTrail

Per controllare se un determinato file nel bucket è stato distribuito da CloudTrail, esegui validate-logs nella modalità dettagliata per il periodo di tempo che include il file. Se il file viene visualizzato nell'output di validate-logs, significa che il file è stato distribuito da CloudTrail.