1. Einführung
Mit Google Cloud Armor-Edge-Sicherheitsrichtlinien können Sie den Zugriff auf im Google Cloud CDN und Google Cloud Storage zwischengespeicherte Objekte einschränken. Beispiele für Gründe dafür sind, dass Ihre Nutzer nicht auf Objekte in Speicher-Buckets aus eingeschränkten Regionen zugreifen oder dass Ihre Medienverteilung nach den Regionen gefiltert wird, für die Sie eine Lizenz haben.
In diesem Lab erstellen wir einen GCS-Bucket, laden ein Bild darin hoch, binden ihn an einen Load Balancer und aktivieren dann Cloud CDN- und Edge Security-Richtlinien dafür.
Lerninhalte
- Cloud Storage-Bucket mit cachefähigen Inhalten einrichten
- Edge-Sicherheitsrichtlinie zum Schutz von Inhalten erstellen
- So prüfen Sie, 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 der Festlegung nicht mehr geändert werden). In der Cloud Console wird automatisch ein eindeutiger String generiert. Normalerweise ist es nicht wichtig, wie dieser 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. Nachdem das Projekt erstellt wurde, wird es „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 den Bereinigungsanweisungen am Ende des Codelabs. Neue Nutzer von Google Cloud kommen für das Programm für kostenlose Testversionen 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 dieses 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 im Dezimalformat mit Punkten als Trennzeichen 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 das Häkchen bei Verhinderung des öffentlichen Zugriffs für diesen Bucket erzwingen unter „Öffentlichen Zugriff verhindern“.
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 das Dreipunkt-Menü 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 aktiviert“ 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 alle Anfragen an den Bucket.

Frontend-Konfiguration erstellen
Wählen Sie die Front-End-Konfiguration aus. Für die Frontend-Konfiguration verwenden wir HTTP (HTTPS funktioniert aber auch, wenn Sie ein Zertifikat haben) und eine sitzungsspezifische IP-Adresse. Außerdem muss das Premium-Tier-Netzwerk ausgewählt sein.

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

Load Balancer abfragen
Versuchen Sie nach einigen Minuten, den Load Balancer nach dem hochgeladenen Objekt zu fragen. Sie benötigen die IP-Adresse des Load Balancers und den Namen des Images. 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, ob Ihre Inhalte über CDN- oder Load-Balancing-Monitoring vom 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 bestätigen
Prüfen Sie, ob der Traffic über das CDN bereitgestellt wird. Klicken Sie dazu auf Netzwerkdienste >> CDN.

6. Objekt aus GCS löschen
Nachdem der Cache gefüllt ist, löschen wir das Objekt aus dem Bucket, um zu verdeutlichen, 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 Back-End-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 <
Protokolle prüfen
Als Nächstes können Sie die Logs prüfen, um die angewendete Edge-Sicherheitsrichtlinie zu sehen. Rufen Sie Vorgänge >> Logging >> Log-Explorer auf.
Fügen Sie den folgenden Snippet in die Abfrage ein und klicken Sie auf „Ausführen“.

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

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
Senden Sie nach einigen Minuten 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.