Ratenbegrenzung mit Cloud Armor

1. Einführung

Das HTTP(S)-Load-Balancing von Google Cloud wird weltweit in den Points of Presence (POPs) von Google bereitgestellt. Der an einen HTTP(S) Load Balancer geleitete Nutzertraffic gelangt in den POP, der dem Nutzer am nächsten liegt, und wird dann über das globale Google-Netzwerk auf das nächstgelegene Backend mit ausreichender Kapazität verteilt.

Cloud Armor ist das WAF-Erkennungssystem (Distributed Denial of Service und Web Application Firewall) von Google. Cloud Armor ist eng mit dem Google Cloud-HTTP-Load-Balancer gekoppelt und ermöglicht es Ihnen, eingehenden Traffic auf unerwünschte Anfragen zu abfragen. Mit der Ratenbegrenzungsfunktion dieses Dienstes können Sie den Traffic zu Back-End-Ressourcen basierend auf dem Anfragevolumen beschränken und verhindern, dass unerwünschter Traffic Ressourcen in Ihrem VPC-Netzwerk (Virtual Private Cloud) verbraucht.

In diesem Lab konfigurieren Sie einen im folgenden Diagramm dargestellten HTTP Load Balancer mit globalen Backends. Anschließend führen Sie einen Stresstest für den Load-Balancer durch und fügen eine Cloud Armor-Richtlinie zur Ratenbegrenzung hinzu, um den Traffic zu begrenzen, der Ihre Backend-Ressourcen erreicht.

2e1b99d22f4f32a.png

Aufgaben in diesem Lab

  • Hier erfahren Sie, wie Sie einen HTTP-Load-Balancer mit entsprechenden Systemdiagnosen einrichten.
  • Anleitung zum Erstellen einer Cloud Armor-Richtlinie zur Ratenbegrenzung
  • Prüfen, ob die Richtlinie zur Ratenbegrenzung Traffic blockiert, wenn ein Belastungstest von einer VM ausgeführt wird.

Voraussetzungen

  • Grundkenntnisse in Netzwerken und HTTP-Kenntnissen
  • Grundkenntnisse zu Unix/Linux-Befehlszeilen

2. Einrichtung und Anforderungen

Umgebung für das selbstbestimmte Lernen einrichten

  1. Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes Projekt. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • Der Projektname ist der Anzeigename für die Projektteilnehmer. Es handelt sich um eine Zeichenfolge, die von Google APIs nicht verwendet wird und jederzeit aktualisiert werden kann.
  • Die Projekt-ID muss für alle Google Cloud-Projekte eindeutig sein und ist unveränderlich. Sie kann nach dem Festlegen nicht mehr geändert werden. Die Cloud Console generiert automatisch einen eindeutigen String. ist Ihnen meist egal, was es ist. In den meisten Codelabs musst du auf die Projekt-ID verweisen, die in der Regel als PROJECT_ID identifiziert wird. Wenn es dir nicht gefällt, kannst du eine weitere zufällige Projekt-ID generieren. Du kannst aber auch selbst eine andere testen, um zu sehen, ob sie verfügbar ist. Dann ist es „eingefroren“ nachdem das Projekt erstellt wurde.
  • Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu allen drei Werten finden Sie in der Dokumentation.
  1. Als Nächstes müssen Sie in der Cloud Console die Abrechnung aktivieren, um Cloud-Ressourcen/APIs verwenden zu können. Dieses Codelab sollte möglichst wenig kosten. Wenn Sie Ressourcen beenden möchten, damit über diese Anleitung hinaus keine Kosten anfallen, führen Sie eine Bereinigung durch am Ende des Codelabs. Neue Google Cloud-Nutzer haben Anspruch auf eine kostenlose Testversion mit 300$Guthaben.

Cloud Shell starten

Sie können Google Cloud zwar von Ihrem Laptop aus der Ferne bedienen, in diesem Codelab verwenden Sie jedoch Google Cloud Shell, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.

Klicken Sie in der GCP Console oben rechts in der Symbolleiste auf das Cloud Shell-Symbol:

bce75f34b2c53987.png

