

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à.

# Interroga GuardDuty i risultati di Amazon
<a name="querying-guardduty"></a>

[Amazon GuardDuty](https://aws.amazon.com/guardduty/) è un servizio di monitoraggio della sicurezza che aiuta a identificare attività impreviste e potenzialmente non autorizzate o dannose nel tuo AWS ambiente. Quando rileva attività impreviste e potenzialmente dannose, GuardDuty genera [risultati](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_findings.html) di sicurezza che puoi esportare in Amazon S3 per l'archiviazione e l'analisi. Dopo aver esportato i risultati in Amazon S3, è possibile utilizzare Athena per eseguire le query. Questo articolo mostra come creare una tabella in Athena per i GuardDuty risultati e interrogarli.

Per ulteriori informazioni su Amazon GuardDuty, consulta la [Amazon GuardDuty User Guide](https://docs.aws.amazon.com/guardduty/latest/ug/).

## Prerequisiti
<a name="querying-guardduty-prerequisites"></a>
+ Abilita la GuardDuty funzionalità per esportare i risultati in Amazon S3. Per i passaggi, consulta [Esportazione dei risultati](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_exportfindings.html) nella Amazon GuardDuty User Guide.

## Crea una tabella in Athena per i risultati GuardDuty
<a name="querying-guardduty-creating-a-table-in-athena-for-guardduty-findings"></a>

Per interrogare GuardDuty i tuoi risultati con Athena, devi creare una tabella per essi.

**Per creare una tabella in Athena per i risultati GuardDuty**

1. Apri la console Athena all'indirizzo [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Incollare la seguente istruzione DDL nella console Athena. Modifica i valori in `LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/account-id/GuardDuty/'` modo che rimandino ai tuoi GuardDuty risultati in Amazon S3.

   ```
   CREATE EXTERNAL TABLE `gd_logs` (
     `schemaversion` string,
     `accountid` string,
     `region` string,
     `partition` string,
     `id` string,
     `arn` string,
     `type` string,
     `resource` string,
     `service` string,
     `severity` string,
     `createdat` string,
     `updatedat` string,
     `title` string,
     `description` string)
   ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
    LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/account-id/GuardDuty/'
    TBLPROPERTIES ('has_encrypted_data'='true')
   ```
**Nota**  
 SerDe Si aspetta che ogni documento JSON si trovi su una singola riga di testo senza caratteri di terminazione di riga che separano i campi del record. Se il testo JSON è in un bel formato di stampa, potresti ricevere un messaggio di errore come HIVE\$1CURSOR\$1ERROR: Row is not a valid JSON Object o HIVE\$1CURSOR\$1ERROR:: Unexpected end-of-input: expected: expected close marker for OBJECT quando tenti di interrogare la tabella dopo averla JsonParseException creata. Per ulteriori informazioni, consulta [JSON Data Files](https://github.com/rcongiu/Hive-JSON-Serde#json-data-files) nella documentazione di SerDe OpenX su. GitHub 

1. Eseguire la query nella console Athena per registrare la tabella `gd_logs`. Al termine della query, i risultati sono pronti per le query da Athena.

## Query di esempio
<a name="querying-guardduty-examples"></a>

Gli esempi seguenti mostrano come interrogare GuardDuty i risultati di Athena.

**Example Estrazione dei dati DNS**  
La seguente query restituisce informazioni sulle EC2 istanze Amazon che potrebbero esfiltrare dati tramite query DNS.  

```
SELECT
    title,
    severity,
    type,
    id AS FindingID,
    accountid,
    region,
    createdat,
    updatedat,
    json_extract_scalar(service, '$.count') AS Count,
    json_extract_scalar(resource, '$.instancedetails.instanceid') AS InstanceID,
    json_extract_scalar(service, '$.action.actiontype') AS DNS_ActionType,
    json_extract_scalar(service, '$.action.dnsrequestaction.domain') AS DomainName,
    json_extract_scalar(service, '$.action.dnsrequestaction.protocol') AS protocol,
    json_extract_scalar(service, '$.action.dnsrequestaction.blocked') AS blocked
FROM gd_logs
WHERE type = 'Trojan:EC2/DNSDataExfiltration'
ORDER BY severity DESC
```

**Example - Accesso utente IAM non autorizzato**  
La query seguente restituisce tutti i tipi di esiti `UnauthorizedAccess:IAMUser` per un'entità principale IAM da tutte le Regioni.   

```
SELECT title,
         severity,
         type,
         id,
         accountid,
         region,
         createdat,
         updatedat,
         json_extract_scalar(service, '$.count') AS Count, 
         json_extract_scalar(resource, '$.accesskeydetails.username') AS IAMPrincipal, 
         json_extract_scalar(service,'$.action.awsapicallaction.api') AS APIActionCalled
FROM gd_logs
WHERE type LIKE '%UnauthorizedAccess:IAMUser%' 
ORDER BY severity desc;
```

## GuardDuty Suggerimenti per interrogare i risultati
<a name="querying-guardduty-tips"></a>

Quando si crea la query, tenere a mente i seguenti punti.
+ Per estrarre dati dai campi JSON nidificati, utilizzare le funzioni `json_extract` o `json_extract_scalar` di Presto. Per ulteriori informazioni, consulta [Estrarre dati JSON da stringhe](extracting-data-from-JSON.md).
+ Assicurarsi che tutti i caratteri nei campi JSON siano in minuscolo.
+  Per informazioni sul download dei risultati delle query, consulta [Download dei file dei risultati delle query mediante la console Athena](saving-query-results.md).