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

1. Wprowadzenie

Zasady zabezpieczeń brzegowych Google Cloud Armor pozwalają ograniczyć dostęp do obiektów przechowywanych w pamięci podręcznej w Google Cloud CDN i Google Cloud Storage. Przykładem może być zadbanie o to, aby użytkownicy nie mieli dostępu do obiektów w zasobnikach na dane z obszarów geograficznych, na których obowiązują ograniczenia, lub sprawdzenie, czy dystrybucja multimediów obejmuje obszary geograficzne, na które masz licencję.

W tym module utworzymy zasobnik GCS, prześlesz do niego obraz, powiążemy go z systemem równoważenia obciążenia oraz włączymy w nim zasady Cloud CDN i Edge Security.

Czego się nauczysz

  • Jak skonfigurować zasobnik Cloud Storage z treścią podlegającą buforowaniu
  • Jak utworzyć zasadę zabezpieczeń brzegowych do ochrony treści
  • Jak sprawdzić, czy zasada zabezpieczeń brzegowych działa zgodnie z oczekiwaniami

Czego potrzebujesz

  • Podstawowa znajomość sieci i znajomości protokołu HTTP
  • Podstawowa wiedza na temat wiersza poleceń systemu Unix/Linux.

2. Konfiguracja i wymagania

Samodzielne konfigurowanie środowiska

  1. Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub wykorzystaj już istniejący. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • Nazwa projektu jest wyświetlaną nazwą uczestników tego projektu. To ciąg znaków, który nie jest używany przez interfejsy API Google i w każdej chwili możesz go zaktualizować.
  • Identyfikator projektu musi być unikalny we wszystkich projektach Google Cloud i nie można go zmienić (nie można go zmienić po ustawieniu). Cloud Console automatycznie wygeneruje unikalny ciąg znaków. zwykle nieważne, co ona jest. W większości ćwiczeń w Codelabs musisz odwoływać się do identyfikatora projektu (który zwykle nazywa się PROJECT_ID), więc jeśli Ci się nie podoba, wygeneruj kolejny losowy projekt lub wypróbuj swój własny identyfikator i sprawdź, czy jest dostępny. Potem urządzenie jest „zawieszone”. po utworzeniu projektu.
  • Występuje trzecia wartość – numer projektu – używany przez niektóre interfejsy API. Więcej informacji o wszystkich 3 wartościach znajdziesz w dokumentacji.
  1. Następnie musisz włączyć płatności w konsoli Cloud, aby móc korzystać z zasobów i interfejsów API Cloud. Ukończenie tego ćwiczenia z programowania nie powinno kosztować zbyt wiele. Aby wyłączyć zasoby, aby nie naliczać opłat po zakończeniu tego samouczka, wykonaj czynności „wyczyść” znajdziesz na końcu tego ćwiczenia. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego o wartości 300 USD.

Uruchamianie Cloud Shell

Google Cloud można obsługiwać zdalnie z laptopa, ale w ramach tego ćwiczenia z programowania wykorzystasz Google Cloud Shell – środowisko wiersza poleceń działające w chmurze.

W konsoli GCP kliknij ikonę Cloud Shell na górnym pasku narzędzi:

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

Ta maszyna wirtualna ma wszystkie potrzebne narzędzia dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud, znacząco zwiększając wydajność sieci i uwierzytelnianie. Wszystkie zadania w tym module możesz wykonać w przeglądarce.

Zanim zaczniesz

Sprawdź w Cloud Shell, 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 do tymczasowej instancji 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 3 kropki 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.

Przejdź do Sieci >>. 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ę tworzonego systemu równoważenia obciążenia.

Utworzenie zasobnika backendu

Utwórz nowy zasobnik backendu, który będzie właśnie utworzonym zasobnikiem, i wybierz Włącz sieć CDN oraz Zawartość statyczną w pamięci podręcznej. Kliknij Utwórz.

ed392a56538d499e.png

Tworzenie reguł hostów i ścieżek

Po lewej stronie kliknij Reguły hostów i ścieżek. Użyjemy prostej reguły hosta/ścieżki i wyślemy do zasobnika dowolne żądanie.

7c1a664e0d1f15b0.png

Utwórz konfigurację frontendu

Wybierz konfigurację frontendu. W konfiguracji frontendu użyjemy protokołu HTTP (choć HTTPS będzie też działać w przypadku certyfikatu) oraz efemerycznego adresu IP. Upewnij się, że wybrana została sieć poziomu premium.

