1. Wprowadzenie
Zasady zabezpieczeń brzegowych Google Cloud Armor umożliwiają ograniczenie dostępu do obiektów w pamięci podręcznej w Google Cloud CDN i Google Cloud Storage. Może to być np. konieczne, aby uniemożliwić użytkownikom dostęp do obiektów w zasobnikach pamięci z ograniczonych regionów geograficznych lub aby zapewnić, że dystrybucja multimediów jest filtrowana pod kątem regionów geograficznych, w których masz licencję na takie działania.
W tym module utworzymy zasobnik GCS, prześlemy do niego obraz, powiążemy go z systemem równoważenia obciążenia, a następnie włączymy w nim zasady Cloud CDN i Edge Security.
Czego się nauczysz
- Jak skonfigurować zasobnik Cloud Storage z treściami, które można przechowywać w pamięci podręcznej
- Jak utworzyć zasadę zabezpieczeń brzegowych, aby chronić treści
- Jak sprawdzić, czy zasady zabezpieczeń brzegowych działają zgodnie z oczekiwaniami
Czego potrzebujesz
- Podstawowa znajomość sieci i protokołu HTTP
- Podstawowa znajomość wiersza poleceń w systemach Unix i Linux
2. Konfiguracja i wymagania
Samodzielne konfigurowanie środowiska
- Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.



- Nazwa projektu to wyświetlana nazwa uczestników tego projektu. Jest to ciąg znaków, który nie jest używany przez interfejsy API Google. Możesz go w dowolnym momencie zaktualizować.
- Identyfikator projektu musi być unikalny we wszystkich projektach Google Cloud i jest niezmienny (nie można go zmienić po ustawieniu). Konsola Cloud automatycznie generuje unikalny ciąg znaków. Zwykle nie musisz się nim przejmować. W większości modułów z kodem musisz odwoływać się do identyfikatora projektu (zwykle oznaczanego jako
PROJECT_ID). Jeśli Ci się nie podoba, wygeneruj inny losowy identyfikator lub spróbuj użyć własnego i sprawdź, czy jest dostępny. Po utworzeniu projektu jest on „zamrażany”. - Istnieje też trzecia wartość, czyli numer projektu, którego używają niektóre interfejsy API. Więcej informacji o tych 3 wartościach znajdziesz w dokumentacji.
- Następnie musisz włączyć płatności w konsoli Cloud, aby korzystać z zasobów i interfejsów API Google Cloud. Ukończenie tego laboratorium nie powinno wiązać się z dużymi kosztami, a nawet z żadnymi. Aby wyłączyć zasoby i uniknąć naliczenia opłat po zakończeniu tego samouczka, postępuj zgodnie z instrukcjami „czyszczenia” na końcu ćwiczenia. Nowi użytkownicy Google Cloud mogą skorzystać z bezpłatnego okresu próbnego, w którym mają do dyspozycji środki w wysokości 300 USD.
Uruchamianie Cloud Shell
Z Google Cloud można korzystać zdalnie na laptopie, ale w tym module praktycznym będziesz używać Google Cloud Shell, czyli środowiska wiersza poleceń działającego w chmurze.
W konsoli GCP kliknij ikonę Cloud Shell na pasku narzędzi w prawym górnym rogu:

Uzyskanie dostępu do środowiska i połączenie się z nim powinno zająć tylko kilka chwil. Po zakończeniu powinno wyświetlić się coś takiego:

Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera również stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i usprawnia proces uwierzytelniania. Wszystkie zadania w tym module możesz wykonać w przeglądarce.
Zanim zaczniesz
W Cloud Shell sprawdź, czy identyfikator projektu jest skonfigurowany.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] PROJECT_ID=[YOUR-PROJECT-NAME] echo $PROJECT_ID
włączyć interfejsy API,
Włącz wszystkie niezbędne usługi
gcloud services enable compute.googleapis.com gcloud services enable logging.googleapis.com gcloud services enable monitoring.googleapis.com
3. Tworzenie zasobnika Cloud Storage
W Cloud Console wybierz menu nawigacyjne > Cloud Storage > Przeglądarka. Kliknij UTWÓRZ ZASOBNIK:

