Liste der benannten IP-Adressen von Cloud Armor

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.

27243e72ee25ee16.png

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.

7e9c09a008e04656.png

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

68a800f9adbf4570.png

5. Einrichtung und Anforderungen

Umgebung für das selbstbestimmte Lernen einrichten

  1. 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.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

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.

  1. 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:

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.

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.

  1. Klicken Sie in Compute Engine im linken Menü auf „VM-Instanzen“.
  2. Beachten Sie die Instanzen, die mit us-east1-mig beginnen. Diese Instanzen sind Teil der verwalteten Instanzgruppen.
  3. 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

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

start_config.png

  1. Wählen Sie „Vom Internet zu meinen VMs“ 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. 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".
  3. Backend-Typ ist Instanzgruppe
  4. Legen Sie die folgenden Werte fest und übernehmen Sie für alle anderen die Standardeinstellung: 18bf7a852f0759ee.png
  5. Klicken Sie auf "Fertig".
  6. Wählen Sie für „Systemdiagnose“ die Option „Systemdiagnose erstellen“ aus. health_check.png
    1. Legen Sie die folgenden Werte fest und übernehmen Sie für alle anderen die Standardeinstellung: d2f85af1e988532b.png
  7. Klicken Sie auf Speichern und fortfahren.
  8. Klicken Sie auf „Erstellen“, um den Back-End-Dienst zu erstellen.

b00c217bf592f0.png

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.

  1. Klicken Sie auf „Front-End-Konfiguration“.
  2. http-front-end
  3. Geben Sie Folgendes an und übernehmen Sie für alle anderen Werte die Standardwerte (51ae16211e72142f.png)
  4. Klicken Sie auf "Fertig".

8. HTTP Load Balancer prüfen und erstellen

  1. Klicken Sie auf „Überprüfen und abschließen“.

8efe5b462a80071d.png

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

30b06910bf7fae29.png

  1. Klicken Sie auf „Erstellen“.
  2. Warten Sie einige Minuten, bis der Load-Balancer erstellt ist
  3. Klicken Sie auf den Namen des Load-Balancers (http-lb).
  4. 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.

  1. 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.

f93410e9568f1f32.png

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

  1. Da die Sicherheitsrichtlinie implementiert ist, ist der Zugriff auf den Load-Balancer von Ihrer Workstation aus nicht autorisiert.
  2. Ö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