1. Einführung
Mit Google Cloud Armor-Edge-Sicherheitsrichtlinien können Sie den Zugriff auf im Cache gespeicherte Objekte in Google Cloud CDN und Google Cloud Storage einschränken. So können Sie beispielsweise verhindern, dass Nutzer in eingeschränkten Regionen auf Objekte in Storage-Buckets zugreifen, oder sicherstellen, dass Ihre Medienverteilung nach den Regionen gefiltert wird, für die Sie eine entsprechende Lizenz haben.
In diesem Lab erstellen wir einen GCS-Bucket, laden ein Bild hoch, binden ihn an einen Load Balancer und aktivieren dann Cloud CDN und Edge-Sicherheitsrichtlinien.
Lerninhalte
- Cloud Storage-Bucket mit cachefähigen Inhalten einrichten
- Edge-Sicherheitsrichtlinie zum Schutz der Inhalte erstellen
- Prüfen, ob die Edge-Sicherheitsrichtlinie wie erwartet funktioniert
Voraussetzungen
- Grundkenntnisse in den Bereichen Netzwerk und HTTP
- Grundkenntnisse zu Unix/Linux-Befehlszeilen
2. Einrichtung und Anforderungen
Umgebung zum selbstbestimmten Lernen einrichten
- Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.



- Der Projektname ist der Anzeigename für die Teilnehmer dieses Projekts. Es handelt sich um einen String, der nicht von Google APIs verwendet wird und den Sie jederzeit aktualisieren können.
- Die Projekt-ID muss für alle Google Cloud-Projekte eindeutig sein und ist unveränderlich (kann nach dem Festlegen nicht mehr geändert werden). In der Cloud Console wird automatisch ein eindeutiger String generiert. Normalerweise ist es nicht wichtig, wie dieser String aussieht. In den meisten Codelabs müssen Sie auf die Projekt-ID verweisen (die in der Regel als
PROJECT_IDangegeben wird). Wenn Ihnen die ID nicht gefällt, können Sie eine andere zufällige ID generieren oder eine eigene ID ausprobieren und sehen, ob sie verfügbar ist. Danach wird sie „eingefroren“. - Es gibt einen dritten Wert, die Projektnummer, die von einigen APIs verwendet wird. Weitere Informationen zu diesen drei Werten
- Als Nächstes müssen Sie die Abrechnung in der Cloud Console aktivieren, um Cloud-Ressourcen/-APIs verwenden zu können. Die Durchführung dieses Codelabs sollte keine oder nur geringe Kosten verursachen. Wenn Sie Ressourcen herunterfahren möchten, damit nach Abschluss dieses Codelabs keine Gebühren anfallen, folgen Sie der Anleitung zum Bereinigen am Ende des Codelabs. Neue Nutzer von Google Cloud kommen für das kostenlose Testprogramm mit einem Guthaben von 300 $ infrage.
Cloud Shell starten
Während Sie Google Cloud von Ihrem Laptop aus per Fernzugriff nutzen können, wird in diesem Codelab Google Cloud Shell verwendet, 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 sollte nur wenige Augenblicke dauern. Anschließend sehen Sie in etwa Folgendes:

Diese virtuelle Maschine verfügt über sämtliche Entwicklertools, die Sie benötigen. Sie bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und läuft in Google Cloud, was die Netzwerkleistung und Authentifizierung erheblich verbessert. Für alle Aufgaben in diesem Lab benötigen Sie lediglich einen Browser.
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. Cloud Storage-Bucket erstellen
Rufen Sie in der Cloud Console das Navigationsmenü > Cloud Storage > Browser auf. Klicken Sie auf BUCKET ERSTELLEN:

