Regeln für Sicherheitsrichtlinien optimieren

Sie können Regeln optimieren, indem Sie Anfragefelder von der Auswertung ausschließen, um falsch positive Ergebnisse zu reduzieren.

Wenn Sie Ausschlüsse für eine Regel konfigurieren, können Sie die folgenden Felder von der Prüfung ausschließen:

Anfragefelder von der Regelauswertung ausschließen

Wenn Sie einen Anfragefeldausschluss für eine Regel konfigurieren möchten, verknüpfen Sie die Konfiguration mit einer Sicherheitsrichtlinienregel.

Für diese Regeln werden keine Regel-IDs verwendet. Stattdessen können Sie das Flag --target-rule-set mit einem der folgenden Werte konfigurieren:

  • cel (--target-rule-set "cel"): Wendet Ausschlüsse nur auf benutzerdefinierte CEL-Regeln in dieser Sicherheitsrichtlinienregel an.
  • * (--target-rule-set "*", globaler Ausschluss): Wendet Ausschlüsse auf alle Regeln an, die an diese Sicherheitsrichtlinie angehängt sind, einschließlich benutzerdefinierter CEL-Regeln und Regeln, die evaluatePreconfiguredWaf() verwenden.

In Backend-Sicherheitsrichtlinien (sowohl global als auch regional) können Sie pro Ziel (cel oder *) jeweils bis zu 100 der folgenden Elemente konfigurieren:

  • Anfrageheader
  • Anfrage-Cookies
  • Anfrage-Abfrageparameter
  • Anfrage-URIs
  • Anfragetexte

Folgende Feldoperatoren sind verfügbar:

  • EQUALS: Stimmt überein, wenn der Feldwert mit dem angegebenen Wert übereinstimmt.
  • STARTS_WITH: Der Operator stimmt überein, wenn der Feldwert mit dem angegebenen Wert beginnt.
  • ENDS_WITH: stimmt überein, wenn der Feldwert mit dem angegebenen Wert endet.
  • CONTAINS: Stimmt überein, wenn der Feldwert den angegebenen Wert enthält.
  • EQUALS_ANY: Stimmt überein, wenn der Feldwert ein beliebiger Wert ist.

Anfrageheader

Sie können bestimmte Anfrageheader von der Prüfung während der Regelauswertung ausschließen, indem Sie ihre Headernamen im Ausschlussfeld verwenden.

Wenn ein Anfrageheader mit einem Ausschluss übereinstimmt, wird der gesamte Headereintrag (sowohl Name als auch Wert) vor der Regelauswertung aus der request.headers-Zuordnung entfernt.

Beispiel

Im folgenden Beispiel wird die Regel in der Sicherheitsrichtlinie POLICY_NAME für PRIORITY aktualisiert, um Anfrageheader, die entweder mit abc beginnen oder mit xyz enden, von der Regelbewertung (cel) auszuschließen:

gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
    --security-policy POLICY_NAME \
    --target-rule-set "cel" \
    --request-header-to-exclude "op=STARTS_WITH,val=abc" \
    --request-header-to-exclude "op=ENDS_WITH,val=xyz"

Ersetzen Sie Folgendes:

  • PRIORITY: die Priorität der Regel
  • POLICY_NAME: der Name der Sicherheitsrichtlinie

Anfrage-Cookies

Sie können bestimmte Anfrage-Cookies von der Prüfung während der Regelauswertung ausschließen, indem Sie ihre Cookie-Namen in das Ausschlussfeld eingeben.

Wenn ein Anfrage-Cookie mit einem Ausschluss übereinstimmt, wird der gesamte Cookie-Eintrag (sowohl Name als auch Wert) vor der Regelauswertung aus den Anfrageattributen ausgeschlossen.

Beispiel

Im folgenden Beispiel wird die Regel in der Sicherheitsrichtlinie POLICY_NAME für PRIORITY aktualisiert, um Anfrage-Cookies, die mit session_ beginnen, von der Regelbewertung (cel) auszuschließen:

gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
    --security-policy POLICY_NAME \
    --target-rule-set "cel" \
    --request-cookie-to-exclude "op=STARTS_WITH,val=session_"