Die Bereitstellung und Verbindung mit der Umgebung dauert nur einen Moment. Wenn er abgeschlossen ist, sollten Sie in etwa Folgendes sehen:

f6ef2b5f13479f3a.png

Diese virtuelle Maschine verfügt über sämtliche Entwicklertools, die Sie benötigen. Es bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft auf Google Cloud, wodurch die Netzwerkleistung und Authentifizierung erheblich verbessert werden. Sie können alle Aufgaben in diesem Lab ganz einfach in einem Browser erledigen.

Hinweis

Prüfen Sie in Cloud Shell, ob Ihre Projekt-ID eingerichtet ist

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
PROJECT_ID=[YOUR-PROJECT-NAME]
echo $PROJECT_ID

APIs aktivieren

Alle erforderlichen Dienste aktivieren

gcloud services enable compute.googleapis.com
gcloud services enable logging.googleapis.com
gcloud services enable monitoring.googleapis.com

3. Firewallregeln konfigurieren, um HTTP-Traffic zu Back-Ends zuzulassen

Konfigurieren Sie Firewallregeln, um HTTP-Traffic von den Google Cloud-Systemdiagnosen und dem Load-Balancer an die Back-Ends zuzulassen.

Wir verwenden das in Ihrem Projekt erstellte VPC-Netzwerk default. Erstellen Sie eine Firewallregel, um HTTP-Traffic an die Backends zuzulassen. Mit Systemdiagnosen wird ermittelt, zu welchen Instanzen eines Load Balancers neue Verbindungen aufgebaut werden können. Beim HTTP-Load-Balancing werden die Systemdiagnosetests für Ihre Instanzen mit Load-Balancing über Adressen in den Bereichen 130.211.0.0/22 und 35.191.0.0/16 durchgeführt. Ihre VPC-Firewallregeln müssen diese Verbindungen zulassen. Außerdem kommunizieren die Load-Balancer im selben IP-Bereich mit dem Back-End.

  1. Öffnen Sie in der Cloud Console das Navigationsmenü ( mainmenu.png) > VPC-Netzwerk > Firewall:

dbdf491e6d7863f3.png

  1. Beachten Sie die vorhandenen Firewallregeln für ICMP, internal, RDP und SSH.Jedes Google Cloud-Projekt beginnt mit dem Netzwerk default und diesen Firewallregeln.
  2. Klicken Sie auf Firewallregel erstellen.
  3. Legen Sie die folgenden Werte fest und übernehmen Sie für alle anderen die Standardeinstellung:

Attribut

Wert (Wert eingeben oder Option auswählen)

Name

default-allow-health-check

Netzwerk

default

Ziele

Angegebene Ziel-Tags

Ziel-Tags

http-server

Quellfilter

IP-Bereiche

Quell-IP-Bereiche

130.211.0.0/22, 35.191.0.0/16

Protokolle und Ports

Angegebene Protokolle und Ports, klicken Sie dann auf das Kästchen neben „tcp“

  1. Klicken Sie auf Erstellen.

Alternativ, wenn Sie die gcloud-Befehlszeile verwenden. Hier ist der Befehl:

gcloud compute firewall-rules create default-allow-health-check --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp --source-ranges=130.211.0.0/22,35.191.0.0/16 --target-tags=http-server

4. Instanzvorlagen konfigurieren und verwaltete Instanzgruppen erstellen

Mit einer Instanzvorlage kann in einer verwalteten Instanzgruppe eine Gruppe identischer Instanzen eingerichtet werden. Erstellen Sie damit die Backends des HTTP Load Balancers.

Instanzvorlagen konfigurieren

Eine Instanzvorlage ist eine API-Ressource, mit der Sie VM-Instanzen und verwaltete Instanzgruppen erstellen können. In Instanzvorlagen sind Maschinentyp, Abbild des Bootlaufwerks, Subnetz, Labels und andere Instanzattribute definiert. Erstellen Sie eine Instanzvorlage für us-east1 und eine weitere für europe-west1.

  1. Öffnen Sie in der Cloud Console das Navigationsmenü ( mainmenu.png) > Compute Engine > Instanzvorlagen und klicken Sie dann auf Instanzvorlage erstellen.
  2. Geben Sie us-east1-template bei Name ein.
  3. Wählen Sie unter Reihe die Option N1 aus.
  4. Klicken Sie auf Netzwerk, Laufwerke, Sicherheit, Verwaltung , einzelne Mandanten.

