Google Cloud Armor-Sicherheitsrichtlinien konfigurieren

So erstellen Sie Google Cloud Armor-Sicherheitsrichtlinien zum Filtern von eingehendem Traffic, der für externe HTTP(S)-Load-Balancer bestimmt ist: Konzeptionelle Informationen zu Sicherheitsrichtlinien finden Sie in der Google Cloud Armor-Sicherheitsrichtlinie.

Informationen zum Konfigurieren von Google Cloud Armor in Google Kubernetes Engine (GKE) finden Sie unter Google Cloud Armor-Sicherheitsrichtlinie im Abschnitt Ingress-Features über BackendConfig-Parameter konfigurieren.

Hinweis

Führen Sie vor dem Konfigurieren von Sicherheitsrichtlinien folgende Schritte aus:

  • Machen Sie sich mit den Konzepten des HTTP(S)-Load-Balancing vertraut.

  • Prüfen Sie Ihre vorhandenen Back-End-Dienste, um festzustellen, ob jeweils eine Sicherheitsrichtlinie angehängt ist. Back-End-Dienste ohne Sicherheitsrichtlinie und die zugehörigen Back-Ends sind nicht durch Google Cloud Armor geschützt. Um den von Google Cloud Armor bereitgestellten Schutz hinzuzufügen, folgen Sie der Anleitung in diesem Dokument, um eine neu erstellte oder vorhandene Sicherheitsrichtlinie an den Back-End-Dienst anzuhängen.

IAM-Berechtigungen für Google Cloud Armor-Sicherheitsrichtlinien einrichten

Für die folgenden Vorgänge ist die Rolle Compute-Sicherheitsadministrator (roles/compute.securityAdmin) für die Identitäts- und Zugriffsverwaltung (IAM) erforderlich:

  • Google Cloud Armor-Sicherheitsrichtlinien konfigurieren, ändern, aktualisieren und löschen
  • Zulässige API-Methoden:
    • SecurityPolicies insert
    • SecurityPolicies delete
    • SecurityPolicies patch
    • SecurityPolicies addRule
    • SecurityPolicies patchRule
    • SecurityPolicies removeRule

Ein Nutzer mit der Rolle "Compute-Netzwerkadministrator" (roles/compute.networkAdmin) kann die folgenden Vorgänge ausführen:

  • Google Cloud Armor-Sicherheitsrichtlinie für einen Back-End-Dienst festlegen
  • Zulässige API-Methoden:
    • BackendServices setSecurityPolicy

Nutzer mit den Rollen "Sicherheitsadministrator" und "Netzwerkadministrator" können sich die Google Cloud Armor-Sicherheitsrichtlinien mithilfe der API-Methoden SecurityPolicies get, list und getRule ansehen.

IAM-Berechtigungen für benutzerdefinierte Rollen einrichten

In der folgenden Tabelle sind die grundlegenden Berechtigungen der IAM-Rollen und die zugehörigen API-Methoden aufgeführt.

IAM-Berechtigung API-Methoden
compute.securityPolicies.create SecurityPolicies insert
compute.securityPolicies.delete SecurityPolicies delete
compute.securityPolicies.get SecurityPolicies get
SecurityPolicies getRule
compute.securityPolicies.list SecurityPolicies list
compute.securityPolicies.use BackendServices setSecurityPolicy
compute.securityPolicies.update SecurityPolicies patch
SecurityPolicies addRule
SecurityPolicies patchRule
SecurityPolicies removeRule
compute.backendServices.setSecurityPolicy BackendServices setSecurityPolicy

Sicherheitsrichtlinien für HTTP(S)-Load-Balancing konfigurieren

Im Folgenden sind die allgemeinen Schritte zum Konfigurieren von Google Cloud Armor-Sicherheitsrichtlinien beschrieben, um Regeln zu aktivieren, die Traffic zu externen HTTP(S)-Load-Balancern zulassen oder ablehnen:

  1. Erstellen Sie eine Google Cloud Armor-Sicherheitsrichtlinie.
  2. Fügen Sie der Sicherheitsrichtlinie Regeln basierend auf IP-Adresslisten, benutzerdefinierten Ausdrücken oder vordefinierten Ausdruckssätzen hinzu.
  3. Hängen Sie die Sicherheitsrichtlinie an einen Back-End-Dienst des externen HTTP(S)-Load-Balancers an, für den Sie den Zugriff steuern möchten.
  4. Aktualisieren Sie die Sicherheitsrichtlinie nach Bedarf.

Im folgenden Beispiel erstellen Sie zwei Google Cloud Armor-Sicherheitsrichtlinien und wenden sie auf verschiedene Back-End-Dienste an.

Grafik: Beispiel, in dem zwei Sicherheitsrichtlinien auf verschiedene Back-End-Dienste angewendet werden.
Beispiel, in dem zwei Sicherheitsrichtlinien auf verschiedene Back-End-Dienste angewendet werden (zum Vergrößern klicken)

In diesem Beispiel sind dies die Google Cloud Armor-Sicherheitsrichtlinien:

  • mobile-clients-policy gilt für externe Nutzer Ihrer games Dienste.
  • internal-users-policy gilt für das test-network-Team Ihrer Organisation.

Sie wenden mobile-clients-policy auf den games-Dienst an, dessen Back-End-Dienst games heißt, und Sie wenden internal-users-policy auf den internen test-Dienst für das Testteam an, dessen entsprechender Back-End-Dienst test-networkheißt.

Befinden sich die Back-End-Instanzen für einen Back-End-Dienst in mehreren Regionen, gilt die mit dem Dienst verknüpfte Google Cloud Armor-Sicherheitsrichtlinie für Instanzen in allen Regionen. Im obigen Beispiel gilt die Sicherheitsrichtlinie mobile-clients-policy für die Instanzen 1, 2, 3 und 4 in us-central und für die Instanzen 5 und 6 in us-east.

Beispiel erstellen

Erstellen Sie anhand der folgenden Anleitung die Beispielkonfiguration aus dem vorherigen Abschnitt.

Console

Konfigurieren Sie die Sicherheitsrichtlinie für externe Nutzer:

  1. Rufen Sie in der Google Cloud Console die Seite Netzwerksicherheit auf.

    Netzwerksicherheit aufrufen

  2. Klicken Sie auf der Seite Richtlinien auf Richtlinie erstellen.

  3. Geben Sie im Feld Name mobile-clients-policy ein.

  4. Geben Sie im Feld Beschreibung den Text Policy for external users ein.

  5. Wählen Sie als Standardregel die Option Ablehnen aus.

  6. Wählen Sie für den Status "Abgelehnt" die Option 404 (Nicht gefunden) aus.

  7. Klicken Sie auf Next step (Nächster Schritt).

So fügen Sie weitere Regeln hinzu:

  1. Klicken Sie auf Regel hinzufügen.
  2. Geben Sie im Feld Beschreibung den Text allow traffic from 192.0.2.0/24 ein.
  3. Wählen Sie als Modus die Option Standardmodus (nur IP-Adressen bzw. -Bereiche) aus.
  4. Geben Sie im Feld Übereinstimmung den Wert 192.0.2.0/24 ein.
  5. Wählen Sie unter Aktion die Option Zulassen aus.
  6. Geben Sie in das Feld für die Priorität den Wert 1000 ein.
  7. Klicken Sie auf Fertig.
  8. Klicken Sie auf Next step (Nächster Schritt).

Wenden Sie die Richtlinie auf Ziele an:

  1. Klicken Sie auf Ziel hinzufügen.
  2. Wählen Sie in der Liste Ziel ein Ziel aus.
  3. Klicken Sie auf Fertig.
  4. Klicken Sie auf Richtlinie erstellen.

Aktivieren Sie optional Adaptive Protection:

  1. Klicken Sie das Kästchen Aktivieren an, um Adaptive Protection zu aktivieren.

