Beispiele für Sicherheitsrichtlinien

Sie können Google Cloud Armor-Sicherheitsrichtlinien konfigurieren, um Ihre Dienste vor DoS- (Denial of Service) und Webangriffen zu schützen. Diese Richtlinien nutzen die globale Infrastruktur von Google, um Ihre Anwendungen zu schützen und den Traffic zu steuern, der über Load Balancer fließt.

Dieses Dokument enthält Beispielkonfigurationen für Sicherheitsrichtlinien für verschiedene Arten von Load-Balancern.

Sicherheitsrichtlinien für externe Application Load Balancer konfigurieren

So konfigurieren Sie Google Cloud Armor-Sicherheitsrichtlinien, um Traffic zu einem globalen externen Application Load Balancer oder einem klassischen Application Load Balancer zuzulassen oder abzulehnen :

  1. Erstellen Sie eine Cloud Armor-Sicherheitsrichtlinie.
  2. Fügen Sie Regeln basierend auf IP-Adressen, benutzerdefinierten Ausdrücken oder vorkonfigurierten Ausdruckssätzen hinzu.
  3. Hängen Sie die Sicherheitsrichtlinie an einen Back-End-Dienst an.
  4. Aktualisieren Sie die Sicherheitsrichtlinie nach Bedarf.

In diesem Beispiel erstellen Sie zwei 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 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 Backend-Dienst games heißt, und Sie wenden internal-users-policy auf den internen test-Dienst für das Testteam an, dessen entsprechender Backend-Dienst test-networkheißt.

Befinden sich die Backend-Instanzen für einen Backend-Dienst in mehreren Regionen, gilt die Richtlinie für Instanzen in allen Regionen. In diesem Beispiel gilt 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

Folgen Sie der Anleitung in diesem Abschnitt, um die Beispielkonfiguration aus dem vorherigen Abschnitt zu erstellen.

Console

Konfigurieren Sie die Sicherheitsrichtlinie für externe Nutzer:

  1. Rufen Sie in der Google Cloud Console die Seite Cloud Armor-Richtlinien auf.

    Zu Cloud Armor-Richtlinien

  2. Klicken Sie auf Richtlinien 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 von Google Cloud Armor:

  1. Wählen Sie Aktivieren aus, um Adaptive Protection zu aktivieren.

Konfigurieren Sie die Sicherheitsrichtlinie für interne Nutzer:

  1. Klicken Sie auf Richtlinien 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 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 erstellen

Verwenden Sie die Google Cloud Console oder die gcloud CLI, um Sicherheitsrichtlinien zu erstellen. Bei dieser Anleitung wird davon ausgegangen, dass Sie Richtlinien für einen vorhandenen Load-Balancer und Backend-Dienst konfigurieren. Ein Beispiel finden Sie unter Beispiel erstellen.

Console