b60e2a44c3e4d50e.png

  1. Gehen Sie zum Abschnitt Verwaltung:

ee57f20ce55298fd.png

  1. Klicken Sie unter Metadaten auf Element hinzufügen und geben Sie Folgendes an:

Key

Wert

startup-script-url

gs://cloud-training/gcpnet/httplb/startup.sh

  1. Klicken Sie auf Netzwerke.
  2. Legen Sie die folgenden Werte fest und übernehmen Sie für alle anderen die Standardeinstellung:

Attribut

Wert (Wert eingeben oder Option auswählen)

Netzwerk (unter Netzwerkschnittstellen)

Standard

Subnetz (unter „Netzwerkschnittstellen“)

default (us-east1)

Netzwerktags

http-server

  1. Klicken Sie auf Erstellen.
  2. Warten Sie, bis die Instanzvorlage erstellt wurde.

Erstellen Sie nun eine weitere Instanzvorlage für subnet-b. Kopieren Sie hierfür die Vorlage us-east1-template.

  1. Klicken Sie auf us-east1-template und dann oben auf die Option Kopieren.
  2. Geben Sie europe-west1-template bei Name ein.
  3. Klicken Sie auf Netzwerk, Laufwerke, Sicherheit, Verwaltung , einzelne Mandanten.
  4. Klicken Sie auf Netzwerke.
  5. Bearbeiten Sie unter Netzwerkschnittstellen die Standardschnittstelle. Wählen Sie für Subnetz die Option default (europe-west1) aus.
  6. Klicken Sie auf Erstellen.

Verwaltete Instanzgruppen erstellen

Erstellen Sie eine verwaltete Instanzgruppe in us-east1 und eine weitere in europe-west1.

  1. Klicken Sie unter Compute Engine im linken Menü auf Instanzgruppen.

72319de055de3942.png

  1. Klicken Sie auf Instanzgruppe erstellen. Wählen Sie Neue verwaltete Instanzgruppe (zustandslos) aus.
  2. Legen Sie die folgenden Werte fest und übernehmen Sie für alle anderen Werte die Standardeinstellung:

Attribut

Wert (Wert eingeben oder Option auswählen)

Name

us-east1-mig

Standort

Mehrere Zonen

Region

us-east1

Instanzvorlage

us-east1-template

Autoscaling > Autoscaling-Richtlinie > Klicke auf Stiftsymbol > Messwerttyp

CPU-Auslastung

CPU-Zielauslastung

80, klicke auf Fertig.

Wartezeit

45

Mindestanzahl von Instanzen

1

Maximale Anzahl von Instanzen

5

  1. Klicken Sie auf Erstellen.

Wiederholen Sie diesen Vorgang, um eine zweite Instanzgruppe für europe-west1-mig in europe-west1 zu erstellen:

  1. Klicken Sie auf Instanzgruppe erstellen.
  2. Legen Sie die folgenden Werte fest und übernehmen Sie für alle anderen Werte die Standardeinstellung:

Attribut

Wert (Wert eingeben oder Option auswählen)

Name

europe-west1-mig

Ort

Mehrere Zonen

Region

europe-west1

Instanzvorlage

europe-west1-template

Autoscaling > Autoscaling-Richtlinie > Klicke auf Stiftsymbol > Messwerttyp

CPU-Auslastung

CPU-Zielauslastung

80, klicke auf Fertig.

Wartezeit

45

Mindestanzahl von Instanzen

1

Maximale Anzahl von Instanzen

5

  1. Klicken Sie auf Erstellen.

5. HTTP Load Balancer konfigurieren

Konfigurieren Sie den HTTP-Load-Balancer, damit Traffic zwischen den beiden Back-Ends (us-east1-mig in us-east1 und europe-west1-mig in europe-west1) ausgeglichen wird, wie im folgenden Diagramm gezeigt:

