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
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.
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 eseguirevalidate-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
betweentime_stamp
andtime_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.