Benennungsregeln für Buckets:
- Der Bucket-Name darf keine vertraulichen Informationen enthalten, da der Bucket-Namespace global und öffentlich sichtbar ist.
- Bucket-Namen dürfen nur Kleinbuchstaben, Ziffern, Bindestriche (-), Unterstriche (_) und Punkte (.) enthalten. Für Namen mit Punkten ist eine Bestätigung erforderlich.
- Bucket-Namen müssen mit einer Ziffer oder einem Buchstaben beginnen und enden.
- Bucket-Namen dürfen 3 bis 63 Zeichen lang sein. Namen mit Punkten dürfen bis zu 222 Zeichen lang sein, wobei jeder durch einen Punkt getrennte Teil nicht mehr als 63 Zeichen enthalten darf.
- Bucket-Namen dürfen nicht wie eine IP-Adresse in Dezimalpunktschreibweise dargestellt werden (z. B. 192.168.5.4).
- Bucket-Namen dürfen nicht mit dem Präfix „goog“ beginnen.
- Bucket-Namen dürfen nicht das Wort „google“ oder ähnliche, falsch geschriebene Versionen von „google“ enthalten.
- Außerdem sollten Sie wegen DNS-Compliance und zukünftiger Kompatibilität keine Unterstriche (_) verwenden oder einen Punkt neben einen anderen Punkt oder Bindestrich setzen. „..“, „-.“ und „.-“ sind in DNS-Namen nicht zulässig.
Klicken Sie auf WEITER.
Standorttyp:Region
Standort:Wählen Sie eine Region aus, die weit von Ihnen entfernt ist.
Klicken Sie auf WEITER.
Standard-Speicherklasse:Standard
Klicken Sie auf WEITER.
Entfernen Sie unter „Öffentlichen Zugriff verhindern“ das Häkchen bei Verhinderung des öffentlichen Zugriffs für diesen Bucket erzwingen.
Wählen Sie unter „Zugriffssteuerung“ die Option Detailgenau aus.
Klicken Sie auf WEITER.
Wenn Sie den Bucket konfiguriert haben, klicken Sie auf ERSTELLEN:
Fertig – Sie haben soeben einen Cloud Storage-Bucket erstellt.
4. Objekt in den Bucket hochladen
Laden Sie jetzt ein Objekt in den Bucket hoch.
Laden Sie dieses Bild zuerst in eine temporäre Instanz in Cloud Shell herunter. Im folgenden Beispiel wird das Google-Bild von der Google-Startseite verwendet.
Über Cloud Shell
wget --output-document google.png https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png
Verwenden Sie den Befehl „gsutil cp“, um das Bild vom gewählten Speicherort in den Bucket hochzuladen:
Über Cloud Shell
gsutil cp google.png gs://YOUR-BUCKET-NAME
Löschen Sie jetzt das heruntergeladene Bild:
Über Cloud Shell
rm google.png
Suchen Sie Ihr Objekt, klicken Sie rechts auf die drei Punkte und bearbeiten Sie die Berechtigungen so, dass sie öffentlich sind.


5. Load Balancer erstellen
Als Nächstes erstellen wir einen HTTP-Load-Balancer.
Rufen Sie Netzwerk >> Netzwerkdienste >> Load-Balancing >> Load Balancer erstellen >> HTTP-Load-Balancer >> Internet zu meinen VMs >> Klassischer HTTP(S)-Load-Balancer auf.
Erstellen Sie zuerst einen Namen für den Load-Balancer, den Sie erstellen werden.
Backend-Bucket erstellen
Erstellen Sie einen neuen Backend-Bucket, der dem Bucket entspricht, den Sie gerade erstellt haben, und wählen Sie „CDN aktivieren“ und „Statische Inhalte im Cache speichern“ aus. Klicken Sie auf „Erstellen“.

Host- und Pfadregeln erstellen
Rufen Sie links die Host- und Pfadregeln auf. Wir verwenden eine einfache Host-/Pfadregel und senden jede Anfrage an den Bucket.

Frontend-Konfiguration erstellen
Wählen Sie die Front-End-Konfiguration aus. Für die Frontend-Konfiguration verwenden wir HTTP (HTTPS funktioniert auch, wenn Sie ein Zertifikat haben) und eine sitzungsspezifische IP-Adresse. Achten Sie darauf, dass Sie das Premium-Netzwerk ausgewählt haben.

Klicken Sie auf „Erstellen“
IP-Adresse des Load Balancers abrufen
Rufen Sie die IP-Adresse des Load Balancers in der Console ab, indem Sie in der Liste der Load Balancer für Ihr Projekt auf den Namen des gewünschten Load Balancers klicken.