2597a5e63d618622.png

Kliknij Utwórz

Pobranie adresu IP systemu równoważenia obciążenia

Aby pobrać adres IP systemu równoważenia obciążenia z konsoli, kliknij nazwę systemu równoważenia obciążenia na liście systemów równoważenia obciążenia w projekcie.

9b757362d806e835.png

Wysyłanie zapytania do systemu równoważenia obciążenia

Po kilku minutach spróbuj wysłać do systemu równoważenia obciążenia zapytanie dotyczące przesłanego obiektu. Potrzebny będzie adres IP systemu równoważenia obciążenia i nazwa 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 Twoje treści są wyświetlane z sieci CDN przez CDN lub monitorowanie równoważenia obciążenia. Współczynnik trafień powinien być w stanie zbliżyć się do 100%. Jeśli musisz wykonać 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 obsługujesz ruch z CDN, przechodząc do Usługi sieciowe >> CDN

a52d0ba4c084aa05.png

6. Usuwanie obiektu z GCS

Pamięć podręczna jest już zapełniona, więc usuńmy obiekt z zasobnika, co potwierdza, ż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. Utwórz zasadę zabezpieczeń brzegowych dla pamięci podręcznej CDN

Przejdź do sekcji Bezpieczeństwo sieciowe >> Cloud Armor i kliknij Utwórz zasadę

Wybierz te opcje

Typ zasady: zasada zabezpieczeń brzegowych

Działanie domyślne: Odrzucaj

7a12374be33026fd.png

b7c4efc091272358.png

77ddbcddd07b65d2.png

Zastosuj zasadę do zasobnika backendu.

8. Weryfikacja zasad zabezpieczeń brzegowych

Po utworzeniu zasady zabezpieczeń brzegowej przed naszym zasobnikiem backendu możemy sprawdzić, czy działa ona zgodnie z oczekiwaniami.

Sprawdzanie zasady zabezpieczeń

Po kilku minutach możesz sprawdzić, czy zasada Cloud Armor jest uruchomiona. Uruchomienie poniższego polecenia w wierszu poleceń spowoduje wyświetlenie błędu 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
<

Badanie logów

Następnie możesz sprawdzić logi, aby zobaczyć egzekwowaną zasadę zabezpieczeń brzegowych. Przejdź do sekcji Operacje >>. Logowanie >> Eksplorator logów

Wpisz w zapytaniu poniższy fragment kodu i kliknij Uruchom

14972af5ae6c182a.png

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

Zwróć uwagę na odpowiedź 403 i egzekwowaną zasadę zabezpieczeń

cddc48ca93ad79ca.png

Usuwanie zasady zabezpieczeń

Usuń zasadę zabezpieczeń i wyślij zapytanie do obiektu z pamięci podręcznej.

Przejdź do sekcji Bezpieczeństwo sieciowe >> Cloud Armor >> %POLICY NAME% >> cele i usuń zasobnik docelowy.

350655729a89eb33.png

Potwierdź usunięcie zasady

Po kilku minutach wyślij kolejne curl do zasobu w zasobniku na dane. Tym razem otrzymasz 200 odpowiedzi.

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! Udało Ci się ukończyć ten moduł dotyczący zasad zabezpieczeń Cloud Armor Edge.

© 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. Czyszczenie modułu

Przejdź do sekcji Bezpieczeństwo sieciowe >> Cloud Armor >> %POLICY NAME% i wybierz Usuń.

21eefb5f375e8fee.png

Przejdź do Cloud Storage, wybierz utworzony zasobnik i kliknij Usuń.

ef2fa8d45c1d3452.png

Przejdź do Sieci >>. 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ć szkolenie z programowania dotyczące ochrony pamięci podręcznej Edge w Cloud Armor.

Omówione zagadnienia

  • Jak skonfigurować zasobnik Cloud Storage i powiązany system równoważenia obciążenia w chmurze
  • Jak utworzyć zasadę zabezpieczeń Cloud Armor Edge
  • Jak sprawdzić, czy zasada zabezpieczeń brzegowych działa zgodnie z oczekiwaniami.

Dalsze kroki

  • Spróbuj skonfigurować zasadę zabezpieczeń brzegowych z trafieniem w pamięci podręcznej z zasobu Compute Engine.