Os exemplos nesta seção consultam contagens de itens de log de interesse.
exemplo – Contar o número de indicadores que contêm um termo especificado
A consulta a seguir conta o número de indicadores que contêm o termo “amazon” para o intervalo de datas especificado.
WITH test_dataset AS
(SELECT header FROM waf_logs
CROSS JOIN UNNEST(httprequest.headers) AS t(header) WHERE "date" >= '2021/03/01'
AND "date" < '2021/03/31')
SELECT COUNT(*) referer_count
FROM test_dataset
WHERE LOWER(header.name)='referer' AND header.value LIKE '%amazon%'
exemplo – Contar todos os endereços IP que corresponderam a regras excluídas nos últimos 10 dias
A consulta a seguir conta o número de vezes nos últimos 10 dias que o endereço IP correspondeu à regra excluída no grupo de regras.
WITH test_dataset AS
(SELECT * FROM waf_logs
CROSS JOIN UNNEST(rulegrouplist) AS t(allrulegroups))
SELECT
COUNT(*) AS count,
"httprequest"."clientip",
"allrulegroups"."excludedrules",
"allrulegroups"."ruleGroupId"
FROM test_dataset
WHERE allrulegroups.excludedrules IS NOT NULL AND from_unixtime(timestamp/1000) > now() - interval '10' day
GROUP BY "httprequest"."clientip", "allrulegroups"."ruleGroupId", "allrulegroups"."excludedrules"
ORDER BY count DESC
exemplo – Agrupar todas as regras gerenciadas contadas pelo número de vezes de correspondência
Se você definiu as ações de regras do grupo de regras como Count na configuração de ACL da Web antes de 27 de outubro de 2022, o AWS WAF salvou suas substituições no JSON da ACL da Web como excludedRules
. Agora, a configuração JSON para substituir uma regra para Count está nas configurações ruleActionOverrides
. Para obter mais informações, consulte Substituições de ações em grupos de regras no Guia do desenvolvedor do AWS WAF. Para extrair regras gerenciadas no modo Count da nova estrutura de logs, consulte nonTerminatingMatchingRules
na seção ruleGroupList
em vez do campo excludedRules
, como no exemplo a seguir.
SELECT
count(*) AS count,
httpsourceid,
httprequest.clientip,
t.rulegroupid,
t.nonTerminatingMatchingRules
FROM "waf_logs"
CROSS JOIN UNNEST(rulegrouplist) AS t(t)
WHERE action <> 'BLOCK' AND cardinality(t.nonTerminatingMatchingRules) > 0
GROUP BY t.nonTerminatingMatchingRules, action, httpsourceid, httprequest.clientip, t.rulegroupid
ORDER BY "count" DESC
Limit 50
exemplo – Agrupar todas as regras personalizadas contadas pelo número de vezes de correspondência
A consulta a seguir agrupa todas as regras personalizadas contadas pelo número de vezes de correspondência.
SELECT
count(*) AS count,
httpsourceid,
httprequest.clientip,
t.ruleid,
t.action
FROM "waf_logs"
CROSS JOIN UNNEST(nonterminatingmatchingrules) AS t(t)
WHERE action <> 'BLOCK' AND cardinality(nonTerminatingMatchingRules) > 0
GROUP BY t.ruleid, t.action, httpsourceid, httprequest.clientip
ORDER BY "count" DESC
Limit 50
Para obter informações sobre os locais de log de regras personalizadas e grupos de regras gerenciados, consulte Monitoramento e ajuste no Guia do desenvolvedor do AWS WAF.