Negli ultimi 90 giorni di eventi di gestione, usa la console di CloudTrail (Cronologia eventi → Scarica eventi → JSON) o aws cloudtrail lookup-events. Per eventi più vecchi, o per eventi di dati come le letture di oggetti S3, leggi i file di log del tuo trail in S3. Si trovano sotto s3://<bucket>/AWSLogs/<account-id>/CloudTrail/<region>/YYYY/MM/DD/.
CloudTrail è il registro audit del tuo piano di controllo AWS: ogni accesso alla console, ogni chiamata API, ogni assunzione di ruolo. In un incidente cloud, è la prima cosa che tutti chiedono. Prime Core ha 262 regole di rilevamento per CloudTrail, mappate a 177 tecniche MITRE ATT&CK. Tra queste: uso improprio di account cloud (T1078.004), attaccanti che spengono la registrazione cloud (T1562.008) e furto di dati dall’archiviazione cloud (T1530).
Prima di iniziare
Cronologia degli eventi e trail sono cose diverse. La cronologia degli eventi è sempre attiva e gratuita. Mantiene 90 giorni di eventi di gestione, per regione. Un trail è qualcosa che configuri: scrive su S3, mantiene i log per tutto il tempo che desideri e può includere eventi di dati. Controlla cosa hai:
aws cloudtrail describe-trails
aws cloudtrail get-trail-status --name <trail-name>
IsLogging: false su un trail che dovrebbe essere attivo è una constatazione in sé.
Le regioni sono importanti. La cronologia eventi è per regione, e gli eventi di servizi globali come IAM solitamente si trovano in us-east-1. Se stai cercando una chiamata CreateUser in eu-west-1, non la troverai.
Permessi. cloudtrail:LookupEvents per la cronologia eventi. Per i file del trail, s3:ListBucket e s3:GetObject sul bucket, più kms:Decrypt se il trail è crittografato con una chiave KMS.
Opzione 1: download dalla console
Aprire CloudTrail, andare a Cronologia eventi, impostare l’intervallo di tempo e eventuali filtri (nome evento, utente, risorsa), quindi scegliere Scarica eventi → JSON. Il download rispetta i tuoi filtri, quindi controllali prima. Copre solo la regione corrente.
Opzione 2: lookup-events dalla CLI
aws cloudtrail lookup-events --region us-east-1
--start-time 2026-10-19T00:00:00Z --end-time 2026-10-20T00:00:00Z
--output json > ct_use1_1019.json
Due cose da sapere. Primo, ogni risultato incapsula l’evento reale come una stringa JSON stringa in CloudTrailEvent. Aprilo in un evento pulito per linea:
jq -c '.Events[].CloudTrailEvent | fromjson' ct_use1_1019.json > ct_use1_1019.jsonl
Secondo, lookup-events ha un limite di velocità per account e regione e accetta solo un filtro –lookup-attributes per chiamata. Finestre temporali ampie richiedono tempo, quindi restringile dove puoi. Per coprire tutte le regioni, esegui un loop su aws ec2 describe-regions –query ‘Regions[].RegionName’ –output text.
Opzione 3: File dei trail da S3
Questa è la rotta per la cronologia oltre i 90 giorni e per gli eventi di dati:
aws s3 cp s3://my-trail-bucket/AWSLogs/123456789012/CloudTrail/eu-west-1/2026/10/19/ ./ct/ --recursive
gunzip ./ct/*.json.gz
jq -c '.Records[]' ./ct/*.json > ct_euw1_1019.jsonl
Ogni file contiene un array Records, e la linea jq appiattisce tutti in un evento per linea. I trail dell’organizzazione aggiungono l’ID organizzativo al percorso: AWSLogs/<org-id>/<account-id>/CloudTrail/…. Se usi CloudTrail Lake, puoi eseguire SQL sui tuoi eventi e salvare invece i risultati.
Cosa cercare
| Evento | Perché è importante |
|---|---|
| ConsoleLogin | Controlla additionalEventData.MFAUsed, fallimenti e IP di origine che non riconosci |
| CreateUser, CreateAccessKey, AttachUserPolicy | Nuove identità e chiavi: persistenza classica ed escalation dei privilegi |
| StopLogging, DeleteTrail, PutEventSelectors | Qualcuno sta riducendo ciò che CloudTrail vede |
| AssumeRole da sorgenti strane | Movimento laterale tra ruoli e account |
| Raffiche di errorCode: AccessDenied | Ricognizione con credenziali rubate |
| GetSecretValue, GetObject raffiche | Accesso ai dati; GetObject appare solo se gli eventi dati S3 sono attivati |
Carica, sanitizza e rivedi in LogTotal
- Caricamento. Aprire logtotal.com e inserisci il file .jsonl (o .json).
- Sanitizza. [what gets masked: account IDs, ARNs, IPs, access key IDs, usernames]. Look it over before you continue.
- Rivedi.
Quando va male
| Sintomo | Causa probabile | Fix |
|---|---|---|
| lookup-events non restituisce nulla | Regione sbagliata; gli eventi IAM di solito si trovano in us-east-1 | Interroga us-east-1, o esegui un loop su tutte le regioni |
| Niente di più vecchio di 90 giorni | Ritenzione della cronologia eventi | Usa i file del trail in S3 |
| Nessun evento GetObject | Gli eventi dati S3 non sono abilitati sul trail | Atteso; abilitale per il futuro |
| AccessDenied leggendo i file del trail | Manca kms:Decrypt, o la politica del bucket | Correggi IAM o la politica del bucket |
| ThrottlingException | limite di velocità lookup-events | Finestre più piccole; lascia che la CLI riprovi |
FAQ
La cronologia eventi include eventi di dati?
No. Solo eventi di gestione. Gli eventi di dati esistono solo se è stato configurato un trail o uno store di dati di eventi per registrarli.
Quanto velocemente compaiono gli eventi?
Di solito entro pochi minuti dalla chiamata API. I file del trail in S3 arrivano in blocchi, quindi un evento molto recente potrebbe non essere ancora in un file.