So erstellen Sie Regeln und hängen eine Sicherheitsrichtlinie an einen Backend-Dienst an:

  1. Rufen Sie in der Google Cloud Console die Seite Cloud Armor-Richtlinien auf.

    Zu Cloud Armor-Richtlinien

  2. Klicken Sie auf Richtlinien 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 Richtlinientyp Backend-Sicherheitsrichtlinie oder Edge-Sicherheitsrichtlinie aus.

  6. Wählen Sie als Aktion der Standardregel Zulassen aus, um den Zugriff standardmäßig zu erlauben, oder Ablehnen, um den Zugriff standardmäßig zu verweigern.

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

  7. Wenn Sie eine Ablehnungsregel konfigurieren, wählen Sie einen Ablehnungsstatus Antwortcode aus. Cloud Armor gibt diesen Statuscode zurück, wenn eine Anfrage abgelehnt wird.

  8. Klicken Sie 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:

    • Standardmodus: 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, für die die Regel gilt:

    • Basis-Modus: Geben Sie die IP-Adressen oder -Bereiche ein, die in der Regel übereinstimmen sollen.
    • Erweiterter Modus: Geben Sie einen Ausdruck ein, der anhand eingehender Anfragen ausgewertet werden soll. Weitere Informationen finden Sie unter Attribute der Sprache für benutzerdefinierte Regeln.
  5. Wählen Sie unter Aktion die Option Zulassen oder Ablehnen aus.

  6. Klicken Sie auf Aktivieren, um den Vorschaumodus zu aktivieren. Im Vorschaumodus protokolliert Cloud Armor die Auswirkungen der Regel, ohne sie zu erzwingen.

  7. Geben Sie die Priorität der Regel ein (0 bis 2.147.483.646). Weitere Informationen finden Sie unter Regelauswertungsreihenfolge.

  8. Klicken Sie auf Fertig.

  9. Wenn Sie weitere Regeln hinzufügen möchten, klicken Sie auf Regel hinzufügen. 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. Verwenden Sie zum Erstellen einer Cloud Armor-Sicherheitsrichtlinie den Befehl gcloud compute security-policies create.

    Verwenden Sie das Flag --type, um CLOUD_ARMOR (Backend) oder CLOUD_ARMOR_EDGE (Edge) anzugeben. Wenn Sie das Flag weglassen, erstellt Cloud Armor eine Back-End-Sicherheitsrichtlinie:

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

    Ersetzen Sie Folgendes:

    • NAME: der Name der Sicherheitsrichtlinie
    • FILE_FORMAT: Das Format der Datei, die in --file-name angegeben ist. Geben Sie yaml oder json an.
    • DESCRIPTION: die Beschreibung der Sicherheitsrichtlinie
    • FILE_NAME: Der Name einer Datei, die einen YAML- oder JSON-Export der Sicherheitsrichtlinie enthält.

    Mit dem folgenden Befehl wird eine 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.

     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]
    

    Ersetzen Sie Folgendes:

    • PRIORITY: die Regelpriorität. Regelauswertungsreihenfolge
    • POLICY_NAME: der Name Ihrer Sicherheitsrichtlinie
    • DESCRIPTION: eine Beschreibung der Regel
    • IP_RANGE,...: eine durch Kommas getrennte Liste von IP-Adressbereichen
    • EXPRESSION: Ein Ausdruck in der Cloud Armor-Regelsprache

    Mit dem folgenden Befehl wird beispielsweise eine Regel hinzugefügt, mit der Traffic von 192.0.2.0/24 und 198.51.100.0/24 blockiert wird. Die Regel hat die Priorität 1.000:

     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 eine benutzerdefinierte Bedingung anzugeben. Weitere Informationen finden Sie unter Sprachattribute für benutzerdefinierte Regeln. 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 example 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('example')" \
         --action allow \
         --description "Block User-Agent 'example'"
    

    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('/example_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 "evaluatePreconfiguredWaf('sqli-v422-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 "evaluatePreconfiguredWaf('sourceiplist-fastly')" \
          --action "allow"
    

Sicherheitsrichtlinien für regionale externe Application Load Balancer konfigurieren

Folgen Sie der Anleitung in diesem Abschnitt, um regional begrenzte Cloud Armor-Sicherheitsrichtlinien für regionale externe Application Load Balancer zu konfigurieren.

Regional ausgeglichene Arbeitslasten schützen

Gehen Sie so vor, um eine Sicherheitsrichtlinie für einen regionalen Backend-Dienst zu konfigurieren:

  1. Erstellen Sie eine Sicherheitsrichtlinie mit regionalem Umfang.

     gcloud compute security-policies create POLICY_NAME \
         --type=CLOUD_ARMOR \
         --region=REGION
    

    Ersetzen Sie Folgendes:

    • POLICY_NAME: der Name der Sicherheitsrichtlinie
    • REGION: Die Region, in der die Sicherheitsrichtlinie erstellt werden soll.
  2. Hängen Sie die Sicherheitsrichtlinie mit regionalem Geltungsbereich an einen Backend-Dienst mit regionalem Geltungsbereich an. Ersetzen Sie BACKEND_NAME durch den Namen Ihres vorhandenen regionalen Backend-Dienstes.

     gcloud compute backend-services update BACKEND_NAME \
         --security-policy=POLICY_NAME \
         --region=REGION
    

Beispiel: Sicherheitsrichtlinie mit regionalem Geltungsbereich anwenden

In diesem Beispiel möchten Sie als Sicherheitsadministrator eine Anforderung erfüllen, dass alle Backend-Arbeitslasten und WAF-Regeln in einer bestimmten Region bereitgestellt werden. Angenommen, Sie haben die folgenden Bedingungen bereits erfüllt:

  1. Sie haben regional begrenzte Backend-Dienste mit Load Balancing in der Region erstellt.
  2. Sie haben alle vorhandenen Sicherheitsrichtlinien mit globalem Umfang in Ihrer Bereitstellung deaktiviert.
  3. Sie haben eine Sicherheitsrichtlinie mit regionalem Geltungsbereich in derselben Region erstellt und angehängt (wie im vorherigen Abschnitt).

Mit diesen Befehlen können Sie Ihrer Richtlinie WAF-Regeln und andere erweiterte Regeln hinzufügen:

  • Fügen Sie der Richtlinie eine WAF-Regel hinzu:

    gcloud compute security-policies rules create 1000 --action=deny-404 \
        --expression="evaluatePreconfiguredWaf('xss-v422-stable', ['owasp-crs-v042200-id941100-xss', 'owasp-crs-v042200-id941160-xss'])" \
        --security-policy=POLICY_NAME \
        --region=REGION
    

    Ersetzen Sie Folgendes:

    • POLICY_NAME: der Name der Sicherheitsrichtlinie
    • REGION: die Region der Sicherheitsrichtlinie
  • Fügen Sie der Richtlinie eine erweiterte Regel hinzu:

    gcloud compute security-policies rules create 1000 --action=allow \
        --expression="has(request.headers['cookie']) && request.headers['cookie'].contains('80=EXAMPLE')" \
        --security-policy=POLICY_NAME \
        --region=REGION
    
  • Fügen Sie der Richtlinie eine Ratenbegrenzungsregel hinzu:

    gcloud compute security-policies rules create 1000 --action=throttle \
        --src-ip-ranges="1.1.1.1/32" \
        --rate-limit-threshold-count=1000 \
        --rate-limit-threshold-interval-sec=120 \
        --conform-action="allow" \
        --exceed-action="deny-429" \
        --enforce-on-key=IP \
        --ban-duration-sec=999 \
        --ban-threshold-count=5000 \
        --ban-threshold-interval-sec=60 \
        --security-policy=POLICY_NAME \
        --region=REGION
    

    Ersetzen Sie Folgendes:

    • POLICY_NAME: der Name der Sicherheitsrichtlinie
    • REGION: die Region der Sicherheitsrichtlinie

Nächste Schritte