Pubblicato il 27/01/2024 da alnao nella categoria AWS

Il servizio CloudTrail è studiato per monitorare gli eventi eseguiti nel Cloud non con lo scopo di monitoraggio ma di Audit e gestione della sicurezza, infatti il servizio registra tutte le attività degli utenti e le chiamate alle API nel servizio, in particolare vengono registrati tutti i servizi dei tipi.

A titolo di esempio per il servizio S3 vengono registrati gli eventi:

  • relativi alla gestione: azioni del piano di controllo (control-plane) sulle risorse come la creazione o l’eliminazione di bucket
  • relativi ai dati: azioni del piano dati all’interno di una risorsa come la lettura o la scrittura di un oggetto

CloudTrail utilizza queste fonti di eventi in tre funzionalità: cronologia degli eventi, CloudTrail Lake e Percorsi e la Cronologia degli eventi fornisce un registro visualizzabile, ricercabile, scaricabile e immutabile degli ultimi 90 giorni di eventi di gestione in una Regione AWS. La visualizzazione della Cronologia degli eventi non prevede costi di CloudTrail.

CloudTrail Lake è un data lake gestito per l’acquisizione, l’archiviazione, l’accesso e l’analisi delle attività di utenti e API su AWS a scopo di audit e sicurezza. È possibile aggregare, visualizzare, interrogare e archiviare immutabilmente i log delle attività da fonti AWS e non AWS. I Percorsi acquisiscono un registro delle attività degli account AWS e procedono a distribuire e archiviare tali eventi in S3, con possibilità di distribuzione anche a File di log Amazon CloudWatch e ad Amazon EventBridge, è possibile esportare questi eventi nelle soluzioni di monitoraggio della sicurezza. Per maggiori informazioni su cronologia degli eventi Data Lake AWS CloudTrail e sui percorsi, è possibile consultare il sito ufficiale di CloudTrail.

In particolare bisogna ricordare che il servizio non è gratuito, il piano gratuito prevede la possiblità di usare le funzionalità con alcune limitazioni, si rimanda alla documentazione ufficiale, inoltre bisogna sempre ricordare che è studiato per uno scopo diversi rispetto a CloudWatch: CloudTrail si concentra principalmente sull’auditing e sulla conformità registrando le chiamate API mentre CloudWatch è un servizio di monitoraggio che fornisce dati e informazioni utili per la gestione delle applicazioni


La CLI mette a disposizione il comando lookup-events per il recuperi di informazioni da questo servizio:

aws cloudtrail lookup-events help
aws cloudtrail lookup-events --max-items 10

che permette di recupeare i dati salvati. In particolare esistono alcuni comandi specifici per filtrare i dati, per esempio per filtrare i dati tra due date:

aws cloudtrail lookup-events --start-time <timestamp> --end-time <timestamp>

Si rimanda alla documentazione ufficiale per maggiori dettagli, da notare che esistono comandi specifi anche per il data lake e il viewer.


La libreria SDK mette a disposizione un client specifico per l’uso del servizio Cloudtrail, in particolare il comando lookup_events ha la sintassi del tipo:

response = client.lookup_events(
  LookupAttributes=[{
    'AttributeKey': 'EventId'|'EventName'|'ReadOnly'|'Username'|'ResourceType'|'ResourceName'|'EventSource'|'AccessKeyId',
    'AttributeValue': 'string'
  },],
  StartTime=datetime(2015, 1, 1),
  EndTime=datetime(2024, 1, 1),
  EventCategory='insight',
  MaxResults=123,
  NextToken='string'
)

Dalla libreria sono messe a disposizione anche i comandi per la gestione dei trails, per esempio:

client = boto3.client('cloudtrail')
def list_trail(profile_name):
  response = client.list_trails(
    NextToken='string'
  )
  if 'Trails' in response:
    return response['Trails']
  return []
def get_trail(profile_name, trail_name):
  response = client.get_trail( Name=trail_name )
  if 'Trail' in response:
    return response['Trail']
  return {}
def describe_trails(profile_name, trail_name):
  response = client.describe_trails( trailNameList=[trail_name] )
  if 'trailList' in response:
    return response['trailList']
  return []
MENU