

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
<a name="query-examples-cloudtrail-logs"></a>

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](https://aws.amazon.com/blogs/big-data/aws-cloudtrail-and-amazon-athena-dive-deep-to-analyze-security-compliance-and-operational-activity/).

## Interroga i campi annidati nei log CloudTrail
<a name="cloudtrail-logs-nested-fields"></a>

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 la risorsa ARN termina in `example/datafile.txt`. Per la leggibilità, la funzione [replace](https://prestodb.io/docs/current/functions/string.html#replace) rimuove la sottostringa iniziale `arn:aws:s3:::` dall'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 [Filtrare le matrici](filtering-arrays.md).

## Suggerimenti per l'interrogazione dei log CloudTrail
<a name="tips-for-querying-cloudtrail-logs"></a>

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](create-cloudtrail-table.md). 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](create-cloudtrail-table.md).

  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](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-record-contents.html). 

  Se la query include campi nei formati JSON, ad esempio `STRUCT`, estrarre i dati da JSON. Per ulteriori informazioni, consulta [Estrarre dati JSON da stringhe](extracting-data-from-JSON.md). 

  Alcuni suggerimenti per eseguire interrogazioni sulla tabella: CloudTrail 
+ Inizia osservando quali utenti hanno eseguito specifiche operazioni API e gli indirizzi IP di origine.
+ Utilizza la seguente query SQL 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.