2e1b99d22f4f32a.png

Konfiguration starten

  1. Klicken Sie in der Cloud Console auf das Navigationsmenü ( mainmenu.png) > Klicken Sie auf Netzwerkdienste > Load-Balancing und dann auf Load-Balancer erstellen.
  2. Klicken Sie unter HTTP(S) Load Balancing (HTTP(S)-Load-Balancing) auf Start configuration (Konfiguration starten).

8197d8f041e8eafd.png

  1. Wählen Sie Vom Internet zu meinen VMs, Klassischer HTTP(S)-Load-Balancer aus und klicken Sie auf Weiter.
  2. Legen Sie als Name http-lb fest.

Backend konfigurieren

Backend-Dienste leiten eingehenden Traffic an ein oder mehrere verknüpfte Backends weiter. Jedes Backend besteht aus einer Instanzgruppe und zusätzlichen Metadaten zur Kapazität.

  1. Klicken Sie auf Backend-Konfiguration.
  2. Klicken Sie unter Backend-Dienste und Backend-Buckets auf Backend-Dienst erstellen.
  3. Legen Sie die folgenden Werte fest und übernehmen Sie für alle anderen die Standardeinstellung:

Attribut

Wert (Option wie angegeben auswählen)

Name

http-backend

Instanzgruppe

us-east1-mig

Portnummern

80

Balancing-Modus

Rate

Maximale Anzahl der Anfragen pro Sekunde

50 (pro Instanz)

Kapazität

100

  1. Klicken Sie auf Fertig.
  2. Klicken Sie auf Backend hinzufügen.
  3. Legen Sie die folgenden Werte fest und übernehmen Sie für alle anderen Werte die Standardeinstellung:

Attribut

Wert (Option wie angegeben auswählen)

Instanzgruppe

europe-west1-mig

Portnummern

80

Balancing-Modus

Auslastung

Maximale Backend-Auslastung

80

Kapazität

100

  1. Klicken Sie auf Fertig.
  2. Klicken Sie unter Systemdiagnose auf Systemdiagnose erstellen.

199239806577ceac.png

  1. Legen Sie die folgenden Werte fest und übernehmen Sie für alle anderen Werte die Standardeinstellung:

Attribut

Wert (Option wie angegeben auswählen)

Name

http-health-check

Protokoll

TCP

Port

80

20f7af9fce140475.png

  1. Klicken Sie auf Speichern.
  2. Klicken Sie auf das Kästchen für Logging aktivieren.
  3. Legen Sie die Abtastrate auf 1 fest:

dab4b15c13917786.png

  1. Klicken Sie auf Erstellen, um den Backend-Dienst zu erstellen.

2db64614f855f239.png

Frontend konfigurieren

Host- und Pfadregeln bestimmen, wohin Ihr Traffic weitergeleitet wird. Sie könnten beispielsweise Traffic, der durch Videos entsteht, an ein Backend weiterleiten und Traffic, der aus statischen Daten entsteht, an ein anderes Backend. Allerdings konfigurieren wir in diesem Lab keine Host- und Pfadregeln.

  1. Klicken Sie auf Frontend-Konfiguration.
  2. Legen Sie die folgenden Werte fest und übernehmen Sie für alle anderen die Standardeinstellungen:

Attribut

Wert (Wert eingeben oder Option auswählen)

Protokoll

HTTP

IP-Version

IPv4

IP-Adresse

Sitzungsspezifisch

Port

80

  1. Klicken Sie auf Fertig.
  2. Klicken Sie auf Frontend-IP-Adresse und -Port hinzufügen.
  3. Legen Sie die folgenden Werte fest und übernehmen Sie für alle anderen die Standardeinstellungen:

Attribut

Wert (Wert eingeben oder Option auswählen)

Protokoll

HTTP

IP-Version

IPv6

IP-Adresse

Sitzungsspezifisch

Port

80

  1. Klicken Sie auf Fertig.

HTTP-Load-Balancer prüfen und erstellen

  1. Klicken Sie auf Prüfen und abschließen.