Konfigurieren Sie die Sicherheitsrichtlinie für interne Nutzer:

  1. Klicken Sie auf der Seite Richtlinien auf Richtlinie erstellen.
  2. Geben Sie im Feld Name internal-users-policy ein.
  3. Geben Sie im Feld Beschreibung den Text Policy for internal test users ein.
  4. Wählen Sie als Standardregel die Option Ablehnen aus.
  5. Wählen Sie für den Status "Abgelehnt" die Option 502 (Fehlerhaftes Gateway) aus.
  6. Klicken Sie auf Next step (Nächster Schritt).

So fügen Sie weitere Regeln hinzu:

  1. Klicken Sie auf Regel hinzufügen.
  2. Geben Sie im Feld Beschreibung den Text allow traffic from 198.51.100.0/24 ein.
  3. Wählen Sie als Modus die Option Standardmodus (nur IP-Adressen bzw. -Bereiche) aus.
  4. Geben Sie im Feld Übereinstimmung den Wert 198.51.100.0/24 ein.
  5. Wählen Sie unter Aktion die Option Zulassen aus.
  6. Klicken Sie unter Nur Vorschau das Kästchen Aktivieren an.
  7. Geben Sie in das Feld für die Priorität den Wert 1000 ein.
  8. Klicken Sie auf Fertig.
  9. Klicken Sie auf Next step (Nächster Schritt).

Wenden Sie die Richtlinie auf Ziele an:

  1. Klicken Sie auf Ziel hinzufügen.
  2. Wählen Sie in der Liste Ziel ein Ziel aus.
  3. Klicken Sie auf Fertig.
  4. Klicken Sie auf Richtlinie erstellen.

gcloud

  1. Erstellen Sie die Google Cloud Armor-Sicherheitsrichtlinien:

    gcloud compute security-policies create mobile-clients-policy \
        --description "policy for external users"
    
    gcloud compute security-policies create internal-users-policy \
        --description "policy for internal test users"
    
  2. Aktualisieren Sie die Standardregeln in den Sicherheitsrichtlinien, um Traffic abzulehnen:

    gcloud compute security-policies rules update 2147483647 \
        --security-policy mobile-clients-policy \
        --action "deny-404"
    
    gcloud compute security-policies rules update 2147483647 \
        --security-policy internal-users-policy \
        --action "deny-502"
    
  3. Fügen Sie den Sicherheitsrichtlinien Regeln hinzu:

    gcloud compute security-policies rules create 1000 \
        --security-policy mobile-clients-policy \
        --description "allow traffic from 192.0.2.0/24" \
        --src-ip-ranges "192.0.2.0/24" \
        --action "allow"
    
    gcloud compute security-policies rules create 1000 \
        --security-policy internal-users-policy \
        --description "allow traffic from 198.51.100.0/24" \
        --src-ip-ranges "198.51.100.0/24" \
        --action "allow"
    
  4. Hängen Sie die Sicherheitsrichtlinien an die Back-End-Dienste an:

    gcloud compute backend-services update games \
        --security-policy mobile-clients-policy
    
    gcloud compute backend-services update test-network \
        --security-policy internal-users-policy
    
  5. Aktivieren Sie optional Adaptive Protection:

    gcloud compute security-policies update mobile-clients-policy \
       --enable-layer7-ddos-defense
    
    gcloud compute security-policies update internal-users-policy \
       --enable-layer7-ddos-defense
    

Sicherheitsrichtlinien, Regeln und Ausdrücke konfigurieren

Sie können Sicherheitsrichtlinien, Regeln und Ausdrücke für Google Cloud Armor mithilfe der Google Cloud Console, des gcloud-Befehlszeilentools oder der REST API konfigurieren.

Sicherheitsrichtlinien testen

Es wird empfohlen, alle neuen Regeln im Vorschaumodus bereitzustellen. Prüfen Sie dann mithilfe der Anfragelogs, ob die Richtlinien und Regeln wie erwartet funktionieren.

Beispielausdrücke

Im Folgenden finden Sie Beispielausdrücke. Weitere Informationen zu Ausdrücken finden Sie in der Referenz zu benutzerdefinierten Regeln für Google Cloud Armor.

Wenn Sie eine Regel oder einen Ausdruck konfigurieren, die bzw. der die Länder- oder Regionscodes im Format ISO 3166-1 alpha 2 verwendet, behandelt Google Cloud Armor jeden Code unabhängig. Die Regeln und Ausdrücke von Google Cloud Armor verwenden diese Regionscodes explizit, um Anfragen zuzulassen oder abzulehnen.

  • Der folgende Ausdruck stimmt mit Anfragen von der IP-Adresse 1.2.3.4 überein und enthält den String Godzilla im user-agent-Header:

    inIpRange(origin.ip, '1.2.3.4/32') && has(request.headers['user-agent']) && request.headers['user-agent'].contains('Godzilla')
    
  • Der folgende Ausdruck stimmt mit Anfragen überein, die ein Cookie mit einem bestimmten Wert enthalten:

    has(request.headers['cookie']) && request.headers['cookie'].contains('cookie_name=cookie_value')
    
  • Der folgende Ausdruck stimmt mit Anfragen aus der Region AU überein:

    origin.region_code == 'AU'
    
  • Der folgende Ausdruck stimmt mit Anfragen aus der Region AU überein, die nicht im angegebenen IP-Bereich liegen:

    origin.region_code == "AU" && !inIpRange(origin.ip, '1.2.3.0/24')
    
  • Der folgende Ausdruck stimmt mit Anfragen überein, wenn der URI mit einem regulären Ausdruck übereinstimmt:

    request.path.matches('/bad_path/')
    
  • Der folgende Ausdruck stimmt mit Anfragen überein, wenn der Base64-decodierte Wert des user-id-Headers einen bestimmten Wert enthält:

    has(request.headers['user-id']) && request.headers['user-id'].base64Decode().contains('myValue')
    
  • Der folgende Ausdruck verwendet einen vorkonfigurierten Ausdruckssatzabgleich gegen SQLi-Angriffe:

    evaluatePreconfiguredExpr('sqli-stable')
    

JSON-Parsing verwenden

Sie können das Parsen des JSON-Textinhalts von POST-Anfragen für jede Sicherheitsrichtlinie aktivieren oder deaktivieren. Wenn der Header Content-Type auf application/json gesetzt ist, verwenden Sie das Flag --json-parsing im gcloud-Befehlszeilentool.

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

