1. Einführung
Mit benannten IP-Adresslisten in Google Cloud Armor können Sie auf Listen mit IP-Adressen und IP-Bereichen verweisen, die von Drittanbietern verwaltet werden. Sie können Listen benannter IP-Adressen innerhalb einer Sicherheitsrichtlinie konfigurieren. Sie müssen nicht jede IP-Adresse oder jeden IP-Bereich einzeln manuell angeben.
Aufgaben in diesem Lab
- Vorteile der benannten IP-Adressliste in Cloud Armor
- Cloud Armor-Sicherheitsrichtlinie erstellen
- Cloud Armor-Liste mit benannten IP-Adressen bereitstellen
- Globalen Load-Balancer erstellen
- Verwaltete Instanzgruppe mit Beispieltestanwendung erstellen
Voraussetzungen
- Erfahrung mit Sicherheitsrichtlinien und Load-Balancern
2. Traffic nur von zulässigen Drittanbietern zulassen
Ein typischer Anwendungsfall ist das Erstellen einer Zulassungsliste mit den IP-Adressen eines zulässigen Drittanbieters, damit nur Traffic von diesem Partner auf den Load-Balancer und die Back-Ends zugreifen kann.
CDN-Anbieter müssen beispielsweise in regelmäßigen Abständen Inhalte von Ursprungsservern abrufen, um sie an ihre eigenen Caches zu verteilen. Eine Partnerschaft mit Google ermöglicht eine direkte Verbindung zwischen CDN-Anbietern und dem Edge-Netzwerk von Google. CDN-Nutzer in Google Cloud können diese direkte Verbindung bei Ursprungs-Abrufen verwenden. In diesem Fall kann der CDN-Nutzer eine Sicherheitsrichtlinie erstellen, die nur Traffic zulässt, der von diesem bestimmten CDN-Anbieter kommt.
In diesem Beispiel veröffentlicht ein CDN-Anbieter seine IP-Adressliste: 23.235.32.0/20, 43.249.72.0/22, ⋯. Ein CDN-Nutzer konfiguriert eine Sicherheitsregel, die nur Traffic von diesen IP-Adressen zulässt. Infolgedessen sind zwei Zugangspunkte für CDN-Anbieter zulässig (23.235.32.10 und 43.249.72.10) und ihr Traffic ist somit zulässig. Traffic vom nicht autorisierten Zugriffspunkt 198.51.100.1 wird blockiert.
Benannte IP-Adresse in Google Cloud Armor
3. Konfiguration und Verwaltung mithilfe vorkonfigurierter Regeln vereinfachen
CDN-Anbieter verwenden häufig bekannte IP-Adressen, die von vielen CDN-Nutzern verwendet werden müssen. Diese Listen ändern sich im Laufe der Zeit, wenn Anbieter IP-Adressen hinzufügen, entfernen und aktualisieren.
Die Verwendung einer Liste benannter IP-Adressen in einer Sicherheitsrichtlinienregel vereinfacht das Konfigurieren und Verwalten von IP-Adressen, da Google Cloud Armor Informationen von CDN-Anbietern täglich automatisch synchronisiert. Dadurch entfällt der zeitaufwendige und fehleranfällige Prozess der manuellen Verwaltung einer großen IP-Adressliste.
Anbieter von IP-Adresslisten
Die Anbieter von IP-Adressenlisten in der folgenden Tabelle werden für Google Cloud Armor unterstützt. Dies sind CDN-Provider, die mit Google eine Partnerschaft eingegangen sind. Die IP-Adresslisten werden über einzelne öffentliche URLs veröffentlicht.
Diese Partner stellen separate Listen mit IPv4- und IPv6-Adressen bereit. Google Cloud Armor verwendet die bereitgestellten URLs zum Abrufen von Listen und konvertiert sie dann in benannte IP-Adresslisten. Sie verweisen auf die Listen durch die Namen in der Tabelle.
Alternativ können Sie Cloud Shell verwenden, um eine Liste vorkonfigurierter benannter IP-Adresslisten abzurufen
In Cloud Shell anmelden und Projekt-ID festlegen
gcloud config list project gcloud config set project [YOUR-PROJECT-ID] Perform setting your projectID: projectid=YOUR-PROJECT-ID echo $projectid
Aus Cloud Shell
gcloud compute security-policies list-preconfigured-expression-sets \ --filter="id:sourceiplist"
Dadurch wird Folgendes zurückgegeben:
EXPRESSION_SET sourceiplist-fastly sourceiplist-cloudflare sourceiplist-imperva
4. Codelab-Topologie
5. Einrichtung und Anforderungen
Umgebung für das selbstbestimmte Lernen einrichten
- Melden Sie sich in der 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.
Notieren Sie sich die Projekt-ID, also den projektübergreifend nur einmal vorkommenden Namen eines Google Cloud-Projekts. Der oben angegebene Name ist bereits vergeben und kann leider nicht mehr verwendet werden. Sie wird in diesem Codelab später als PROJECT_ID
bezeichnet.
- Als Nächstes müssen Sie in der Cloud Console die Abrechnung aktivieren, um Google Cloud-Ressourcen nutzen zu können.
Dieses Codelab sollte möglichst wenig kosten. Folgen Sie der Anleitung im Abschnitt „Bereinigen“, . Hier erfahren Sie, wie Sie Ressourcen herunterfahren, damit Ihnen über dieses Tutorial hinaus keine Kosten entstehen. 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:
Die Bereitstellung und Verbindung mit der Umgebung dauert nur einen Moment. Wenn er abgeschlossen ist, sollten Sie in etwa Folgendes sehen:
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.
6. VPC-Netzwerk erstellen
VPC-Netzwerk
Von Cloud Shell
gcloud compute networks create
named-list-vpc
--subnet-mode custom
Subnetz erstellen
Von Cloud Shell
gcloud compute networks subnets create named-ip-subnet \ --network
named-list-vpc
--range 10.0.0.0/24 --region us-east1
Firewallregeln erstellen
Von Cloud Shell
gcloud compute --project=$projectid firewall-rules create default-allow-http --direction=INGRESS --priority=1000 --network=named-list-vpc --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0
gcloud compute --project=$projectid firewall-rules create default-allow-health-check --direction=INGRESS --priority=1000 --network=named-list-vpc --action=ALLOW --rules=tcp --source-ranges=130.211.0.0/22,35.191.0.0/16
Load-Balancer erstellen
Instanzvorlage erstellen
Von Cloud Shell
gcloud beta compute --project=$projectid instance-templates create us-east1-template --machine-type=e2-medium --subnet=projects/$projectid/regions/us-east1/subnetworks/named-ip-subnet --network-tier=PREMIUM --metadata=startup-script-url=gs://cloud-training/gcpnet/httplb/startup.sh --maintenance-policy=MIGRATE --image=debian-10-buster-v20210217 --image-project=debian-cloud --boot-disk-size=10GB --boot-disk-type=pd-balanced --boot-disk-device-name=us-east1-template --no-shielded-secure-boot --no-shielded-vtpm --no-shielded-integrity-monitoring --reservation-affinity=any
Verwaltete Instanzgruppe erstellen
Von Cloud Shell
gcloud compute --project=$projectid instance-groups managed create us-east1-mig --base-instance-name=us-east1-mig --template=us-east1-template --size=1 --zone=us-east1-b
7. Backends prüfen
Prüfen Sie, ob VM-Instanzen in beiden Regionen erstellt werden und auf ihre HTTP-Websites zugreifen.
- Klicken Sie in Compute Engine im linken Menü auf „VM-Instanzen“.
- Beachten Sie die Instanzen, die mit us-east1-mig beginnen. Diese Instanzen sind Teil der verwalteten Instanzgruppen.
- Klicken Sie auf die externe IP-Adresse einer Instanz von us-east1-mig. Sie sollten die Client-IP (Ihre IP-Adresse) und den Hostnamen (beginnt mit us-east1-mig) sehen.
HTTP-Load-Balancer konfigurieren
- Klicken Sie in der Cloud Console auf das Navigationsmenü ( ) > klicken Sie auf „Netzwerkdienste“ > Load-Balancing und klicken Sie dann auf "Load-Balancer erstellen".
- Klicken Sie unter HTTP(S)-Load-Balancing auf „Konfiguration starten“.
- Wählen Sie „Vom Internet zu meinen VMs“ aus und klicken Sie auf „Weiter“.
- 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.
- Klicken Sie auf „Backend-Konfiguration“.
- Für Backend-Dienste und Backend-Buckets erstellen oder Backend-Dienste erstellen und Back-End-Buckets. Klicken Sie dann auf "Back-End-Dienste" und anschließend auf "Back-End-Dienst erstellen".
- Backend-Typ ist Instanzgruppe
- Legen Sie die folgenden Werte fest und übernehmen Sie für alle anderen die Standardeinstellung:
- Klicken Sie auf "Fertig".
- Wählen Sie für „Systemdiagnose“ die Option „Systemdiagnose erstellen“ aus.
- Legen Sie die folgenden Werte fest und übernehmen Sie für alle anderen die Standardeinstellung:
- Klicken Sie auf Speichern und fortfahren.
- Klicken Sie auf „Erstellen“, um den Back-End-Dienst zu erstellen.
Frontend konfigurieren
Host- und Pfadregeln bestimmen, wohin Ihr Traffic weitergeleitet wird. Sie könnten beispielsweise Traffic, der durch Videos entsteht, an ein Back-End weiterleiten und Traffic, der aus statischen Daten entsteht, an ein anderes Back-End. Allerdings konfigurieren wir in diesem Lab keine Host- und Pfadregeln.
- Klicken Sie auf „Front-End-Konfiguration“.
- http-front-end
- Geben Sie Folgendes an und übernehmen Sie für alle anderen Werte die Standardwerte ()
- Klicken Sie auf "Fertig".
8. HTTP Load Balancer prüfen und erstellen
- Klicken Sie auf „Überprüfen und abschließen“.
- Prüfen Sie die Backend-Dienste und das Frontend.
- Klicken Sie auf „Erstellen“.
- Warten Sie einige Minuten, bis der Load-Balancer erstellt ist
- Klicken Sie auf den Namen des Load-Balancers (http-lb).
- Notieren Sie sich die IPv4-Adresse des Load-Balancers für die nächste Aufgabe, die als http-lb bezeichnet wird.
9. Erfolgreichen unbefugten Zugriff validieren
Prüfen Sie vor der Implementierung der Richtlinie für benannte IP-Adressen, ob der unbefugte Zugriff auf den Lab-Balancer und die nachfolgende Webanwendung erfolgreich war. Hinweis: Sobald die benannte IP-Adressrichtlinie implementiert ist, ist der Zugriff auf die Webanwendung auf den bereitgestellten Ausdruckssatz beschränkt.
- Ermitteln Sie die im vorherigen Schritt erstellte IP-Adresse des Load-Balancers (http-lb) und fügen Sie sie in Ihren Webbrowser ein. Die Ausgabe sieht in etwa wie im Screenshot unten aus.
HINWEIS: Dieser Schritt dauert einige Minuten. Nachdem die Webseite erstellt wurde, stammt die Client-IP-Adresse aus Google Front End und nicht aus Ihrer Workstation-IP-Adresse.
Führen Sie auf Ihrer Workstation eine ähnliche Validierung wie unten angegeben durch.
bash-3.2$ curl <load-balancer-IP>
10. Beispielausgabe
bash-3.2$ curl <load-balancer-ip> <h1>HTTP Load Balancing Lab</h1><h2>Client IP</h2>Your IP address : 35.191.0.151<h2>Hostname</h2>Server Hostname: us-east1-mig-8nqq<h2>Server Location</h2>Region and Zone: us-east1-b
11. Benannte IP-Liste konfigurieren
Neue Cloud Amour-Richtlinie für benannte IP-Liste erstellen
Von Cloud Shell
gcloud compute --project=$projectid security-policies create ca-policy
Von Cloud Shell
gcloud compute --project=$projectid security-policies rules update 2147483647 --action=deny-403 --security-policy=ca-policy --description="Default rule, higher priority overrides it" --src-ip-ranges=\*
Ermitteln Sie verfügbare Adressen von CDN-benannten IP-Listen.
Von Cloud Shell
gcloud compute security-policies list-preconfigured-expression-sets \ --filter="id:sourceiplist"
Dadurch wird Folgendes zurückgegeben:
EXPRESSION_SET sourceiplist-fastly sourceiplist-cloudflare sourceiplist-imperva
Konfigurieren Sie in Cloud Shell die Liste benannter IP-Adressen basierend auf Ihrem verfügbaren CDN-Ausdruckssatz
gcloud beta compute security-policies rules create 600 \ --security-policy ca-policy \ --expression "evaluatePreconfiguredExpr('expression_set')" \ --action "allow"
Beispiel mit Cloudflare
gcloud beta compute security-policies rules create 600 \ --security-policy ca-policy \ --expression "evaluatePreconfiguredExpr('sourceiplist-cloudflare')" \ --action "allow"
12. CA-Sicherheitsrichtlinie anwenden
CA-Sicherheitsrichtlinie anwenden und einige Minuten auf die Weitergabe der globalen Richtlinie warten
gcloud compute backend-services update http-backend --security-policy ca-policy --global
13. Validierung benannter IP-Adressen
- Da die Sicherheitsrichtlinie implementiert ist, ist der Zugriff auf den Load-Balancer von Ihrer Workstation aus nicht autorisiert.
- Öffnen Sie zur Validierung ein Terminalfenster von Ihrer Workstation aus und führen Sie einen curl-Befehl für die IP-Adresse des Load-Balancers aus. Die Ausgabe des curl-Befehls liefert den Fehler „403“. Ungültiger Fehler, da Ihre Workstation jetzt nicht autorisiert ist.
Von Ihrer Workstation
bash-3.2$ curl <load-balancer-IP> <!doctype html><meta charset="utf-8"><meta name=viewport content="width=device-width, initial-scale=1"><title>403</title>403 Forbidden
Bereinigungsschritte
gcloud -q compute backend-services update http-backend --security-policy "" --global gcloud -q compute --project=$projectid security-policies delete ca-policy gcloud -q compute forwarding-rules delete http-front-end --global gcloud -q compute target-http-proxies delete http-lb-target-proxy gcloud -q compute url-maps delete http-lb gcloud -q compute backend-services delete http-backend --global gcloud -q compute health-checks delete http-health-check gcloud -q compute --project=$projectid instance-groups managed delete us-east1-mig --zone=us-east1-b gcloud -q beta compute --project=$projectid instance-templates delete us-east1-template gcloud -q compute --project=$projectid firewall-rules delete default-allow-http gcloud -q compute --project=$projectid firewall-rules delete default-allow-health-check gcloud -q compute networks subnets delete named-ip-subnet --region us-east1 gcloud -q compute networks delete named-list-vpc
14. Glückwunsch!
Herzlichen Glückwunsch zum Abschluss des Codelabs.
Behandelte Themen
- Vorteile der benannten IP-Adressliste in Cloud Armor
- Globalen Load-Balancer erstellen
- Verwaltete Instanzgruppe mit Beispieltestanwendung erstellen
- Cloud Armor-Sicherheitsrichtlinie erstellen
- Cloud Armor-Liste mit benannten IP-Adressen bereitstellen
- Cloud Armor-Richtlinie für benannte IP-Adressen validieren