Ersetzen Sie Folgendes:

  • PRIORITY: die Priorität der Regel
  • POLICY_NAME: der Name der Sicherheitsrichtlinie

Anfrage-Abfrageparameter

Sie können bestimmte Anfrageparameter von der Prüfung während der Regelbewertung ausschließen, indem Sie ihre Parameternamen im Ausschlussfeld verwenden. Das Flag --request-query-param-to-exclude gilt sowohl für URL-Abfrageparameter als auch für geparste Anfrage-Textparameter (JSON, Formulardaten und GraphQL).

Wenn ein Parameter mit einem Ausschluss übereinstimmt, wird der gesamte Parametereintrag (sowohl der Schlüssel als auch der Wert) vor der Regelauswertung aus request.params entfernt, sodass has(request.params.param_name) als false ausgewertet wird.

Bei geparsten Anfragetexten können Sie die Punktnotation verwenden, um verschachtelte Felder und Arrayelemente anzusprechen:

  • Feld auf oberster Ebene: val=user
  • Verschachteltes Feld: val=user.name
  • Arrayelement: val=items.0.name

Beispiel

Im folgenden Beispiel wird die Regel in der Sicherheitsrichtlinie POLICY_NAME für PRIORITY aktualisiert, um den URL-Suchparameter bad-param, das verschachtelte JSON-Feld user.name und das JSON-Array-Elementfeld items.0.name von der Regelbewertung (cel) auszuschließen:

gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
    --security-policy POLICY_NAME \
    --target-rule-set "cel" \
    --request-query-param-to-exclude "op=EQUALS,val=bad-param" \
    --request-query-param-to-exclude "op=EQUALS,val=user.name" \
    --request-query-param-to-exclude "op=EQUALS,val=items.0.name"

Ersetzen Sie Folgendes:

  • PRIORITY: die Priorität der Regel
  • POLICY_NAME: der Name der Sicherheitsrichtlinie

Anfrage-URIs

Sie können URIs aus der Anfragezeile (ohne Abfragestringdaten) von der Prüfung während der Regelauswertung ausschließen.

Wenn Sie einen URI ausschließen, wird das gesamte URI-Feld von der Prüfung ausgeschlossen.

Beispiel

Im folgenden Beispiel wird die Regel in der Sicherheitsrichtlinie POLICY_NAME für PRIORITY aktualisiert, um Anfrage-URIs, die /bad-path enthalten, von der Regelauswertung (cel) auszuschließen:

gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
    --security-policy POLICY_NAME \
    --target-rule-set "cel" \
    --request-uri-to-exclude "op=CONTAINS,val=/bad-path"

Ersetzen Sie Folgendes:

  • PRIORITY: die Priorität der Regel
  • POLICY_NAME: der Name der Sicherheitsrichtlinie

Anfragetexte

Sie können bestimmte Werte im Anfragetext von der Prüfung während der Regelauswertung ausschließen.

Wenn ein Anfragetext mit einem Ausschluss übereinstimmt, wird das Attribut request.body von der Regelbewertung ausgeschlossen.

Beispiel

Im folgenden Beispiel wird die Regel in der Sicherheitsrichtlinie POLICY_NAME für PRIORITY aktualisiert, um Anfragetext, der bad-body-value enthält, von der Regelbewertung (cel) auszuschließen:

gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
    --security-policy POLICY_NAME \
    --target-rule-set "cel" \
    --request-body-to-exclude "op=CONTAINS,val=bad-body-value"

Ersetzen Sie Folgendes:

  • PRIORITY: die Priorität der Regel
  • POLICY_NAME: der Name der Sicherheitsrichtlinie

Feldwerte

Sie müssen einen Feldwert angeben, wenn Sie einen anderen Feldoperator als EQUALS_ANY verwenden.

Für Anfrageheader, Anfrage-Cookies und Anfrageparameter umfasst der zulässige Zeichensatz für Feldwerte die folgenden Zeichen:

  • !, #, $, %, &, *, +, -, ., ^, _, `, |, ~
  • Alphanumerische Zeichen A bis Z (sowohl Klein- als auch Großbuchstaben)
  • Ziffern 0 bis 9

