

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Beispielabfragen für Logs AWS WAF
<a name="query-examples-waf-logs"></a>

Viele der Beispielabfragen in diesem Abschnitt verwenden die zuvor erstellte Partitionsprojektionstabelle. Ändern Sie den Tabellennamen, die Spaltenwerte und andere Variablen in den Beispielen entsprechend Ihren Anforderungen. Um die Leistung Ihrer Abfragen zu verbessern und Kosten zu senken, fügen Sie die Partitionsspalte in der Filterbedingung hinzu.

**Topics**
+ [Zählen Sie Referrer, IP-Adressen oder übereinstimmende Regeln](query-examples-waf-logs-count.md)
+ [Abfrage mit Datum und Uhrzeit](query-examples-waf-logs-date-time.md)
+ [Abfrage nach blockierten Anfragen oder Adressen](query-examples-waf-logs-blocked-requests.md)

# Zählen Sie Referrer, IP-Adressen oder übereinstimmende Regeln
<a name="query-examples-waf-logs-count"></a>

In den Beispielen in diesem Abschnitt wird die Anzahl der für Sie interessanten Protokolleinträge abgefragt.
+ [Count the number of referrers that contain a specified term](#waf-example-count-referrers-with-specified-term)
+ [Count all matched IP addresses in the last 10 days that have matched excluded rules](#waf-example-count-matched-ip-addresses)
+ [Group all counted managed rules by the number of times matched](#waf-example-group-managed-rules-by-times-matched)
+ [Group all counted custom rules by number of times matched](#waf-example-group-custom-rules-by-times-matched)

**Example – Zählt die Anzahl der Referrer, die einen bestimmten Begriff enthalten**  
Die folgende Abfrage zählt die Anzahl der Referrer, die den Begriff „amazon“ für den angegebenen Datumsbereich enthalten.  

```
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%'
```

**Example – Zählt alle übereinstimmenden IP-Adressen in den letzten 10 Tagen, die mit ausgeschlossenen Regeln übereinstimmen**  
Mit der folgenden Abfrage wird die Anzahl der Male in den letzten 10 Tagen gezählt, die die IP-Adresse der ausgeschlossenen Regel in der Regelgruppe entspricht.   

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

**Example – Gruppiert alle gezählten verwalteten Regeln nach der Anzahl der Treffer**  
Wenn Sie in Ihrer Web-ACL-Konfiguration vor dem 27. Oktober 2022 Regelaktionen für Regelgruppen auf Anzahl gesetzt AWS WAF haben, haben Sie Ihre Überschreibungen in der Web-ACL-JSON unter gespeichert. `excludedRules` Jetzt befindet sich die JSON-Einstellung zum Überschreiben einer Regel zum Zählen in den `ruleActionOverrides`-Einstellungen. Weitere Informationen finden Sie unter [Aktionsüberschreibungen in Regelgruppen](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-rule-group-override-options.html) im *AWS WAF -Entwicklerhandbuch*. Um verwaltete Regeln im Zähl-Modus aus der neuen Protokollstruktur zu extrahieren, fragen Sie den Wert `nonTerminatingMatchingRules` im Abschnitt `ruleGroupList` statt im Feld `excludedRules` ab, wie im folgenden Beispiel.  

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

**Example – Gruppiert alle gezählten benutzerdefinierten Regeln nach der Anzahl der Treffer**  
Die folgende Abfrage gruppiert alle gezählten benutzerdefinierten Regeln nach der Anzahl der Übereinstimmungen.  

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

Informationen zu den Protokollspeicherorten für benutzerdefinierte Regeln und verwaltete Regelgruppen finden Sie unter [Überwachung und Optimierung](https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-testing-activities.html) im *AWS WAF -Entwicklerhandbuch*.

# Abfrage mit Datum und Uhrzeit
<a name="query-examples-waf-logs-date-time"></a>

Die Beispiele in diesem Abschnitt enthalten Abfragen, die Datums- und Uhrzeitwerte verwenden.
+ [Return the timestamp field in human-readable ISO 8601 format](#waf-example-return-human-readable-timestamp)
+ [Return records from the last 24 hours](#waf-example-return-records-last-24-hours)
+ [Return records for a specified date range and IP address](#waf-example-return-records-date-range-and-ip)
+ [For a specified date range, count the number of IP addresses in five minute intervals](#waf-example-count-ip-addresses-in-date-range)
+ [Count the number of X-Forwarded-For IP in the last 10 days](#waf-example-count-x-forwarded-for-ip)

**Example – Gibt das Zeitstempelfeld im menschenlesbaren ISO-8601-Format zurück**  
Die folgende Abfrage verwendet die `from_unixtime`- und `to_iso8601`-Funktionen, um das `timestamp`-Feld im menschenlesbaren ISO 8601-Format zurückzugeben (z. B. `2019-12-13T23:40:12.000Z` statt `1576280412771`). Die Abfrage gibt auch den HTTP-Quellnamen, die Quell-ID und die Anforderung zurück.   

```
SELECT to_iso8601(from_unixtime(timestamp / 1000)) as time_ISO_8601,
       httpsourcename,
       httpsourceid,
       httprequest
FROM waf_logs
LIMIT 10;
```

**Example – Gibt Datensätze der letzten 24 Stunden zurück**  
Die folgende Abfrage verwendet einen Filter in der `WHERE`-Klausel, um den HTTP-Quellnamen, die HTTP-Quell-ID und die HTTP-Anforderungsfelder für Datensätze der letzten 24 Stunden zurückzugeben.  

```
SELECT to_iso8601(from_unixtime(timestamp/1000)) AS time_ISO_8601, 
       httpsourcename, 
       httpsourceid, 
       httprequest 
FROM waf_logs
WHERE from_unixtime(timestamp/1000) > now() - interval '1' day
LIMIT 10;
```

**Example – Gibt Datensätze für einen angegebenen Datumsbereich und eine IP-Adresse zurück**  
Die folgende Abfrage listet die Datensätze in einem angegebenen Datumsbereich für eine angegebene Client-IP-Adresse auf.  

```
SELECT * 
FROM waf_logs 
WHERE httprequest.clientip='53.21.198.66' AND "date" >= '2021/03/01' AND "date" < '2021/03/31'
```

**Example – Zählt Sie für einen angegebenen Datumsbereich die Anzahl der IP-Adressen in 5-Minuten-Intervallen**  
Die folgende Abfrage zählt für einen bestimmten Datumsbereich die Anzahl der IP-Adressen in fünf Minuten Intervallen.  

```
WITH test_dataset AS 
  (SELECT 
     format_datetime(from_unixtime((timestamp/1000) - ((minute(from_unixtime(timestamp / 1000))%5) * 60)),'yyyy-MM-dd HH:mm') AS five_minutes_ts,
     "httprequest"."clientip" 
     FROM waf_logs 
     WHERE "date" >= '2021/03/01' AND "date" < '2021/03/31')
SELECT five_minutes_ts,"clientip",count(*) ip_count 
FROM test_dataset 
GROUP BY five_minutes_ts,"clientip"
```

**Example — Zählen Sie die Anzahl der X-Forwarded-For IP-Adressen in den letzten 10 Tagen**  
Die folgende Abfrage filtert die Anforderungsheader und zählt die Anzahl der X-Forwarded-For IP-Adressen in den letzten 10 Tagen.  

```
WITH test_dataset AS
  (SELECT header
   FROM waf_logs
   CROSS JOIN UNNEST (httprequest.headers) AS t(header)
   WHERE from_unixtime("timestamp"/1000) > now() - interval '10' DAY) 
SELECT header.value AS ip,
       count(*) AS COUNT 
FROM test_dataset 
WHERE header.name='X-Forwarded-For' 
GROUP BY header.value 
ORDER BY COUNT DESC
```

Weitere Informationen zu Datums- und Uhrzeitfunktionen finden Sie unter [Datums- und Uhrzeitfunktionen und Operatoren](https://trino.io/docs/current/functions/datetime.html) in der Trino-Dokumentation.

# Abfrage nach blockierten Anfragen oder Adressen
<a name="query-examples-waf-logs-blocked-requests"></a>

Die Beispiele in diesem Abschnitt fragen nach blockierten Anfragen oder Adressen ab.
+ [Extract the top 100 IP addresses blocked by a specified rule type](#waf-example-extract-top-100-blocked-ip-by-rule)
+ [Count the number of times a request from a specified country has been blocked](#waf-example-count-request-blocks-from-country)
+ [Count the number of times a request has been blocked, grouping by specific attributes](#waf-example-count-request-blocks-by-attribute)
+ [Count the number of times a specific terminating rule ID has been matched](#waf-example-count-terminating-rule-id-matches)
+ [Retrieve the top 100 IP addresses blocked during a specified date range](#waf-example-top-100-ip-addresses-blocked-for-date-range)

**Example – Extrahiert die Top-100-IP-Adressen, die von einem angegebenen Regeltyp blockiert werden**  
Die folgende Abfrage extrahiert und zählt die 100 häufigsten IP-Adressen, die während des angegebenen Datumsbereichs durch die `RATE_BASED`-Beendigungsregel blockiert wurden.  

```
SELECT COUNT(httpRequest.clientIp) as count,
httpRequest.clientIp
FROM waf_logs
WHERE terminatingruletype='RATE_BASED' AND action='BLOCK' and "date" >= '2021/03/01'
AND "date" < '2021/03/31'
GROUP BY httpRequest.clientIp
ORDER BY count DESC
LIMIT 100
```

**Example – Zählt, wie oft eine Anfrage aus einem bestimmten Land blockiert wurde**  
Die folgende Abfrage zählt, wie oft die Anforderung von einer IP-Adresse angekommen ist, die zu Irland (IE) gehört und von der `RATE_BASED`-Beendigungsregel gesperrt wurde.  

```
SELECT 
  COUNT(httpRequest.country) as count, 
  httpRequest.country 
FROM waf_logs
WHERE 
  terminatingruletype='RATE_BASED' AND 
  httpRequest.country='IE'
GROUP BY httpRequest.country
ORDER BY count
LIMIT 100;
```

**Example – Zählt, wie oft eine Anforderung blockiert wurde, gruppiert nach bestimmten Attributen**  
Die folgende Abfrage zählt, wie oft die Anfrage blockiert wurde, wobei die Ergebnisse nach WebACL RuleId, ClientIP und HTTP-Anforderungs-URI gruppiert sind.  

```
SELECT 
  COUNT(*) AS count,
  webaclid,
  terminatingruleid,
  httprequest.clientip,
  httprequest.uri
FROM waf_logs
WHERE action='BLOCK'
GROUP BY webaclid, terminatingruleid, httprequest.clientip, httprequest.uri
ORDER BY count DESC
LIMIT 100;
```

**Example – Zählt, wie oft eine bestimmte beendende Regel-ID abgeglichen wurde**  
Die folgende Abfrage zählt, wie oft eine bestimmte Beendigungsregel-ID vorkam (`WHERE terminatingruleid='e9dd190d-7a43-4c06-bcea-409613d9506e'`). Die Abfrage gruppiert dann die Ergebnisse nach WebACL, Action, ClientIP und HTTP-Anforderungs-URI.  

```
SELECT 
  COUNT(*) AS count,
  webaclid,
  action,
  httprequest.clientip,
  httprequest.uri
FROM waf_logs
WHERE terminatingruleid='e9dd190d-7a43-4c06-bcea-409613d9506e'
GROUP BY webaclid, action, httprequest.clientip, httprequest.uri
ORDER BY count DESC
LIMIT 100;
```

**Example – Abrufen der Top-100-IP-Adressen, die während eines angegebenen Datumsbereichs blockiert wurden**  
Die folgende Abfrage extrahiert die Top-100-IP-Adressen, die für einen angegebenen Datumsbereich gesperrt wurden. Die Abfrage listet auch auf, wie oft die IP-Adressen gesperrt wurden.  

```
SELECT "httprequest"."clientip", "count"(*) "ipcount", "httprequest"."country"
FROM waf_logs
WHERE "action" = 'BLOCK' and "date" >= '2021/03/01'
AND "date" < '2021/03/31'
GROUP BY "httprequest"."clientip", "httprequest"."country"
ORDER BY "ipcount" DESC limit 100
```