

# Consultar descobertas do Amazon GuardDuty
<a name="querying-guardduty"></a>

O [Amazon GuardDuty](https://aws.amazon.com/guardduty/) é um serviço de monitoramento de segurança que ajuda a identificar atividades inesperadas e potencialmente mal-intencionadas ou não autorizadas em seu ambiente AWS. Quando detecta atividades inesperadas e potencialmente mal-intencionadas, o GuardDuty gera [descobertas](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_findings.html) de segurança que você pode exportar para o Amazon S3 para armazenamento e análise. Depois de exportar as descobertas para o Amazon S3, você pode usar o Athena para consultá-las. Este artigo mostra como criar uma tabela no Athena para as descobertas do GuardDuty e consultá-las.

Para obter mais informações sobre o Amazon GuardDuty, consulte o [Manual do usuário do Amazon GuardDuty](https://docs.aws.amazon.com/guardduty/latest/ug/).

## Pré-requisitos
<a name="querying-guardduty-prerequisites"></a>
+ Habilite o recurso GuardDuty para exportar as descobertas para o Amazon S3. Para conhecer as etapas, consulte [Exporting findings](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_exportfindings.html) (Exportar descobertas) no Guia do usuário do Amazon GuardDuty.

## Criar uma tabela no Athena para as descobertas do GuardDuty
<a name="querying-guardduty-creating-a-table-in-athena-for-guardduty-findings"></a>

Para consultar as descobertas do GuardDuty no Athena, crie uma tabela para elas.

**Para criar uma tabela no Athena para as descobertas do GuardDuty**

1. Abra o console do Athena em [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home).

1. Copie a instrução DDL a seguir no console do Athena. Modifique os valores em `LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/account-id/GuardDuty/'` para apontar para as descobertas do GuardDuty no 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**  
O SerDe espera que cada documento JSON esteja em uma única linha de texto, sem caracteres de terminação de linha separando os campos no registro. Se o texto JSON estiver formatado para impressão, você poderá receber uma mensagem de erro como HIVE\$1CURSOR\$1ERROR: Row is not a valid JSON Object (HIVE\$1CURSOR\$1ERROR: a linha não é um objeto JSON válido) ou HIVE\$1CURSOR\$1ERROR: JsonParseException: Unexpected end-of-input: expected close marker for OBJECT (HIVE\$1CURSOR\$1ERROR: JSONParseException: Fim de entrada inesperado: marcador de fechamento esperado para OBJECT) quando tentar consultar a tabela após criá-la. Para obter mais informações, consulte [JSON Data Files](https://github.com/rcongiu/Hive-JSON-Serde#json-data-files) na documentação do OpenX SerDe no GitHub. 

1. Execute a consulta no console do Athena para registrar a tabela `gd_logs`. Quando a consulta for concluída, as descobertas estarão prontas para serem consultadas no Athena.

## Consultas de exemplo
<a name="querying-guardduty-examples"></a>

Os exemplos a seguir mostram como consultar as descobertas do GuardDuty no Athena.

**Example – Exfiltração de dados de DNS**  
A consulta a seguir retorna informações sobre as instâncias do Amazon EC2 que podem estar exfiltrando dados por meio das consultas de 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 – Acesso de usuário do IAM não autorizado**  
A consulta a seguir retorna todos os tipos de descoberta `UnauthorizedAccess:IAMUser` referentes a um principal do IAM de todas as regiões.   

```
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;
```

## Dicas para consultar descobertas do GuardDuty
<a name="querying-guardduty-tips"></a>

Ao criar a consulta, mantenha os seguintes pontos em mente.
+ Para extrair dados de campos JSON aninhados, use as funções `json_extract` ou `json_extract_scalar` do Presto. Para ter mais informações, consulte [Extrair dados JSON de strings](extracting-data-from-JSON.md).
+ Certifique-se de que todos os caracteres nos campos JSON estejam em minúsculas.
+  Para obter informações sobre como baixar resultados de consulta, verifique [Baixar arquivos de resultados de consultas via console do Athena](saving-query-results.md).