Für Anfragetexte umfasst der zulässige Zeichensatz für Feldwerte alle druckbaren ASCII-Zeichen außer ', \`,(, and)`:

  • Leerzeichen () und Sonderzeichen: !, ", #, $, %, &, *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, ], ^, _, `, {, |, }, ~
  • Alphanumerische Zeichen A bis Z (sowohl Klein- als auch Großbuchstaben)
  • Ziffern 0 bis 9

Wenn Sie Ausschlüsse für diese Anfragefelder anwenden, wird der konfigurierte Feldwert (val=) ohne Berücksichtigung der Groß- und Kleinschreibung (nach der Transformation) mit den folgenden Werten verglichen, um zu bestimmen, welche Entitäten von der Prüfung ausgeschlossen werden sollen:

  • Anfrageheader: Übereinstimmungen mit dem Headernamen (Schlüssel), um den gesamten Header (Name und Wert) auszuschließen.
  • Anfrage-Cookies: Stimmt mit dem Cookienamen überein, um das gesamte Cookie (Name und Wert) auszuschließen.
  • Suchparameter der Anfrage: Übereinstimmungen mit dem Parameternamen oder dem verschachtelten JSON-Pfad (Schlüssel), um den gesamten Parameter (Schlüssel und Wert) auszuschließen.
  • Anfragetexte: Übereinstimmungen mit dem String des Anfragetextinhalts, um das gesamte request.body-Attribut auszuschließen.

Wenn Sie ein bestimmtes Zeichen ausschließen möchten, das nicht im zulässigen Zeichensatz enthalten ist, müssen Sie keine zusätzliche Codierung vornehmen.

Für Anfrage-URIs muss der Feldwert in einem URI-Format mit den folgenden Komponentenbeschränkungen angegeben werden:

Komponente Einschränkung
Schema Zulässig, aber auf http oder https beschränkt
Host Zulässig (kann eine IP-Adresse sein)
Port Zugelassen
Pfad Zugelassen
Abfrage Nicht zulässig
Fragment Nicht zulässig

Wenn Sie Ausschlüsse für Anfrage-URIs anwenden, werden die konfigurierten Feldwerte ohne Berücksichtigung der Groß- und Kleinschreibung (nach der Transformation) mit den URIs aus der Anfragezeile verglichen, wobei der Abfragestring ausgeschlossen wird. Die URIs aus der Anfragezeile können relativ oder absolut sein. Berücksichtigen Sie dies beim Konfigurieren von Ausschlüssen für Anfrage-URIs.

Ausschlüsse entfernen

Verwenden Sie den Befehl remove-preconfig-waf-exclusion, um Ausschlüsse von Anfragefeldern aus einer Sicherheitsrichtlinienregel zu entfernen. Sie können bestimmte Feldausschlüsse entfernen, indem Sie die entsprechenden Feldausschluss-Flags angeben. Wenn Sie die Feld-Flags weglassen, werden alle Ausschlüsse für den Zielregelsatz (cel oder *) entfernt.

Beispiele

Im folgenden Beispiel wird die Regel in der Sicherheitsrichtlinie POLICY_NAME für PRIORITY aktualisiert, um den Ausschluss für Anfrageheader, die mit abc beginnen, aus der Regelbewertung (cel) zu entfernen:

gcloud compute security-policies rules remove-preconfig-waf-exclusion PRIORITY \
    --security-policy POLICY_NAME \
    --target-rule-set "cel" \
    --request-header-to-exclude "op=STARTS_WITH,val=abc"

Im folgenden Beispiel werden die Feld-Flags weggelassen, um alle Anfragefeldausschlüsse zu entfernen, die für die Regelbewertung (cel) für die Regel unter PRIORITY konfiguriert sind:

gcloud compute security-policies rules remove-preconfig-waf-exclusion PRIORITY \
    --security-policy POLICY_NAME \
    --target-rule-set "cel"

Ersetzen Sie Folgendes:

  • PRIORITY: die Priorität der Regel
  • POLICY_NAME: der Name der Sicherheitsrichtlinie