Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Esempi di interrogazioni di CloudTrail registro
L'esempio seguente mostra una parte di una query che restituisce tutte le richieste anonime (non firmate) dalla tabella creata per i registri CloudTrail degli eventi. Questa query seleziona le richieste in cui useridentity.accountid
è anonimo e useridentity.arn
non è specificato:
SELECT * FROM
cloudtrail_logs
WHERE eventsource = 's3.amazonaws.com' AND eventname in ('GetObject') AND useridentity.accountid = 'anonymous' AND useridentity.arn IS NULL AND requestparameters LIKE '%[your bucket name ]%';
Per ulteriori informazioni, consulta il post sul blog AWS Big Data Analyze security, compliance and operations activity using AWS CloudTrail and Amazon Athena
Interroga i campi annidati nei log CloudTrail
Poiché i campi userIdentity
e resources
sono tipi di dati nidificati, l’esecuzioni di query richiede un trattamento speciale.
L'oggetto userIdentity
è costituito da tipi nidificati STRUCT
. È possibile eseguire query utilizzando un punto per separare i campi, come nell'esempio seguente:
SELECT eventsource, eventname, useridentity.sessioncontext.attributes.creationdate, useridentity.sessioncontext.sessionissuer.arn FROM cloudtrail_logs WHERE useridentity.sessioncontext.sessionissuer.arn IS NOT NULL ORDER BY eventsource, eventname LIMIT 10
Il campo resources
è un array di oggetti STRUCT
. Per questi array, utilizzare CROSS JOIN UNNEST
per annullare l'array in modo da poter interrogare i suoi oggetti.
L'esempio seguente restituisce tutte le righe in cui ARN termina la risorsa. example/datafile.txt
Per motivi di leggibilità, la funzione replacearn:aws:s3:::
sottostringa iniziale da. ARN
SELECT awsregion, replace(unnested.resources_entry.ARN,'arn:aws:s3:::') as s3_resource, eventname, eventtime, useragent FROM cloudtrail_logs t CROSS JOIN UNNEST(t.resources) unnested (resources_entry) WHERE unnested.resources_entry.ARN LIKE '%example/datafile.txt' ORDER BY eventtime
Di seguito sono illustrati alcuni esempi di query per gli eventi DeleteBucket
. La query estrae il nome del bucket e l'ID account a cui appartiene il bucket dall'oggetto resources
.
SELECT awsregion, replace(unnested.resources_entry.ARN,'arn:aws:s3:::') as deleted_bucket, eventtime AS time_deleted, useridentity.username, unnested.resources_entry.accountid as bucket_acct_id FROM cloudtrail_logs t CROSS JOIN UNNEST(t.resources) unnested (resources_entry) WHERE eventname = 'DeleteBucket' ORDER BY eventtime
Per ulteriori informazioni sull'annullamento della nidificazione, consulta Array di filtri.
Suggerimenti per l'interrogazione dei log CloudTrail
Quando esplori i dati di CloudTrail registro, considera quanto segue:
-
Prima di eseguire query sui log, verifica che la tabella di log sia uguale a quella definita in Creare una tabella per CloudTrail i log in Athena utilizzando il partizionamento manuale. Se non è la prima tabella, elimina la tabella esistente utilizzando il comando:
DROP TABLE cloudtrail_logs
. -
Dopo aver eliminato la tabella esistente, ricreala. Per ulteriori informazioni, consulta Creare una tabella per CloudTrail i log in Athena utilizzando il partizionamento manuale.
Verifica che i campi della query Athena siano elencati correttamente. Per informazioni sull'elenco completo dei campi in un CloudTrail record, consulta il contenuto del CloudTrail record.
Se la query include campi in JSON formati, ad esempio
STRUCT
, estrai dati daJSON. Per ulteriori informazioni, consulta Estrarre JSON dati dalle stringhe.Alcuni suggerimenti per l'invio di interrogazioni sulla tua CloudTrail tabella:
-
Inizia osservando quali utenti hanno chiamato quali API operazioni e da quali indirizzi IP di origine.
-
Usa la seguente SQL query di base come modello. Incolla la query nella console Athena ed eseguila.
SELECT useridentity.arn, eventname, sourceipaddress, eventtime FROM cloudtrail_logs LIMIT 100;
-
Modifica la query per esplorare ulteriormente i dati.
-
Per migliorare le prestazioni, includi la clausola
LIMIT
per ottenere uno specifico sottoinsieme di righe.