2c88715aa5f22800.png

  1. Prüfen Sie die Backend-Dienste und das Frontend.

b2fffef90be309f0.png

  1. Klicken Sie auf Erstellen.
  2. Warten Sie, bis der Load Balancer erstellt ist.
  3. Klicken Sie auf den Namen des Load Balancers (http-lb).
  4. Sehen Sie sich für die nächste Aufgabe die IPv4- und IPv6-Adressen des Load Balancers an. Sie werden als [LB_IP_v4] bzw. [LB_IP_v6] bezeichnet.

6. HTTP Load Balancer testen

Nachdem Sie einen HTTP Load Balancer für Ihre Backends erstellt haben, prüfen Sie nun, ob der Traffic über den Backend-Service weitergeleitet wird.

Auf den HTTP-Load-Balancer zugreifen

Öffnen Sie einen neuen Tab im Browser und rufen Sie http://[LB_IP_v4] auf, um den IPv4-Zugriff auf den HTTP Load Balancer zu testen. Ersetzen Sie [LB_IP_v4] durch die IPv4-Adresse des Load-Balancers.

Wenn Sie eine lokale IPv6-Adresse haben, versuchen Sie es mit der IPv6-Adresse des HTTP-Load-Balancers. Rufen Sie dazu http://[LB_IP_v6] auf. Ersetzen Sie [LB_IP_v6] dabei durch die IPv6-Adresse des Load-Balancers.

812d1fc75d9dfb3c.png

Stresstest des HTTP-Load-Balancers durchführen

Erstellen Sie eine neue VM, um mit „siege“ eine Last auf dem HTTP-Load-Balancer zu simulieren. Finden Sie dann heraus, ob der Traffic zwischen den beiden Back-Ends ausgeglichen wird, wenn die Last hoch ist.

  1. Öffnen Sie in der Konsole das Navigationsmenü ( mainmenu.png) > Compute Engine > VM-Instanzen:
  2. Klicken Sie auf Instanz erstellen.
  3. Legen Sie die folgenden Werte fest und übernehmen Sie für alle anderen die Standardeinstellung:

Attribut

Wert (Wert eingeben oder Option auswählen)

Name

siege-vm

Region

us-west1

Zone

us-west1-c

Reihe

N1

  1. Klicken Sie auf Erstellen.
  2. Warten Sie, bis die Instanz siege-vm erstellt ist.
  3. Klicken Sie bei siege-vm auf SSH, um ein Terminal zu starten und eine Verbindung herzustellen.
  4. Führen Sie den folgenden Befehl aus, um „siege“ zu installieren:
sudo apt-get -y install siege
  1. Führen Sie den folgenden Befehl aus, um die IPv4-Adresse des HTTP-Load-Balancers in einer Umgebungsvariablen zu speichern. Ersetzen Sie dabei [LB_IP_v4] durch die IPv4-Adresse:
export LB_IP=[LB_IP_v4]
  1. Führen Sie den folgenden Befehl aus, um eine Last zu simulieren:
siege -c 250 http://$LB_IP

Die Ausgabe sieht in etwa so aus (Beispielausgabe, bitte nicht kopieren):

New configuration template added to /home/student/.siege
Run siege -C to view the current settings in that file
** SIEGE 4.0.4
** Preparing 250 concurrent users for battle.
The server is now under siege...
  1. Klicken Sie in der Cloud Console auf das Navigationsmenü ( mainmenu.png) und dann auf Netzwerkdienste. Load-Balancing
  2. Klicken Sie auf http-lb.
  3. Klicken Sie auf den Tab Monitoring. Beobachten Sie zwei bis drei Minuten lang den Traffic zwischen Nordamerika und den beiden Back-Ends.

Zuerst sollte der Traffic nur an us-east1-mig weitergeleitet werden. Mit steigender Anzahl der Anfragen pro Sekunde wird der Traffic aber auch an europe-west1-mig weitergeleitet.

ead1e6d5c1f4cc4b.png

Dies zeigt, dass der Traffic standardmäßig an das nächstgelegene Back-End weitergeleitet wird. Wenn die Auslastung jedoch sehr hoch ist, kann der Traffic auf mehrere Back-Ends verteilt werden.

