Ochrona tymczasowego przechowywania danych na serwerach brzegowych za pomocą Cloud Armor

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

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

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

bce75f34b2c53987.png

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:

f6ef2b5f13479f3a.png

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:

baf3d3c74282ecba.png

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.

821aad82d8633922.png

30a975d3ad22d33d.png

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.

ed392a56538d499e.png

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.

7c1a664e0d1f15b0.png

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.

2597a5e63d618622.png

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.

9b757362d806e835.png

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.

a52d0ba4c084aa05.png

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.

a1cc1bb9a0ff41df.png

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

7a12374be33026fd.png

b7c4efc091272358.png

77ddbcddd07b65d2.png

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.

14972af5ae6c182a.png

resource.type:(http_load_balancer) AND jsonPayload.enforcedEdgeSecurityPolicy.name:(%SECURITY_POLICY_NAME%)

Zanotuj odpowiedź 403 i obowiązującą zasadę zabezpieczeń.

cddc48ca93ad79ca.png

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.

350655729a89eb33.png

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

21eefb5f375e8fee.png

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

ef2fa8d45c1d3452.png

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

ee2e78c10f4104eb.png

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.