Reguły nazewnictwa zasobników:
- W nazwie zasobnika nie umieszczaj informacji poufnych, ponieważ przestrzeń nazw zasobników jest globalna i widoczna publicznie.
- Nazwa zasobnika może zawierać wyłącznie małe litery, cyfry, łączniki (-), znaki podkreślenia (_) i kropki (.). Nazwy zawierające kropki wymagają zatwierdzenia.
- Nazwy zasobników muszą zaczynać się i kończyć cyfrą lub literą.
- Nazwy zasobników muszą mieć od 3 do 63 znaków. Nazwy zawierające kropki mogą liczyć do 222 znaków, ale długość każdej części oddzielonej kropką nie może przekraczać 63 znaków.
- Nazw zasobników nie można zapisywać w notacji kropkowo-dziesiętnej, używanej do zapisywania adresów IP (na przykład: 192.168.5.4).
- Nazwy zasobników nie mogą zaczynać się od przedrostka „goog”.
- Nazwy zasobników nie mogą zawierać słowa „google” ani żadnego słowa podobnego w zapisie do „google”.
- Z uwagi na wymogi DNS i przyszłą zgodność nie używaj znaków podkreślenia (_) ani nie stawiaj 2 kropek obok siebie lub kropki obok łącznika. Na przykład: „..” lub „-.” czy też „.-” nie są nazwami zgodnymi z wymogami DNS.
Kliknij DALEJ.
Typ lokalizacji: region
Lokalizacja: wybierz region oddalony od Ciebie.
Kliknij DALEJ.
Domyślna klasa pamięci masowej: Standardowa
Kliknij DALEJ.
Odznacz pole wyboru Wyegzekwuj blokadę dostępu publicznego do tego zasobnika w sekcji Zablokuj dostęp publiczny.
W sekcji Kontrola dostępu wybierz Szczegółowa.
Kliknij DALEJ.
Po skonfigurowaniu zasobnika kliknij UTWÓRZ:
I to wszystko – właśnie udało Ci się utworzyć zasobnik Cloud Storage.
4. Przesyłanie obiektu do zasobnika
Teraz dowiesz się, jak przesłać obiekt do swojego zasobnika.
Najpierw pobierz ten obraz na tymczasową instancję w Cloud Shell. W przykładzie poniżej użyto obrazu Google ze strony głównej Google.
Z Cloud Shell
wget --output-document google.png https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png
Użyj polecenia gsutil cp, aby przesłać obraz z miejsca zapisu do utworzonego zasobnika:
Z Cloud Shell
gsutil cp google.png gs://YOUR-BUCKET-NAME
Teraz usuń pobrany obraz:
Z Cloud Shell
rm google.png
Znajdź obiekt, kliknij ikonę z trzema kropkami po prawej stronie i zmień uprawnienia na publiczne.


5. Tworzenie systemu równoważenia obciążenia
Następnie utworzymy system równoważenia obciążenia HTTP.
Otwórz Sieć >> Usługi sieciowe >> Równoważenie obciążenia >> Utwórz system równoważenia obciążenia >> System równoważenia obciążenia HTTP >> Internet do moich maszyn wirtualnych >> Klasyczny system równoważenia obciążenia HTTP(S).
Najpierw utwórz nazwę systemu równoważenia obciążenia, który chcesz utworzyć.
Utworzenie zasobnika backendu
Utwórz nowy zasobnik backendu, który będzie utworzonym przez Ciebie zasobnikiem, i wybierz opcje Włączona sieć CDN i Buforuj treści statyczne. Kliknij Utwórz.

Tworzenie reguł hostów i ścieżek
Po lewej stronie wybierz Reguły hostów i ścieżek. Użyjemy prostej reguły hosta i ścieżki i wyślemy do zasobnika wszystkie żądania.

Tworzenie konfiguracji frontendu
Wybierz konfigurację frontendu. W przypadku konfiguracji frontendu użyjemy protokołu HTTP (chociaż protokół HTTPS też będzie działać, jeśli masz certyfikat) oraz tymczasowego adresu IP i upewnimy się, że wybrano sieć typu premium.

Kliknij Utwórz
Pobieranie adresu IP systemu równoważenia obciążenia
Pobierz adres IP systemu równoważenia obciążenia z konsoli, klikając nazwę systemu równoważenia obciążenia na liście systemów równoważenia obciążenia w projekcie.