--json-parsing=[STANDARD | 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.

Weitere Informationen zum JSON-Parsing finden Sie unter JSON-Parsing und ausführliches Logging.

Ausführliches Logging verwenden

Sie können die Logging-Ebene von Google Cloud Armor so konfigurieren, dass für jede Sicherheitsrichtlinie mit dem Flag --log-level im gcloud-Tool ein detaillierteres Logging möglich ist.

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

--log-level=[NORMAL | VERBOSE]

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.

Weitere Informationen zum ausführlichen Logging finden Sie unter JSON-Parsing und ausführliches Logging.

Regeln für die Ratenbegrenzung konfigurieren

Dieser Abschnitt enthält Informationen zum Konfigurieren von Google Cloud Armor-Regeln, um clientspezifische Ratenbegrenzungen durch Konfigurieren einer Drosselungs- oder ratenbasierten Sperraktion zu erzwingen.

Regeln für ratenbasierte Drosselung

Regeln für die ratenbasierte Drosselung haben das folgende Format im gcloud-Tool:

gcloud beta compute security-policies rules create PRIORITY
   --security-policy=SECURITY_POLICY
   (--expression=EXPRESSION | --src-ip-ranges=SRC_IP_RANGE)
   --action "throttle"
   --rate-limit-threshold-count=RATE_LIMIT_THRESHOLD_COUNT
   --rate-limit-threshold-interval-sec=RATE_LIMIT_THRESHOLD_INTERVAL_SEC
   --conform-action=[allow]
   --exceed-action=[deny-403|deny-404|deny-429|deny-502]
   --enforce-on-key=[IP | ALL | HTTP-HEADER | XFF-IP]
   --enforce-on-key-name=HTTP_HEADER_NAME

Mit dem folgenden gcloud-Befehl wird beispielsweise eine throttle-Regel mit der Priorität 105 und einer Ratenbegrenzung von 100 Anfragen pro 60 Sekunden für jede IP-Adresse in 1.2.3.0/24 erstellt. Anfragen, die das Drosselungslimit überschreiten, geben den Fehlercode 429 zurück.

gcloud beta compute security-policies rules create 105 \
    --security-policy sec-policy     \
    --src-ip-ranges="1.2.3.0/24"     \
    --action=throttle                \
    --rate-limit-threshold-count=100 \
    --rate-limit-threshold-interval-sec=60 \
    --conform-action=allow           \
    --exceed-action=deny-429         \
    --enforce-on-key=IP

Beispiel: gcloud erstellt eine throttle-Regel mit Priorität 110 und einer Ratenbegrenzung von 10 Anfragen pro 60 Sekunden für jeden eindeutigen Wert des HTTP-Headers User-Agent für alle Anfragen, die von IP-Adressen in 1.2.3.0/24 stammen. Anfragen, die das Drosselungslimit überschreiten, geben den Fehlercode 429 zurück.

gcloud beta compute security-policies rules create 110 \
    --security-policy sec-policy     \
    --src-ip-ranges="1.2.3.0/24"     \
    --action=throttle                \
    --rate-limit-threshold-count=10 \
    --rate-limit-threshold-interval-sec=60 \
    --conform-action=allow           \
    --exceed-action=deny-429         \
    --enforce-on-key=HTTP-HEADER \
    --enforce-on-key-name='User-Agent'

Regeln für ratenbasierte Sperren

Regeln für ratenbasierte Sperren haben im gcloud-Tool folgendes Format:

gcloud beta compute security-policies rules create PRIORITY \
     --security-policy=SECURITY_POLICY \
     (--expression=EXPRESSION | --src-ip-ranges=SRC_IP_RANGE) \
     --action "rate-based-ban" \
     --rate-limit-threshold-count=RATE_LIMIT_THRESHOLD_COUNT \
     --rate-limit-threshold-interval-sec=RATE_LIMIT_THRESHOLD_INTERVAL_SEC \
     --ban-duration-sec=BAN_DURATION_SEC \
     --ban-threshold-count=BAN_THRESHOLD_COUNT \
     --ban-threshold-interval-sec=BAN_THRESHOLD_INTERVAL_SEC \
     --conform-action=[allow] \
     --exceed-action=[deny-403|deny-404|deny-429|deny-502] \
     --enforce-on-key=[IP|ALL|HTTP-HEADER|XFF-IP] \
     --enforce-on-key-name=HTTP_HEADER_NAME

Der folgende gcloud-Befehl erstellt beispielsweise eine ratenbasierte Sperrregel mit der Priorität 100 für jede IP-Adresse, deren Anfragen einem fish-Header mit dem Wert tuna entsprechen, und sperrt sie für 300 Sekunden, wenn ihre Rate ein Limit von 50 Anfragen pro 120 Sekunden überschreitet. Gesperrte Anfragen geben den Fehlercode 404 zurück.

gcloud beta compute security-policies rules create 100 \
    --security-policy=sec-policy     \
    --expression="request.headers['fish'] == 'tuna'" \
    --action=rate-based-ban                   \
    --rate-limit-threshold-count=50           \
    --rate-limit-threshold-interval-sec=120   \
    --ban-duration-sec=300           \
    --conform-action=allow           \
    --exceed-action=deny-404         \
    --enforce-on-key=IP

Der folgende gcloud-Befehl erstellt beispielsweise eine ratenbasierte Sperrregel mit der Priorität 101, um alle Anfragen mit dem Regionscode US auf 10 Anfragen pro 60 Sekunden zu begrenzen. Die Regel sperrt außerdem Anfragen aus der Region US für 300 Sekunden, wenn ihre Rate ein Limit von 1.000 Anfragen pro 600 Sekunden überschreitet. Gesperrte Anfragen geben den Fehlercode 403 zurück.

 gcloud beta compute security-policies rules create 101 \
    --security-policy sec-policy     \
    --expression "origin.region_code == 'US'" \
    --action rate-based-ban                 \
    --rate-limit-threshold-count 10         \
    --rate-limit-threshold-interval-sec 60  \
    --ban-duration-sec 300           \
    --ban-threshold-count 1000       \
    --ban-threshold-interval-sec 600 \
    --conform-action allow           \
    --exceed-action deny-403         \
    --enforce-on-key ALL

Mit der Cloud Console und dem gcloud-Tool Sicherheitsrichtlinien erstellen

Bei den Anleitungen in diesem Abschnitt wird davon ausgegangen, dass Sie Sicherheitsrichtlinien konfigurieren, die auf einen vorhandenen externen HTTP(S)-Load-Balancer und Back-End-Dienst angewendet werden sollen. Ein Beispiel zum Ausfüllen der Felder finden Sie unter Beispiel erstellen.

Console

Erstellen Sie Google Cloud Armor-Sicherheitsrichtlinien und -regeln und hängen Sie eine Sicherheitsrichtlinie an einen Back-End-Dienst an:

  1. Rufen Sie in der Google Cloud Console die Seite Netzwerksicherheit auf.

    Netzwerksicherheit aufrufen

  2. Klicken Sie auf der Seite Richtlinien auf Richtlinie erstellen.

  3. Geben Sie im Feld Name den Namen Ihrer Richtlinie ein.

  4. Optional: Geben Sie eine Beschreibung der Richtlinie ein.

  5. Wählen Sie als Aktion der Standardregel Zulassen für eine Standardregel aus, die den Zugriff erlaubt, oder Ablehnen für eine Standardregel, die den Zugriff auf eine IP-Adresse oder einen IP-Adressbereich ablehnt.

    Die Standardregel ist die Regel mit der niedrigsten Priorität, die nur dann wirksam wird, wenn keine andere Regel zutrifft.

  6. Wenn Sie eine Ablehnungsregel konfigurieren, wählen Sie Status "Abgelehnt" aus. Dies ist die Fehlermeldung, die Google Cloud Armor anzeigt, wenn ein Nutzer ohne Zugang versucht, Zugriff zu erhalten.

  7. Klicken Sie unabhängig von der Art der Regel, die Sie konfigurieren, auf Nächster Schritt.

So fügen Sie weitere Regeln hinzu:

  1. Klicken Sie auf Regel hinzufügen.
  2. Optional: Geben Sie eine Beschreibung für die Regel ein.
  3. Wählen Sie den Modus aus:

    • Basis-Modus: Zulassen oder Ablehnen von Traffic basierend auf IP-Adressen oder -Bereichen.
    • Erweiterter Modus: Zulassen oder Ablehnen von Traffic basierend auf Regelausdrücken.
  4. Geben Sie im Feld Abgleich die Bedingungen an, unter denen die Regel angewendet wird.

    • Basis-Modus: Geben Sie die IP-Adressen oder -Bereiche ein, die in der Regel übereinstimmen sollen.
    • Erweiterter Modus: Geben Sie einen Ausdruck oder Unterausdrücke ein, um sie anhand eingehender Anfragen auszuwerten. Informationen zum Schreiben der Ausdrücke finden Sie in der Sprachreferenz für benutzerdefinierte Regeln.
  5. Wählen Sie als Aktion Zulassen oder Ablehnen aus, um Traffic zuzulassen oder abzulehnen, wenn die Regel übereinstimmt.

  6. Klicken Sie das Kästchen Aktivieren an, um den Vorschaumodus zu aktivieren. Im Vorschaumodus können Sie sehen, wie sich die Regel verhält. Sie ist jedoch nicht aktiviert.

  7. Geben Sie die Priorität der Regel ein. Dies kann eine beliebige positive Ganzzahl von 0 bis 2.147.483.646 sein. Weitere Informationen zur Auswertungsreihenfolge finden Sie unter Regelauswertungsreihenfolge.

  8. Klicken Sie auf Fertig.

  9. Wenn Sie weitere Regeln hinzufügen möchten, klicken Sie auf Regel hinzufügen und wiederholen Sie die vorherigen Schritte. Klicken Sie andernfalls auf Nächster Schritt.

Wenden Sie die Richtlinie auf Ziele an:

  1. Klicken Sie auf Ziel hinzufügen.
  2. Wählen Sie in der Liste Ziel ein Ziel aus.
  3. Wenn Sie weitere Ziele hinzufügen möchten, klicken Sie auf Ziel hinzufügen.
  4. Klicken Sie auf Fertig.
  5. Klicken Sie auf Richtlinie erstellen.

gcloud

  1. Eine neue Google Cloud Armor-Sicherheitsrichtlinie erstellen Sie mit dem Befehl gcloud compute security-policies create. Ersetzen Sie NAME und DESCRIPTION durch den Namen und die Beschreibung der Sicherheitsrichtlinie:

    gcloud compute security-policies create NAME \
       [--file-format=FILE_FORMAT | --description=DESCRIPTION] \
       [--file-name=FILE_NAME]
    
    

    Mit dem folgenden Befehl wird eine zuvor erstellte Richtlinie aktualisiert, das JSON-Parsen aktiviert und die Logging-Ebene in VERBOSE geändert:

    gcloud compute security-policies update my-policy 
    --json-parsing=STANDARD --log-level=VERBOSE

  2. Verwenden Sie den Befehl gcloud compute security-policies rules create PRIORITY, um einer Sicherheitsrichtlinie Regeln hinzuzufügen. Ersetzen Sie PRIORITY durch die der Regel in der Richtlinie zugewiesene Priorität. Informationen zur Funktionsweise der Regelpriorität finden Sie unter Regelauswertungsreihenfolge.

    gcloud compute security-policies rules create PRIORITY  \
       [--security-policy POLICY_NAME] \
       [--description DESCRIPTION] \
        --src-ip-ranges IP_RANGE,... | --expression EXPRESSION \
        --action=[ allow | deny-403 | deny-404 | deny-502 ]  \
       [--preview]
    

    Der folgende Befehl fügt beispielsweise eine Regel hinzu, mit der Traffic von den IP-Adressbereichen 192.0.2.0/24 und 198.51.100.0/24 blockiert wird. Die Regel hat die Priorität 1.000 und ist eine Regel in der Richtlinie my-policy.

    gcloud compute security-policies rules create 1000 \
        --security-policy my-policy \
        --description "block traffic from 192.0.2.0/24 and 198.51.100.0/24" \
        --src-ip-ranges "192.0.2.0/24","198.51.100.0/24" \
        --action "deny-403"
    

    Wenn das Flag --preview hinzugefügt wird, wird die Regel zur Richtlinie hinzugefügt, aber nicht erzwungen, und der Traffic, der die Regel auslöst, wird nur in Logs erfasst.

    gcloud compute security-policies rules create 1000 \
        --security-policy my-policy \
        --description "block traffic from 192.0.2.0/24 and 198.51.100.0/24" \
        --src-ip-ranges "192.0.2.0/24","198.51.100.0/24" \
        --action "deny-403" \
        --preview
    

    Verwenden Sie das Flag --expression, um in der Sprachreferenz für benutzerdefinierte Regeln eine benutzerdefinierte Bedingung anzugeben. Der folgende Befehl fügt eine Regel hinzu, die Traffic von der IP-Adresse 1.2.3.4 zulässt, und enthält den String Godzilla im user-agent-Header:

    gcloud compute security-policies rules create 1000 \
        --security-policy my-policy \
        --expression "inIpRange(origin.ip, '1.2.3.4/32') && has(request.headers['user-agent']) && request.headers['user-agent'].contains('Godzilla')" \
        --action allow \
        --description "Block User-Agent 'Godzilla'"
    

    Der folgende Befehl fügt eine Regel zum Blockieren von Anfragen hinzu, wenn das Cookie der Anfrage einen bestimmten Wert enthält:

    gcloud compute security-policies rules create 1000 \
        --security-policy my-policy \
        --expression "has(request.headers['cookie']) && request.headers['cookie'].contains('cookie_name=cookie_value')" \
        --action "deny-403" \
        --description "Cookie Block"
    

    Der folgende Befehl fügt eine Regel hinzu, um Anfragen aus der Region AU zu blockieren:

    gcloud compute security-policies rules create 1000 \
        --security-policy my-policy \
        --expression "origin.region_code == 'AU'" \
        --action "deny-403" \
        --description "AU block"
    

    Der folgende Befehl fügt eine Regel hinzu, um Anfragen aus der Region AU zu blockieren, die nicht im angegebenen IP-Bereich liegen:

    gcloud compute security-policies rules create 1000 \
        --security-policy my-policy \
        --expression "origin.region_code == 'AU' && !inIpRange(origin.ip, '1.2.3.0/24')" \
        --action "deny-403" \
        --description "country and IP block"
    

    Der folgende Befehl fügt eine Regel hinzu, um Anfragen mit einem URI zu blockieren, der einem regulären Ausdruck entspricht:

    gcloud compute security-policies rules create 1000 \
        --security-policy my-policy \
        --expression "request.path.matches('/bad_path/)')" \
        --action "deny-403" \
        --description "regex block"
    

    Der folgende Befehl fügt eine Regel zum Blockieren von Anfragen hinzu, wenn der Base64-decodierte Wert des Headers user-id einen bestimmten Wert enthält:

    gcloud compute security-policies rules create 1000 \
        --security-policy my-policy \
        --expression "has(request.headers['user-id']) && request.headers['user-id'].base64Decode().contains('myValue')" \
        --action "deny-403" \
        --description "country and IP block"
    

    Der folgende Befehl fügt eine Regel hinzu, die einen vorkonfigurierten Ausdruck verwendet, um SQLi-Angriffe abzuwenden:

    gcloud compute security-policies rules create 1000 \
        --security-policy my-policy \
        --expression "evaluatePreconfiguredExpr('sqli-stable')" \
        --action "deny-403"
    

    Der folgende Befehl fügt eine Regel hinzu, die einen vorkonfigurierten Ausdruck verwendet, um den Zugriff von allen IP-Adressen in einer Liste mit benannten IP-Adressen zuzulassen:

    gcloud compute security-policies rules create 1000 \
        --security-policy my-policy \
        --expression "evaluatePreconfiguredExpr('sourceiplist-fastly')" \
        --action "allow"
    

Regeln für die Bot-Verwaltung konfigurieren

Dieser Abschnitt enthält Informationen zum Konfigurieren der Sicherheitsrichtlinienregeln von Google Cloud Armor für die Bot-Verwaltung. Weitere Informationen finden Sie in der Übersicht über die Bot-Verwaltung.

Mit der manuelle Identitätsbestätigung zwischen menschlichen und automatisierten Clients unterscheiden

Um eine Regel zum internen Weiterleiten von Traffic für die reCAPTCHA Enterprise-Prüfung zu erstellen, verwenden Sie folgendes Format in gcloud:

  gcloud beta compute security-policies rules create PRIORITY 
--security-policy SECURITY_POLICY
(--expression EXPRESSION | --src-ip-ranges SRC_IP_RANGE)
--action redirect
--redirect-type google-recaptcha

Im folgenden Beispiel wird eine Regel erstellt, die Traffic weiterleitet, der /login.html für die reCAPTCHA Enterprise-Prüfung zu erreichen versucht.

  gcloud beta compute security-policies rules create 1000 
--security-policy my-policy
--expression "request.path.matches("/login.html")"
--action redirect
--redirect-type google-recaptcha

reCAPTCHA Enterprise-Prüfung erzwingen

Bevor Sie fortfahren, lesen Sie sich in der Übersicht über die Bot-Verwaltung die Voraussetzungen zur Verwendung von reCAPTCHA Enterprise-Aktions- oder Sitzungs-Tokens durch. Zusätzlich zu den Standardanforderungen für die Konfiguration von Sicherheitsrichtlinien müssen Sie zur Einbettung in reCAPTCHA Enterprise die reCAPTCHA Enterprise API aktivieren.

Sie können token.recaptcha.xxx in der Sprache der Google Cloud Armor-Regeln verwenden, um Attribute aus einem reCAPTCHA Enterprise-Token zu extrahieren. Weitere Informationen zur Syntax der verfügbaren reCAPTCHA Enterprise-Tokenattribute finden Sie in der Sprachreferenz für Regeln.

Im folgenden Beispiel wird eine Regel erstellt, die Traffic zu /login.html mit einer reCAPTCHA Enterprise-Punktzahl von mindestens 0.8 zulässt.

  gcloud beta compute security-policies rules create 1000 
--security-policy my-policy
--expression "request.path.matches("/login.html") && token.recaptcha.score >= 0.8"
--action allow

Weiterleitung (302-Antwort)

Verwenden Sie folgendes Format in gcloud, um eine Regel zum Weiterleiten des Traffics an eine vom Nutzer konfigurierte URL zu erstellen.

  gcloud beta compute security-policies rules create PRIORITY 
--security-policy SECURITY_POLICY
(--expression EXPRESSION | --src-ip-ranges SRC_IP_RANGE)
--action redirect
--redirect-type external-302
--redirect-target REDIRECT_URL

Im folgenden Beispiel wird eine Regel erstellt, die den Traffic von 10.10.10.0/24 an https://www.example.com weiterleitet.

  gcloud beta compute security-policies rules create 1000 
--security-policy my-policy
--src-ip-ranges "10.10.10.0/24"
--action redirect
--redirect-type external-302
--redirect-target "https://www.example.com"

Anfrage gestalten

Verwenden Sie folgendes Format in gcloud, um eine Regel zu erstellen, die Traffic zulässt, aber benutzerdefinierte Header hinzufügt, bevor diese an geschützte Back-Ends geproxyd wird:

  gcloud beta compute security-policies rules create PRIORITY 
--security-policy SECURITY_POLICY
(--expression EXPRESSION | --src-ip-ranges SRC_IP_RANGE)
--action allow
--request-headers-to-add HEADER_1=VALUE_1,HEADER_2=VALUE_2,...

Im folgenden Beispiel wird eine Regel erstellt, die einen benutzerdefinierten Header für die Traffic-Ausrichtung für /login.html mit einer reCAPTCHA Enterprise-Punktzahl von weniger als 0.2 hinzufügt.

  gcloud beta compute security-policies rules create 1000 
--security-policy my-policy
--expression "request.path.matches("/login.html") && token.recaptcha.score < 0.2"
--action allow
--request-headers-to-add "reCAPTCHA-Warning=high"

Adaptive Protection verwenden

Adaptive Protection wird pro Sicherheitsrichtlinie aktiviert.

Console

So aktivieren Sie Adaptive Protection für eine Sicherheitsrichtlinie:

  1. Rufen Sie in der Google Cloud Console die Seite Netzwerksicherheit auf.

    Netzwerksicherheit aufrufen

  2. Klicken Sie auf der Seite Richtlinien auf den Namen einer Sicherheitsrichtlinie.

  3. Klicken Sie auf Bearbeiten.

  4. Wählen Sie unter Adaptive Protection die Option Aktivieren aus.

  5. Klicken Sie auf Aktualisieren.

So deaktivieren Sie Adaptive Protection für eine Sicherheitsrichtlinie:

  1. Rufen Sie in der Google Cloud Console die Seite Netzwerksicherheit auf.

    Netzwerksicherheit aufrufen

  2. Klicken Sie auf der Seite Richtlinien auf den Namen einer Sicherheitsrichtlinie.

  3. Klicken Sie auf Bearbeiten.

  4. Heben Sie unter Adaptive Protection die Option Aktivieren auf.

  5. Klicken Sie auf Aktualisieren.

gcloud

So aktivieren Sie Adaptive Protection für eine Sicherheitsrichtlinie:

gcloud compute security-policies update MY-SECURITY-POLICY \
   --enable-layer7-ddos-defense

So deaktivieren Sie Adaptive Protection für eine Sicherheitsrichtlinie:

gcloud compute security-policies update MY-SECURITY-POLICY \
   --no-enable-layer7-ddos-defense

Verfügbare vorkonfigurierte Regeln auflisten

Listen Sie vorkonfigurierte Regeln auf, um die vordefinierten Anwendungsschutzregeln und -signaturen wie das von Google Cloud Armor bereitgestellte ModSecurity Core Rule Set anzeigen zu lassen. Diese vorkonfigurierten Regeln enthalten mehrere integrierte Signaturen, mit denen Google Cloud Armor eingehende Anfragen auswertet. Sie können diese vorkonfigurierten Regeln mithilfe der Sprachreferenz für benutzerdefinierte Regeln neuen oder vorhandenen Regeln hinzufügen.

Weitere Informationen finden Sie unter Vorkonfigurierte Regeln.

gcloud

  1. Führen Sie den Befehl gcloud compute security-policies list-preconfigured-expression-sets aus:

    gcloud compute security-policies list-preconfigured-expression-sets
    

    Das folgende Beispiel zeigt die Form der Befehlsausgabe:

    EXPRESSION_SET
    expression-set-1
       RULE_ID
       expression-set-1-id-1
       expression-set-1-id-2
    expression-set-2
       alias-1
       RULE_ID
       expression-set-2-id-1
       expression-set-2-id-2
    

    Das folgende Beispiel enthält ein Beispiel der tatsächlichen Befehlsausgabe. Beachten Sie, dass die tatsächliche Ausgabe alle Regeln enthält, die unter Google Cloud Armor-WaF-Regeln abstimmen aufgeführt sind.

    gcloud compute security-policies list-preconfigured-expression-sets
    
    EXPRESSION_SET
    sqli-canary
        RULE_ID
        owasp-crs-v030001-id942110-sqli
        owasp-crs-v030001-id942120-sqli
        …
    xss-canary
        RULE_ID
        owasp-crs-v030001-id941110-xss
        owasp-crs-v030001-id941120-xss
    …
    sourceiplist-fastly
    sourceiplist-cloudflare
    sourceiplist-imperva
    

Sicherheitsrichtlinien auflisten

Folgen Sie dieser Anleitung, um alle Google Cloud Armor-Sicherheitsrichtlinien im aktuellen Projekt oder in einem von Ihnen angegebenen Projekt aufzulisten.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Netzwerksicherheit auf.

    Netzwerksicherheit aufrufen

  2. Wenn Sie eine bestimmte Richtlinie aufrufen möchten, klicken Sie auf der Seite Sicherheitsrichtlinien in der Liste der Richtlinien auf den Namen.

gcloud

gcloud compute security-policies list

Beispiel:

gcloud compute security-policies list
NAME
my-policy

Weitere Informationen finden Sie unter gcloud compute security-policies list.

Sicherheitsrichtlinien aktualisieren

So aktualisieren Sie eine Google Cloud Armor-Sicherheitsrichtlinie: Sie können beispielsweise die Beschreibung der Richtlinie, das Verhalten der Standardregel und den Ziel-Back-End-Dienst ändern sowie neue Regeln hinzufügen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Netzwerksicherheit auf.

    Netzwerksicherheit aufrufen

  2. Wenn Sie eine bestimmte Richtlinie aktualisieren möchten, klicken Sie auf der Seite Sicherheitsrichtlinien in der Liste der Richtlinien bei der Richtlinie, die Sie aktualisieren möchten, auf das Menü.

    • Wählen Sie Bearbeiten aus, nehmen Sie die gewünschten Änderungen vor und klicken Sie anschließend auf Aktualisieren, um die Richtlinienbeschreibung der Standardregelaktion zu aktualisieren.
    • Wählen Sie zum Hinzufügen einer Regel Regel hinzufügen aus und folgen Sie dann der Anleitung unter Regeln zu einer Sicherheitsrichtlinie hinzufügen.
    • Wählen Sie zum Ändern des Ziel-Back-End-Dienstes für die RichtlinieRichtlinie auf Ziel anwenden aus, klicken Sie auf Ziel hinzufügen, wählen Sie ein Ziel aus und klicken Sie anschließend auf Hinzufügen.

gcloud

Aktualisieren Sie eine Sicherheitsrichtlinie mit den folgenden Anleitungen für das gcloud-Befehlszeilentool:

Sicherheitsrichtlinien exportieren

Mit dem gcloud-Befehlszeilentool können Sie eine Google Cloud Armor-Sicherheitsrichtlinie als YAML- oder JSON-Datei exportieren. Durch das Exportieren einer Richtlinie können Sie eine Kopie von ihr abrufen, die Sie in der Versionsverwaltung ändern oder speichern können.

gcloud

  1. Im folgenden Befehl ist NAME der Name der Sicherheitsrichtlinie. Gültige Dateiformate sind YAML und JSON. Wenn Sie das Dateiformat nicht angeben, verwendet Google Cloud Armor das Standardformat YAML.

    gcloud compute security-policies export NAME \
        --file-name FILE_NAME  \
        --file-format FILE_FORMAT
    

    Im folgenden Beispiel wird die Sicherheitsrichtlinie my-policy in die Datei my-file im YAML-Format exportiert:

    gcloud compute security-policies export my-policy \
        --file-name my-file \
        --file-format yaml
     

    Das folgende Beispiel zeigt eine exportierte Sicherheitsrichtlinie:

    description: my description
    fingerprint: PWfLGDWQDLY=
    id: '123'
    name: my-policy
    rules:
    - action: allow
      description: default rule
      match:
          config:
            srcIpRanges:
            - '*'
          versionedExpr: SRC_IPS_V1
        preview: false
        priority: 2147483647
      selfLink: https://www.googleapis.com/compute/v1/projects/my-project/global/securityPolicies/my-policy
      
  2. Sie können die exportierte Datei mit einem beliebigen Texteditor ändern und sie dann mit dem Befehl import wieder in Google Cloud importieren.

Sicherheitsrichtlinien importieren

Mit dem gcloud-Befehlszeilentool können Sie Google Cloud Armor-Sicherheitsrichtlinien als YAML- oder JSON-Datei importieren. Mit dem Befehl import können Sie nicht die Regeln einer vorhandenen Richtlinie aktualisieren. Stattdessen müssen Sie sie nacheinander mithilfe des Verfahrens Einzelne Regel in einer Sicherheitsrichtlinie aktualisieren aktualisieren. Wenn Sie alle Regeln gleichzeitig aktualisieren möchten, nutzen Sie die Methode Mehrere Regeln in einer Sicherheitsrichtlinie atomar aktualisieren.

gcloud

Importieren Sie Sicherheitsrichtlinien mit dem Befehl gcloud compute security-policies import NAME. Ersetzen Sie NAME durch den Namen der Sicherheitsrichtlinie, die Sie importieren. Wenn Sie das Dateiformat nicht angeben, wird das richtige Format von der Dateistruktur abgeleitet. Wenn die Struktur ungültig ist, wird ein Fehler angezeigt.

gcloud compute security-policies import NAME \
    --file-name FILE_NAME  \
   [--file-format FILE_FORMAT]

Mit dem folgenden Befehl wird durch Importieren der Datei my-file beispielsweise die Richtlinie my-policy aktualisiert.

gcloud compute security-policies import my-policy \
    --file-name my-file \
    --file-format json

Wenn der Fingerabdruck der Richtlinie beim Import veraltet ist, zeigt Google Cloud Armor einen Fehler an. Das bedeutet, dass die Richtlinie seit dem letzten Export geändert wurde. Verwenden Sie zur Behebung dieses Problems den Befehl describe der Richtlinie, um den neuesten Fingerabdruck abzurufen. Führen Sie alle Unterschiede zwischen der beschriebenen Richtlinie und Ihrer Richtlinie zusammen und ersetzen Sie den veralteten Fingerabdruck durch den neuesten.

Sicherheitsrichtlinien löschen

Folgen Sie dieser Anleitung, um eine Google Cloud Armor-Sicherheitsrichtlinie zu löschen. Sie müssen alle Back-End-Dienste aus der Richtlinie entfernen, bevor Sie sie löschen können.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Netzwerksicherheit auf.

    Netzwerksicherheit aufrufen

  2. Klicken Sie auf der Seite Sicherheitsrichtlinien neben dem Namen der Sicherheitsrichtlinie, die Sie löschen möchten, das Kästchen an.

  3. Klicken Sie oben rechts auf der Seite auf Löschen.

gcloud

Verwenden Sie gcloud compute security-policies delete NAME. Ersetzen Sie NAME durch den Namen der Sicherheitsrichtlinie:

gcloud compute security-policies delete NAME

Sicherheitsrichtlinie an einen Back-End-Dienst anhängen

Folgen Sie dieser Anleitung, um eine Google Cloud Armor-Sicherheitsrichtlinie an einen Back-End-Dienst anzuhängen. Sicherheitsrichtlinien können an mehrere Back-End-Dienste angehängt werden, an einen Back-End-Dienst kann jedoch nur eine Sicherheitsrichtlinie angehängt sein.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Netzwerksicherheit auf.

    Netzwerksicherheit aufrufen

  2. Klicken Sie auf der Seite Sicherheitsrichtlinien auf den Namen der Sicherheitsrichtlinie. Die Seite Richtliniendetails wird angezeigt.

  3. Klicken Sie in der Mitte der Seite auf den Tab Ziele.

  4. Klicken Sie auf Richtlinie auf neues Ziel anwenden.

  5. Klicken Sie auf Ziel hinzufügen.

  6. Wählen Sie in der Liste Ziel ein Ziel aus und klicken Sie anschließend auf Hinzufügen.

gcloud

Führen Sie den Befehl gcloud compute backend-services aus:

gcloud compute backend-services update my-backend \
    --security-policy my-policy

Sicherheitsrichtlinie aus einem Back-End-Dienst entfernen

Folgen Sie dieser Anleitung, um eine Google Cloud Armor-Sicherheitsrichtlinie von einem Back-End-Dienst zu entfernen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Netzwerksicherheit auf.

    Netzwerksicherheit aufrufen

  2. Klicken Sie auf der Seite Sicherheitsrichtlinien auf den Namen der Sicherheitsrichtlinie. Die Seite Richtliniendetails wird angezeigt.

  3. Klicken Sie in der Mitte der Seite auf den Tab Ziele.

  4. Wählen Sie den Ziel-Back-End-Dienst aus, von dem Sie die Richtlinie entfernen.

  5. Klicken Sie auf Entfernen.

  6. Klicken Sie in der Meldung Ziel entfernen auf Entfernen.

gcloud

Führen Sie den Befehl gcloud compute backend-services aus:

gcloud compute backend-services update my-backend \
    --security-policy ""

Regeln zu einer Sicherheitsrichtlinie hinzufügen

Folgen Sie dieser Anleitung, um Regeln zu einer Google Cloud Armor-Sicherheitsrichtlinie hinzuzufügen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Netzwerksicherheit auf.

    Netzwerksicherheit aufrufen

  2. Klicken Sie auf der Seite Sicherheitsrichtlinien auf den Namen der Sicherheitsrichtlinie. Die Seite Richtliniendetails wird angezeigt.

  3. Klicken Sie in der Mitte der Seite auf den Tab Regeln.

  4. Klicken Sie auf Regel hinzufügen.

  5. Optional: Geben Sie eine Beschreibung der Regel ein.

  6. Wählen Sie den Modus aus:

    • Basis-Modus: Zulassen oder Ablehnen von Traffic basierend auf IP-Adressen oder -Bereichen.
    • Erweiterter Modus: Zulassen oder Ablehnen von Traffic basierend auf Regelausdrücken.
  7. Geben Sie im Feld Abgleich die Bedingungen an, unter denen die Regel angewendet wird.

    • Basis-Modus: Geben Sie einen (1) bis fünf (5) IP-Adressbereiche ein, die in der Regel übereinstimmen sollen.
    • Erweiterter Modus: Geben Sie einen Ausdruck oder Unterausdrücke ein, um sie anhand eingehender Anfragen auszuwerten. Informationen zum Schreiben von Ausdrücken und zum Lesen der folgenden Beispiele finden Sie in der Sprachreferenz für benutzerdefinierte Regeln.

      • Der folgende Ausdruck stimmt mit Anfragen von der IP-Adresse 1.2.3.4 überein und enthält den String Godzilla im user-agent-Header:

        inIpRange(origin.ip, '1.2.3.4/32') && has(request.headers['user-agent']) && request.headers['user-agent'].contains('Godzilla')
        
      • Der folgende Ausdruck stimmt mit Anfragen überein, die ein Cookie mit einem bestimmten Wert enthalten:

        has(request.headers['cookie']) && request.headers['cookie'].contains('cookie_name=cookie_value')
        
      • Der folgende Ausdruck stimmt mit Anfragen aus der Region AU überein:

        origin.region_code == 'AU'
        
      • Der folgende Ausdruck stimmt mit Anfragen aus der Region AU überein, die nicht im angegebenen IP-Bereich liegen:

        origin.region_code == "AU" && !inIpRange(origin.ip, '1.2.3.0/24')
        
      • Der folgende Ausdruck stimmt mit Anfragen überein, wenn der URI mit einem regulären Ausdruck übereinstimmt:

        request.path.matches('/bad_path/)')
        
      • Der folgende Ausdruck stimmt mit Anfragen überein, wenn der Base64-decodierte Wert des user-id-Headers einen bestimmten Wert enthält:

        has(request.headers['user-id']) && request.headers['user-id'].base64Decode().contains('myValue')
        
      • Der folgende Ausdruck verwendet einen vorkonfigurierten Ausdruckssatzabgleich gegen SQLi-Angriffe:

        evaluatePreconfiguredExpr('sqli-stable')
        
  8. Wählen Sie unter Aktion die Option Zulassen oder Ablehnen aus.

  9. Wenn Sie eine Ablehnungsregel konfigurieren, wählen Sie Status "Abgelehnt" aus.

  10. Wenn Sie den Vorschaumodus für die Regel aktivieren möchten, klicken Sie das Kästchen Aktivieren an.

  11. Geben Sie im Feld Priorität eine positive Ganzzahl ein.

  12. Klicken Sie auf Add.

gcloud

Führen Sie den Befehl gcloud compute security-policies rules create PRIORITY aus: Ersetzen Sie PRIORITY durch die Priorität der Regel in der Richtlinie:

gcloud compute security-policies rules create PRIORITY \
    --security-policy POLICY_NAME \
    --description DESCRIPTION \
    --src-ip-ranges IP_RANGES | --expression EXPRESSION \
    --action=[ allow | deny-403 | deny-404 | deny-502 ] \
    --preview

Der folgende Befehl fügt beispielsweise eine Regel hinzu, mit der Traffic von den IP-Adressbereichen 192.0.2.0/24 und 198.51.100.0/24 blockiert wird. Die Regel hat die Priorität 1.000 und ist eine Regel in der Richtlinie my-policy.

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --description "block traffic from 192.0.2.0/24 and 198.51.100.0/24" \
    --src-ip-ranges "192.0.2.0/24","198.51.100.0/24" \
    --action "deny-403"

Verwenden Sie das Flag --expression, um in der Sprachreferenz für benutzerdefinierte Regeln eine benutzerdefinierte Bedingung anzugeben. Der folgende Befehl fügt eine Regel hinzu, die Traffic von der IP-Adresse 1.2.3.4 zulässt, und enthält den String Godzilla im user-agent-Header:

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --expression "inIpRange(origin.ip, '1.2.3.4/32') && has(request.headers['user-agent']) && request.headers['user-agent'].contains('Godzilla')" \
    --action allow \
    --description "Block User-Agent 'Godzilla'"

Der folgende Befehl fügt eine Regel zum Blockieren von Anfragen hinzu, wenn das Cookie der Anfrage einen bestimmten Wert enthält:

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --expression "has(request.headers['cookie']) && request.headers['cookie'].contains('80=BLAH')" \
    --action deny-403 \
    --description "Cookie Block"

Der folgende Befehl fügt eine Regel hinzu, um Anfragen aus der Region AU zu blockieren:

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --expression "origin.region_code == 'AU'" \
    --action deny-403 \
    --description "AU block"

Der folgende Befehl fügt eine Regel hinzu, um Anfragen aus der Region AU zu blockieren, die nicht im angegebenen IP-Bereich liegen:

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --expression "origin.region_code == "AU" && !inIpRange(origin.ip, '1.2.3.0/24')" \
    --action deny-403 \
    --description "country and IP block"

Der folgende Befehl fügt eine Regel hinzu, um Anfragen mit einem URI zu blockieren, der einem regulären Ausdruck entspricht:

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --expression "request.path.matches('/bad_path/)')" \
    --action deny-502 \
    --description "regex block"

Der folgende Befehl fügt eine Regel zum Blockieren von Anfragen hinzu, wenn der Base64-decodierte Wert des Headers user-id einen bestimmten Wert enthält:

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --expression "has(request.headers['user-id']) && request.headers['user-id'].base64Decode().contains('myValue')" \
    --action deny-403 \
    --description "country and IP block"

Der folgende Befehl fügt eine Regel hinzu, die einen vorkonfigurierten Ausdruck verwendet, um SQLi-Angriffe abzuwenden:

gcloud compute security-policies rules create 1000 \
    --security-policy my-policy \
    --expression "evaluatePreconfiguredExpr('sqli-stable')" \
    --action deny-403

Regeln in einer Sicherheitsrichtlinie auflisten

Folgen Sie dieser Anleitung, um Regeln in einer Google Cloud Armor-Sicherheitsrichtlinie aufzulisten.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Netzwerksicherheit auf.

    Netzwerksicherheit aufrufen

  2. Klicken Sie auf der Seite Sicherheitsrichtlinien auf den Namen der Sicherheitsrichtlinie. Die Seite Richtliniendetails wird angezeigt und die Richtlinienregeln werden auf dem Tab Regeln in der Mitte der Seite aufgelistet.

gcloud

Verwenden Sie den folgenden gcloud-Befehl, um alle Regeln in einer einzelnen Sicherheitsrichtlinie zusammen mit einer Beschreibung der Richtlinie aufzulisten.

gcloud compute security-policies describe NAME \

Verwenden Sie den folgenden gcloud-Befehl, um eine Regel mit der angegebenen Priorität in der angegebenen Sicherheitsrichtlinie zu beschreiben:

gcloud compute security-policies rules describe PRIORITY \
    --security-policy POLICY_NAME

Der folgende Befehl beschreibt zum Beispiel die Regel mit der Priorität 1.000 in der Sicherheitsrichtlinie my-policy:

gcloud compute security-policies rules describe 1000 \
    --security-policy my-policy

Ausgabe:

action: deny(403)
description: block traffic from 192.0.2.0/24 and 198.51.100.0/24
kind: compute#securityPolicyRule
match:
  srcIpRanges:
  - '192.0.2.0/24'
  - '198.51.100.0/24'
preview: false
priority: 1000

Einzelne Regel in einer Sicherheitsrichtlinie aktualisieren

Folgen Sie dieser Anleitung, um eine einzelne Regel in einer Google Cloud Armor-Sicherheitsrichtlinie zu aktualisieren. Informationen zum Aktualisieren mehrerer Regeln finden Sie unter Mehrere Regeln in einer Sicherheitsrichtlinie atomar aktualisieren.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Netzwerksicherheit auf.

    Netzwerksicherheit aufrufen

  2. Klicken Sie auf der Seite Sicherheitsrichtlinien auf den Namen der Sicherheitsrichtlinie. Die Seite Richtliniendetails wird angezeigt.

  3. Klicken Sie in der Mitte der Seite auf den Tab Regeln.

  4. Klicken Sie neben der Regel, die Sie aktualisieren möchten, auf Bearbeiten. Die Seite Regel bearbeiten wird angezeigt.

  5. Nehmen Sie die gewünschten Änderungen vor und klicken Sie dann auf Aktualisieren.

gcloud

Mit diesem Befehl aktualisieren Sie eine Regel mit der angegebenen Priorität in einer bestimmten Sicherheitsrichtlinie. Mit dem folgenden Befehl können Sie immer nur eine Sicherheitsrichtlinie aktualisieren:

gcloud compute security-policies rules update PRIORITY [ \
    --security-policy POLICY_NAME  \
    --description DESCRIPTION  \
    --src-ip-ranges IP_RANGES  | --expression EXPRESSION \
    --action=[ allow | deny-403 | deny-404 | deny-502 ]  \
    --preview
  ]
  

Mit dem folgenden Befehl wird beispielsweise eine Regel mit der Priorität 1111 aktualisiert, um Traffic aus dem IP-Adressbereich 192.0.2.0/24 zuzulassen:

gcloud compute security-policies rules update 1111 \
    --security-policy my-policy \
    --description "allow traffic from 192.0.2.0/24" \
    --src-ip-ranges "192.0.2.0/24" \
    --action "allow"

Weitere Informationen zu diesem Befehl finden Sie unter gcloud compute security-policies rules update.

Um die Priorität einer Regel zu aktualisieren, müssen Sie die REST API verwenden. Weitere Informationen finden Sie unter securityPolicies.patchRule.

Mehrere Regeln in einer Sicherheitsrichtlinie atomar aktualisieren

Bei einer atomaren Aktualisierung werden Änderungen an mehreren Regeln in einer einzigen Aktualisierung angewendet. Wenn Sie Regeln einzeln aktualisieren, kann es zu einem unbeabsichtigten Verhalten kommen, da alte und neue Regeln möglicherweise für kurze Zeit zusammenarbeiten.

Exportieren Sie die aktuelle Sicherheitsrichtlinie in eine JSON- oder YAML-Datei und ändern Sie diese dann entsprechend, um mehrere Regeln atomar zu aktualisieren. Verwenden Sie die geänderte Datei, um eine neue Sicherheitsrichtlinie zu erstellen, und wechseln Sie dann die Sicherheitsrichtlinie für die entsprechenden Back-End-Dienste.

gcloud

  1. Exportieren Sie die Richtlinie, die Sie aktualisieren möchten, wie im folgenden Beispiel gezeigt:

    gcloud compute security-policies export my-policy \
        --file-name my-file \
        --file-format yaml
    

    Die exportierte Richtlinie sieht etwa so aus:

    description: my description
    fingerprint: PWfLGDWQDLY=
    id: '123'
    name: my-policy
    rules:
    - action: deny(404)
      description: my-rule-1
      match:
        expr:
          expression: evaluatePreconfiguredExpr('xss-stable')
        versionedExpr: SRC_IPS_V1
      preview: false
      priority: 1
    - action: allow
      description: my-rule-2
      match:
        config:
          srcIpRanges:
          - '1.2.3.4'
        versionedExpr: SRC_IPS_V1
      preview: false
      priority: 2
    - action: deny
      description: default rule
      kind: compute#securityPolicyRule
      match:
        config:
          srcIpRanges:
          - '*'
        versionedExpr: SRC_IPS_V1
      preview: false
      priority: 2147483647
    selfLink: https://www.googleapis.com/compute/v1/projects/my-project/global/securityPolicies/my-policy
    
  2. Ändern Sie die Richtlinie in einem beliebigen Texteditor. Sie können beispielsweise die Prioritäten der vorhandenen Regeln ändern und eine neue Regel hinzufügen:

    description: my description
    fingerprint: PWfLGDWQDLY=
    id: '123'
    name: my-policy
    rules:
    - action: deny(404)
      description: my-rule-1
      match:
        expr:
          expression: evaluatePreconfiguredExpr('xss-stable')
        versionedExpr: SRC_IPS_V1
      preview: false
      priority: 1
    - action: allow
      description: my-new-rule
      match:
        config:
          srcIpRanges:
          - '1.2.3.1'
        versionedExpr: SRC_IPS_V1
      preview: false
      priority: 10
    - action: allow
      description: my-rule-2
      match:
        config:
          srcIpRanges:
          - '1.2.3.4'
        versionedExpr: SRC_IPS_V1
      preview: false
      priority: 11
    - action: deny
      description: default rule
      kind: compute#securityPolicyRule
      match:
        config:
          srcIpRanges:
          - '*'
        versionedExpr: SRC_IPS_V1
      preview: false
      priority: 2147483647
    selfLink: https://www.googleapis.com/compute/v1/projects/my-project/global/securityPolicies/my-policy
    
  3. Erstellen Sie eine neue Google Cloud Armor-Sicherheitsrichtlinie und geben Sie den geänderten Dateinamen und das Format wie im folgenden Beispiel an:

    gcloud compute security-policies create new-policy \
        --description "allow-listed traffic" \
        --file-name modified-policy \
        --file-format yaml
    
  4. Entfernen Sie die alte Sicherheitsrichtlinie aus dem entsprechenden Back-End-Dienst, wie im folgenden Beispiel gezeigt:

    gcloud compute backend-services update my-backend \
        --security-policy ""
    
  5. Fügen Sie dem Back-End-Dienst die neue Sicherheitsrichtlinie hinzu, wie im folgenden Beispiel gezeigt:

    gcloud compute backend-services update my-backend \
        --security-policy new-policy
    
  6. Wenn die alte Richtlinie nicht verwendet wird, löschen Sie sie:

    gcloud compute security-policies delete my-policy
    

Regeln aus einer Sicherheitsrichtlinie löschen

Folgen Sie dieser Anleitung, um Regeln aus einer Google Cloud Armor-Sicherheitsrichtlinie zu löschen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Netzwerksicherheit auf.

    Netzwerksicherheit aufrufen

  2. Klicken Sie auf der Seite Sicherheitsrichtlinien auf den Namen der Sicherheitsrichtlinie. Die Seite Richtliniendetails wird angezeigt.

  3. Klicken Sie in der Mitte der Seite auf dem Tab Regeln das Kästchen neben der Regel an, die Sie löschen möchten.

  4. Klicken Sie auf Löschen.

gcloud

Mit diesem Befehl entfernen Sie eine Regel mit der angegebenen Priorität aus einer bestimmten Sicherheitsrichtlinie. Sie können jeweils nur eine Sicherheitsrichtlinie ändern. Sie können aber mehrere Regeln gleichzeitig löschen:

gcloud compute security-policies rules delete PRIORITY [...] [
    --security-policy POLICY_NAME \
  ]

Beispiel:

gcloud compute security-policies rules delete 1000 \
    --security-policy my-policy

Nächste Schritte