e5c6a657706c832c.png

  1. Kehren Sie zum SSH-Terminal von siege-vm zurück.
  2. Drücken Sie Strg + C, um "siege" zu stoppen.

7. Richtlinie zur Ratenbegrenzung für Cloud Armor erstellen

In diesem Abschnitt verwenden Sie Cloud Armor, um den Zugriff von siege-vm auf den HTTP-Load-Balancer zu verweigern. Dazu legen Sie eine Richtlinie zur Ratenbegrenzung fest.

  1. Erstellen Sie in Cloud Shell eine Sicherheitsrichtlinie über gcloud. Eine Anleitung zur Verwendung von Cloud Shell finden Sie im Abschnitt Cloud Shell starten unter Einrichtung und Anforderungen:
gcloud compute security-policies create rate-limit-siege \
    --description "policy for rate limiting"
  1. Als Nächstes fügen Sie eine Ratenbegrenzungsregel hinzu:
gcloud beta compute security-policies rules create 100 \
    --security-policy=rate-limit-siege     \
    --expression="true" \
    --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
  1. Hängen Sie die Sicherheitsrichtlinie an den Back-End-Dienst "http-backend" an:
gcloud compute backend-services update http-backend \
    --security-policy rate-limit-siege –-global
  1. Öffnen Sie in der Konsole das Navigationsmenü > Netzwerksicherheit > Cloud Armor
  2. Click rate-limit-siege. Ihre Richtlinie sollte in etwa so aussehen:

8be87aa31c2ed74e.png

Sicherheitsrichtlinie überprüfen

  1. Kehren Sie zum SSH-Terminal von "siege-vm" zurück.
  2. Führen Sie einen curl-Befehl für die IP-Adresse des Load-Balancers aus, um zu prüfen, ob Sie immer noch eine Verbindung zu ihr herstellen können. Sie sollten die Antwort 200 erhalten.
curl http://$LB_IP
  1. Führen Sie im SSH-Terminal von „siege-vm“ den folgenden Befehl aus, um eine Last zu simulieren:
siege -c 250 http://$LB_IP

Die Ausgabe sollte wie folgt aussehen (nicht kopieren, dies ist eine Beispielausgabe):

** SIEGE 4.0.4
** Preparing 250 concurrent users for battle.
The server is now under siege...
  1. Untersuchen Sie die Protokolle der Sicherheitsrichtlinie, um festzustellen, ob dieser Traffic auch blockiert wird.
  2. Gehen Sie in der Konsole zum Navigationsmenü > Netzwerksicherheit > Cloud Armor
  3. Klicken Sie auf rate-limit-siege.
  4. Klicken Sie auf Logs.

f8be7c01c3d7c8f5.png

  1. Klicken Sie auf Richtlinienlogs ansehen.
  2. Achten Sie darauf, auf der Seite „Logging“ den gesamten Text in der Abfragevorschau zu löschen.
  3. Wählen Sie die Ressource als Cloud HTTP Load Balancer > http-lb-forwarding-rule > http-lb und dann auf Hinzufügen. Alternativ dazu sehen Sie unten die Abfrage MQL(Monitoring Query Language), die Sie kopieren und in den Query Editer einfügen können:
resource.type="http_load_balancer" resource.labels.forwarding_rule_name="http-lb-forwarding-rule" resource.labels.url_map_name="http-lb"
  1. Klicken Sie jetzt auf Abfrage ausführen.
  2. Maximieren Sie einen Logeintrag in den Abfrageergebnissen.
  3. Maximieren Sie httpRequest. Die Anfrage sollte von der IP-Adresse von siege-vm stammen. Falls nicht, maximieren Sie einen anderen Logeintrag.
  4. Maximieren Sie „jsonPayload“.
  5. Maximieren Sie „forcedSecurityPolicy“.

151f575ba7b3bde9.png

Die konfigurierte Aktion ist auf RATE_BASED_BAN mit dem Namen rate-limit-siege festgelegt.

  1. Um dies zu prüfen, klicken Sie im Navigationsmenü ( mainmenu.png) auf Netzwerkdienste > Load-Balancing Klicken Sie auf http-lb. Klicken Sie auf den Tab Monitoring.

