---
name: azion-encontre-os-principais-ataques-com-graphql
description: >-
  Classifique as famílias de ataque que WAF detecta nas suas aplicações por requisições de ameaça, com uma query da GraphQL API ao endpoint de métricas.
---

# Encontre os principais ataques com GraphQL

Você pode classificar os tipos de ataque que [WAF](/pt-br/documentacao/plataforma/firewall/#waf) detecta nas suas aplicações, do mais frequente ao menos frequente, com uma query da GraphQL API. A query lê o dataset `workloadMetrics`, que ajuda você a acompanhar padrões de tráfego, identificar anomalias e analisar ameaças. O dataset descontinuado `httpMetrics` aceita a mesma query e retorna as mesmas linhas; use `workloadMetrics`.

Para enviar uma query GraphQL pela primeira vez, consulte [Primeiros passos com a GraphQL API](/pt-br/documentacao/devtools/graphql/primeiros-passos/).

---

## Pré-requisitos

- Um personal token. Para criar um, consulte [Como criar um personal token](/pt-br/documentacao/guias/plataforma/conta-e-billing/personal-tokens/).
- Uma aplicação cujas requisições um firewall inspeciona com um WAF rule set. Para configurar um, consulte [Crie e aplique um WAF rule set](/pt-br/documentacao/guias/seguranca-de-aplicacoes/firewall-e-waf/criar-waf-rule-set/).

---

## Classifique as famílias de ataque

O endpoint de métricas conta as requisições que WAF sinaliza como ameaças e as agrupa por família de ataque. Para obter as cinco famílias de ataque mais frequentes:

1. **Escreva a query**

   Agrupe o dataset `workloadMetrics` por `wafAttackFamily` e ordene-o por `wafRequestsThreat`, da maior contagem para a menor. Defina `begin` e `end` como o período que você quer ler:

   ```graphql
   query Top5Attacks {
     workloadMetrics(
       limit: 5
       filter: {
         tsRange: {
           begin:"2026-09-26T14:00:00"
           end:"2026-10-03T14:00:00"
         }
       }
       groupBy:[wafAttackFamily]
       orderBy:[wafRequestsThreat_DESC]
     )
     {
       wafAttackFamily
       wafRequestsThreat
     }
   }
   ```

   Cada argumento define uma parte da classificação:

   | Argumento | O que faz                                                                                                                                |
   | --------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
   | `limit`   | O número máximo de linhas que a API retorna. `5` mantém as cinco famílias com mais requisições de ameaça.                                |
   | `filter`  | Os critérios que selecionam os dados que a query lê.                                                                                     |
   | `tsRange` | Dentro de `filter`, o período a ler, de `begin` a `end`. Cada valor usa o formato `"YYYY-MM-DDTHH:mm:ss"`, como `"2024-04-11T00:00:00"`. |
   | `groupBy` | Os campos que agrupam as linhas. `[wafAttackFamily]` retorna uma linha por família de ataque.                                            |
   | `orderBy` | A ordem das linhas. `[wafRequestsThreat_DESC]` coloca a maior contagem primeiro; `[wafRequestsThreat_ASC]` coloca a menor primeiro.      |

2. **Envie a query ao endpoint de métricas**

   Envie a query em uma requisição `POST` para `https://api.azion.com/v4/metrics/graphql`, com o cabeçalho `Authorization: Token [TOKEN VALUE]`. Você também pode colá-la no GraphiQL Playground, na mesma URL. Para saber como abri-lo, consulte [GraphiQL Playground](/pt-br/documentacao/devtools/graphql/playground-graphql/).

3. **Leia a classificação**

   A API responde com um objeto por família de ataque, no array `workloadMetrics`:

   ```json
   {
     "data": {
       "workloadMetrics": [
         {
           "wafAttackFamily": "-",
           "wafRequestsThreat": 0
         }
       ]
     }
   }
   ```

   Uma linha cujo `wafRequestsThreat` é `0` significa que WAF não sinalizou nenhuma requisição como ameaça no período.

   Cada objeto carrega os dois campos que a query selecionou:

   | Campo               | Valor                                                                                                                                                                                  |
   | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
   | `wafAttackFamily`   | A categoria de ataque que WAF detectou, com base nas características da requisição, como `$SQL`, `$XSS`, `$RFI` ou `$OTHERS`. Um grupo pode nomear várias famílias, como `$SQL, $XSS`. |
   | `wafRequestsThreat` | O número de requisições que WAF sinalizou como ameaças nessa família durante o período, como `216747`.                                                                                 |

As linhas vão da família com mais requisições de ameaça até a família com menos, até o `limit` que você definiu. Para todos os campos de WAF do dataset, consulte [Campos do Real-Time Metrics](/pt-br/documentacao/devtools/graphql/campos-gql-real-time-metrics/).

---

## Próximos passos

- [Encontre os IPs por trás do tráfego de ataque](/pt-br/documentacao/guias/plataforma/observabilidade/consultar-top-ips-gerando-trafego-de-ataque-com-graphql.md): Liste os endereços de clientes que enviam as requisições que WAF sinaliza.
- [Encontre as principais origens de ameaças do WAF](/pt-br/documentacao/guias/plataforma/observabilidade/encontrar-principais-origens-de-ameacas-waf.md): Classifique ameaças por país, família e endereço IP no Console ou na API.
- [Campos do Real-Time Metrics](/pt-br/documentacao/devtools/graphql/campos-gql-real-time-metrics.md): Consulte cada campo do dataset workloadMetrics.
- [Datasets e argumentos de query](/pt-br/documentacao/devtools/graphql/recursos.md): Filtre, agrupe, ordene e pagine qualquer dataset.