Wysyłanie zapytań do systemu równoważenia obciążenia
Po kilku minutach spróbuj wysłać do systemu równoważenia obciążenia zapytanie o przesłany obiekt. Będziesz potrzebować adresu IP systemu równoważenia obciążenia i nazwy obrazu. Polecenie ma taką strukturę:
Z terminala
curl -svo /dev/null http://LOAD_BALANCER_IP/google.png
Wyniki
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
Sprawdź, czy treści są dostarczane z sieci CDN za pomocą monitorowania sieci CDN lub równoważenia obciążenia. Powinno Ci się udać osiągnąć współczynnik trafień bliski 100%. Jeśli chcesz uruchomić kilka zapytań, możesz wykonać te czynności:
Z terminala
#for i in `seq 1 50`; do curl http://%loadbalncer-IP%/google.png; done
Potwierdzanie treści udostępnianych przez Cloud CDN
Sprawdź, czy ruch jest obsługiwany przez CDN. W tym celu kliknij Usługi sieciowe >> CDN.

6. Usuwanie obiektu z GCS
Teraz, gdy pamięć podręczna jest wypełniona, usuńmy obiekt z zasobnika, aby potwierdzić, że stosujemy zasadę do pamięci podręcznej, a nie do backendu.
Otwórz Cloud Storage >> %bucket name% >> obiekty.
Wybierz obraz i usuń go.

7. Tworzenie zasad zabezpieczeń brzegowych dla pamięci podręcznej CDN
Otwórz Bezpieczeństwo sieciowe >> Cloud Armor i kliknij Utwórz zasadę.
Wybierz:
Typ zasady: zasady zabezpieczeń brzegowych
Domyślne działanie: odmowa



Zastosuj zasadę do zasobnika backendu.
8. Sprawdzanie poprawności zasady zabezpieczeń brzegowych
Po utworzeniu zasady zabezpieczeń brzegowych przed zasobnikiem backendu sprawdźmy, czy działa ona zgodnie z oczekiwaniami.
Sprawdzanie zasady zabezpieczeń
Po kilku minutach możesz sprawdzić, czy zasady Cloud Armor działają. Uruchomienie tego polecenia w wierszu poleceń spowoduje zwrócenie kodu 403.
Z terminala
curl -svo /dev/null http://LOAD_BALANCER_IP/google.png
Wyniki
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 <
Sprawdzanie dzienników
Następnie możesz sprawdzić logi, aby zobaczyć egzekwowaną zasadę zabezpieczeń brzegowych. Kliknij Operacje >> Logowanie >> Eksplorator logów.
Wpisz poniższy fragment w zapytaniu i kliknij Uruchom.

resource.type:(http_load_balancer) AND jsonPayload.enforcedEdgeSecurityPolicy.name:(%SECURITY_POLICY_NAME%)
Zanotuj odpowiedź 403 i obowiązującą zasadę zabezpieczeń.

Usuwanie zasady zabezpieczeń
Usuń zasady zabezpieczeń i wyślij zapytanie o obiekt z pamięci podręcznej.
Otwórz Bezpieczeństwo sieciowe >> Cloud Armor >> %POLICY NAME% >> elementy docelowe i usuń docelowy zasobnik.

Potwierdzenie usunięcia zasady
Po kilku minutach wyślij kolejne żądanie curl do zasobu w zasobniku na dane. Tym razem otrzymasz odpowiedź 200.
Z terminala
curl -svo /dev/null http://LOAD_BALANCER_IP/google.png
Wyniki
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
Gratulacje! To już koniec tego laboratorium dotyczącego zasad zabezpieczeń brzegowych Cloud Armor.
©2020 Google LLC. Wszelkie prawa zastrzeżone. Google i logo Google są znakami towarowymi Google LLC. Wszelkie inne nazwy firm i produktów mogą być znakami towarowymi odpowiednich podmiotów, z którymi są powiązane.
9. Zwalnianie miejsca w module
Otwórz Bezpieczeństwo sieciowe >> Cloud Armor >> %POLICY NAME% i kliknij Usuń.

Otwórz Cloud Storage, wybierz utworzony zasobnik i kliknij Usuń.

Otwórz Sieć >> Usługi sieciowe >> Równoważenie obciążenia. Wybierz utworzony system równoważenia obciążenia i kliknij Usuń.

10. Gratulacje!
Udało Ci się ukończyć ćwiczenie (w Codelabs) dotyczące ochrony pamięci podręcznej na brzegu sieci za pomocą Cloud Armor.
Omówione zagadnienia
- Jak skonfigurować zasobnik Cloud Storage i powiązany z nim system równoważenia obciążenia Cloud
- Tworzenie zasady zabezpieczeń brzegowych Cloud Armor
- Jak sprawdzić, czy zasady zabezpieczeń brzegowych działają zgodnie z oczekiwaniami.
Dalsze kroki
- Spróbuj skonfigurować zasadę zabezpieczeń Edge z trafieniem w pamięci podręcznej z zasobu Compute Engine.