Parsen von Inhalten im Anfragetext

Diese Seite enthält Informationen zum Konfigurieren des Parsens von Anfragetextinhalten. Dies ist eine optionale Funktion, die Sie mit Ihren Cloud Armor-Sicherheitsrichtlinien verwenden können.

Standardmäßig wertet Cloud Armor den gesamten Inhalt eines Anfragetextes als einen einheitlichen String (vorbehaltlich der Größenbeschränkungen für den Text) anhand der Signaturen in Ihren vorkonfigurierten WAF-Regeln aus. Bei Anfragen mit alternativer Codierung wie JSON können strukturelle Komponenten der Nachricht (nicht vom Nutzer angegeben) Übereinstimmungen mit den vorkonfigurierten WAF-Signaturen auslösen. Um Rauschen zu vermeiden und das Risiko falsch positiver Ergebnisse zu verringern, empfehlen wir, Cloud Armor so zu konfigurieren, dass für jeden unterstützten Inhaltstyp ein alternatives Parsing aktiviert wird, wenn Ihre geschützten Arbeitslasten Folgendes tun:

  • REST APIs bereitstellen
  • GraphQL verwenden
  • Anfragen mit JSON-codierten Inhalten empfangen

Für jede Sicherheitsrichtlinie können Sie das JSON-Parsing für Anfragetexte aktivieren oder deaktivieren. Wenn der Content-Type-Header auf application/json gesetzt ist, verwenden Sie das Flag --json-parsing in der Google Cloud CLI.

Diese Option ist standardmäßig deaktiviert. Die Syntax für das Flag lautet:

--json-parsing=[STANDARD | STANDARD_WITH_GRAPHQL | DISABLED]

Das Flag ist nur mit gcloud compute security-policies update verfügbar. Mit dieser Option können Sie keine neue Sicherheitsrichtlinie erstellen, es sei denn, Sie erstellen eine Sicherheitsrichtlinie in einer Datei und importieren diese Datei dann. Weitere Informationen finden Sie unter Sicherheitsrichtlinien importieren.

JSON-Parsing verwenden

Im folgenden Beispiel konfigurieren Sie eine Liste benutzerdefinierter Content-Type-Headerwerte, für die ein alternatives Parsing angewendet wird. Im Beispiel wird die Sicherheitsrichtlinie POLICY_NAME aktualisiert, um das JSON-Parsing zu aktivieren, und es werden die Inhaltstypen application/json, application/vnd.api+json, application/vnd.collection+json und application/vnd.hyper+json angegeben:

gcloud compute security-policies update POLICY_NAME \
    --json-parsing STANDARD \
    --json-custom-content-types "application/json,application/vnd.api+json,application/vnd.collection+json,application/vnd.hyper+json"

GraphQL-Parsing verwenden

Wenn Sie das GraphQL-Parsing konfigurieren möchten, aktualisieren Sie Ihre Sicherheitsrichtlinie und legen Sie das Flag --json-parsing auf STANDARD_WITH_GRAPHQL fest:

gcloud compute security-policies update POLICY_NAME \
    --json-parsing STANDARD_WITH_GRAPHQL

Logging

Jede HTTP(S)-Anfrage, die anhand einer Cloud Armor-Sicherheitsrichtlinie ausgewertet wird, wird über Cloud Logging protokolliert. Die Logs enthalten Details wie den Namen der angewendeten Sicherheitsrichtlinie, die Abgleichsregel und ob die Regel erzwungen wurde. Das Anfrage-Logging für neue Back-End-Dienstressourcen ist standardmäßig deaktiviert. Wenn Sie Cloud Armor-Anfragen protokollieren möchten, müssen Sie die HTTP(S)-Logging-Einstellung für jeden Back-End-Dienst aktivieren, der durch eine Sicherheitsrichtlinie geschützt ist. Weitere Informationen finden Sie unter Logging und Monitoring für globale externe Application Load Balancer.

Beschränkungen

Beachten Sie beim Konfigurieren des JSON-Parsings die folgenden Beschränkungen:

  • Standardmäßig prüft Cloud Armor die ersten 64 KB des Anfragetextes. Sie können dieses Limit auf 8 KB, 16 KB, 32 KB, 48 KB oder 64 KB festlegen. Wenn der JSON-Inhalt größer als das konfigurierte Prüflimit ist, wendet Cloud Armor das JSON-Parsing bis zu diesem Limit an. Dieser Inhalt wird dann von einer der vorkonfigurierten WAF-Regeln geprüft.

    Weitere Informationen zum Konfigurieren des Prüflimits für den Anfragetext bei Verwendung vorkonfigurierter WAF-Regeln finden Sie unter Beschränkung der Prüfung von Anfragetexten.

  • Cloud Armor kann vorkonfigurierte WAF-Regeln für JSON-formatierte Inhalte (einschließlich korrekt formatierter GraphQL over HTTP Anfragen) parsen und anwenden, wenn das JSON-Parsing mit einem übereinstimmenden Content-Type Headerwert aktiviert ist. Weitere Informationen finden Sie unter JSON parsing. Wenn Cloud Armor JSON-Inhalte nicht vollständig parsen kann, wird möglicherweise der gesamte Text als einzelner URL-codierter String verarbeitet.

  • Wenn der JSON-Parser kein Ergebnis zurückgibt, wird möglicherweise ein URI-Parsing versucht. Wenn der URI-Parser keine oder nur unvollständige Name/Wert-Parameter zurückgibt, wird der gesamte String oder ein Teil davon möglicherweise für die Prüfung als Parametername behandelt.

Nächste Schritte