Load Balancer abfragen
Versuchen Sie nach ein paar Minuten, den Load Balancer nach dem hochgeladenen Objekt abzufragen. Sie benötigen die IP-Adresse des Load Balancers und den Namen des Bilds. Der Befehl ist so strukturiert:
Vom Terminal
curl -svo /dev/null http://LOAD_BALANCER_IP/google.png
Ausgabe
armanrye-macbookpro% curl -svo /dev/null http://34.98.81.123/google.png * Trying 34.98.81.123... * TCP_NODELAY set * Connected to 34.98.81.123 (34.98.81.123) port 80 (#0) > GET /google.png HTTP/1.1 > Host: YOUR_IP > User-Agent: curl/7.64.1 > Accept: */* > < HTTP/1.1 200 OK < X-GUploader-UploadID: ADPycdtoILI76KVsvBvdVGvSfzaxys1m3zYqCepBrmJxAI48ni24cWCRIdNu-53PX3DS6iycxp6xwFbMpwtcHHZQUQmEBxAgng < Expires: Mon, 13 Dec 2021 22:58:26 GMT < Date: Mon, 13 Dec 2021 21:58:26 GMT < Cache-Control: public, max-age=3600 < Last-Modified: Mon, 13 Dec 2021 21:45:57 GMT < ETag: "8f9327db2597fa57d2f42b4a6c5a9855" < x-goog-generation: 1639431957957903 < x-goog-metageneration: 2 < x-goog-stored-content-encoding: identity < x-goog-stored-content-length: 5969 < Content-Type: image/png < x-goog-hash: crc32c=TeiHTA== < x-goog-hash: md5=j5Mn2yWX+lfS9CtKbFqYVQ== < x-goog-storage-class: STANDARD < Accept-Ranges: bytes < Content-Length: 5969 < Server: UploadServer
Prüfen Sie mit dem Monitoring für CDN oder Load Balancing, ob Ihre Inhalte über das CDN bereitgestellt werden. Sie sollten eine Trefferquote von nahezu 100 % erreichen können. Wenn Sie einige Abfragen ausführen müssen, können Sie so vorgehen:
Vom Terminal
#for i in `seq 1 50`; do curl http://%loadbalncer-IP%/google.png; done
Von Cloud CDN bereitgestellte Inhalte prüfen
Prüfen Sie, ob der Traffic über das CDN bereitgestellt wird. Rufen Sie dazu Netzwerkdienste >> CDN auf.

6. Objekt aus GCS löschen
Nachdem der Cache gefüllt ist, löschen wir das Objekt aus dem Bucket. So können wir erkennen, dass wir die Richtlinie auf den Cache und nicht auf das Backend anwenden.
Rufen Sie Cloud Storage >> %bucket name% >> Objekte auf.
Wählen Sie das Bild aus und löschen Sie es.

7. Edge-Sicherheitsrichtlinie für Ihren CDN-Cache erstellen
Rufen Sie Netzwerksicherheit >> Cloud Armor auf und klicken Sie auf „Richtlinie erstellen“.
Wählen Sie Folgendes aus:
Richtlinientyp: Edge-Sicherheitsrichtlinie
Standardaktion: Ablehnen



Wenden Sie die Richtlinie auf Ihren Backend-Bucket an.
8. Edge-Sicherheitsrichtlinie validieren
Nachdem wir eine Edge-Sicherheitsrichtlinie vor unserem Backend-Bucket erstellt haben, prüfen wir, ob sie wie erwartet funktioniert.
Sicherheitsrichtlinie prüfen
Nach einigen Minuten können Sie prüfen, ob die Cloud Armor-Richtlinie ausgeführt wird. Wenn Sie in der Befehlszeile den folgenden Befehl ausführen, erhalten Sie den Fehlercode 403:
Vom Terminal
curl -svo /dev/null http://LOAD_BALANCER_IP/google.png
Ausgabe
curl -svo /dev/null http://34.98.81.123/google.png * Trying 34.98.81.123... * TCP_NODELAY set * Connected to 34.98.81.123 (34.98.81.123) port 80 (#0) > GET /google.png HTTP/1.1 > Host: YOUR_IP > User-Agent: curl/7.64.1 > Accept: */* > < HTTP/1.1 403 Forbidden < X-GUploader-UploadID: ADPycdtS6FtJOGIsiWYDrAAE8VFeQuNutcvbGoQe2t8EZxsuspVtmCjyiTv_P3CNktroHMOGFXkTCfG-Jj-rUO60ZGPpEbpqcw < Content-Type: application/xml; charset=UTF-8 < Content-Length: 111 < Date: Mon, 13 Dec 2021 23:09:35 GMT < Expires: Mon, 13 Dec 2021 23:09:35 GMT < Cache-Control: private, max-age=0 < Server: UploadServer <
Logs untersuchen
Als Nächstes können Sie die Logs prüfen, um die erzwungene Edge-Sicherheitsrichtlinie zu sehen. Rufen Sie Vorgänge >> Logging >> Log-Explorer auf.
Fügen Sie das folgende Snippet in die Abfrage ein und klicken Sie auf „Ausführen“.