ab9a8a66573a5ebd.png

Sie können den Sieg-Traffic in den Diagrammen sehen. Sie werden auch feststellen, dass der ratenbegrenzte Traffic das Back-End nicht erreicht und durch die Cloud Armor-Richtlinie blockiert wird.

Glückwunsch! Sie haben das Lab zum Thema Ratenbegrenzung mit Cloud Armor abgeschlossen

© 2020 Google LLC. Alle Rechte vorbehalten. Google und das Google-Logo sind Marken von Google LLC. Alle anderen Unternehmens- und Produktnamen können Marken der jeweils mit ihnen verbundenen Unternehmen sein.

8. Lab-Bereinigen

  1. Navigieren Sie zu Netzwerksicherheit >> Wolkenrüstung >> %POLICY NAME% und wählen Sie „Löschen“ aus.

eeafa7cafa11c4c7.png

  1. Gehen Sie zu Netzwerk >> Netzwerkdienste >> Load-Balancing. Wählen Sie den erstellten Load-Balancer aus und klicken Sie auf „Löschen“.

3886458f25cfbd36.png

Wählen Sie den Back-End-Dienst und die Systemdiagnose als zusätzliche Ressourcen aus, die gelöscht werden sollen.

a0193e91b2f4cb6f.png

  1. Gehen Sie zum Navigationsmenü ( mainmenu.png) > Compute Engine > Instanzgruppen: Wählen Sie beide verwalteten Instanzgruppen aus und klicken Sie auf "Löschen".

5027d56977997f70.png

Bestätigen Sie das Löschen, indem Sie „delete“ eingeben in das Textfeld ein.

Warten Sie, bis die verwalteten Instanzgruppen gelöscht sind. Dadurch werden auch die Instanzen in der Gruppe gelöscht. Sie können die Vorlagen erst löschen, nachdem die Instanzgruppe gelöscht wurde.

  1. Klicken Sie im linken Bereich auf Instanzvorlagen.** Wählen Sie beide Instanzvorlagen aus und klicken Sie auf „Delete“ (Löschen).

8d88abacd32c11ce.png

  1. Gehen Sie im linken Bereich zu VM-Instanzen.** Wählen Sie die drei Punkte neben der Instanz „siege-vm“ aus und klicken Sie auf „Löschen“.

2b58ab43695836e9.png

  1. Gehen Sie zum Navigationsmenü ( mainmenu.png) > VPC-Netzwerk > Firewall: Wählen Sie „default-allow-health-check“ aus und klicken Sie auf „Löschen“.

561d5e771d36d85.png

9. Glückwunsch!

Sie haben die Ratenbegrenzung mit Cloud Armor erfolgreich implementiert. Sie haben einen HTTP-Load-Balancer mit Back-Ends in „us-east1“ und „europe-west1“ konfiguriert. Anschließend haben Sie einen Stresstest für den Load-Balancer mit einer VM durchgeführt und die IP-Adresse mithilfe der Ratenbegrenzung mit Cloud Armor auf die Sperrliste gesetzt. Sie konnten die Logs der Sicherheitsrichtlinie untersuchen, um festzustellen, warum dieser Traffic blockiert wurde.

Behandelte Themen

  • Hier erfahren Sie, wie Sie Instanzvorlagen einrichten und verwaltete Instanzgruppen erstellen.
  • HTTP-Load-Balancer einrichten
  • Anleitung zum Erstellen einer Cloud Armor-Richtlinie zur Ratenbegrenzung
  • Hier erfahren Sie, wie Sie prüfen können, ob die Richtlinie zur Ratenbegrenzung funktioniert.

Weiteres Vorgehen

  • Richten Sie eine Richtlinie zur Ratenbegrenzung basierend auf einem Quell-IP-Bereich ein. Beispielbefehl:
gcloud alpha 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
  • Richten Sie eine Richtlinie zur Ratenbegrenzung basierend auf dem Regionscode ein. Beispielbefehl:
gcloud alpha 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 IP