resource.type:(http_load_balancer) AND jsonPayload.enforcedEdgeSecurityPolicy.name:(%SECURITY_POLICY_NAME%)
Beachten Sie die 403-Antwort und die erzwungene Sicherheitsrichtlinie.

Sicherheitsrichtlinie entfernen
Entfernen Sie die Sicherheitsrichtlinie und fragen Sie das Objekt aus dem Cache ab.
Gehen Sie zu Netzwerksicherheit >> Cloud Armor >> %POLICY NAME% >> Ziele und entfernen Sie den Ziel-Bucket.

Entfernung der Richtlinie bestätigen
Warten Sie einige Minuten und senden Sie dann einen weiteren curl-Befehl an die Ressource im Storage-Bucket. Diesmal erhalten Sie eine 200-Antwort.
Vom Terminal
curl -svo /dev/null http://LOAD_BALANCER_IP/google.png
Ausgabe
armanrye-macbookpro% curl -svo /dev/null http://34.98.81.123/google.png
* Trying 34.98.81.123...
* TCP_NODELAY set
* Connected to 34.98.81.123 (34.98.81.123) port 80 (#0)
> GET /google.png HTTP/1.1
> Host: YOUR_IP
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 200 OK
< X-GUploader-UploadID: ADPycdtI7f49P3MSuZSZ8vl6RwfwmnIDJ59EeSKp7UPvLPawdaiRHXiNWLtseQTxUxceWOvSLvpYmT3pWVkV4qeIP7M
< Date: Mon, 13 Dec 2021 23:06:46 GMT
< Last-Modified: Mon, 13 Dec 2021 21:45:57 GMT
< ETag: "8f9327db2597fa57d2f42b4a6c5a9855"
< x-goog-generation: 1639431957957903
< x-goog-metageneration: 2
< x-goog-stored-content-encoding: identity
< x-goog-stored-content-length: 5969
< Content-Type: image/png
< x-goog-hash: crc32c=TeiHTA==
< x-goog-hash: md5=j5Mn2yWX+lfS9CtKbFqYVQ==
< x-goog-storage-class: STANDARD
< Accept-Ranges: bytes
< Content-Length: 5969
< Server: UploadServer
< Age: 1621
< Cache-Control: public,max-age=3600
<
{ [775 bytes data]
* Connection #0 to host 34.98.81.123 left intact
* Closing connection 0
Glückwunsch! Sie haben dieses Lab zu Cloud Armor-Edge-Sicherheitsrichtlinien abgeschlossen.
© 2020 Google LLC. Alle Rechte vorbehalten. Google und das Google-Logo sind Marken von Google LLC. Alle anderen Firmen- und Produktnamen können Marken der betreffenden Unternehmen sein.
9. Lab bereinigen
Rufen Sie Netzwerksicherheit >> Cloud Armor >> %POLICY NAME% auf und wählen Sie „Löschen“ aus.

Rufen Sie Cloud Storage auf, wählen Sie den von Ihnen erstellten Bucket aus und klicken Sie auf „Löschen“.

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

10. Glückwunsch!
Sie haben das Codelab „Edge-Cache mit Cloud Armor schützen“ abgeschlossen.
Behandelte Themen
- Cloud Storage-Bucket und zugehörigen Cloud Load Balancer einrichten
- Cloud Armor-Edge-Sicherheitsrichtlinie erstellen
- So prüfen Sie, ob die Edge-Sicherheitsrichtlinie wie vorgesehen funktioniert.
Weiteres Vorgehen
- Richten Sie eine Edge-Sicherheitsrichtlinie mit einem Cache-Treffer aus einer Compute Engine-Ressource ein.