Lista nazwanych adresów IP Cloud Armor

1. Wprowadzenie

Listy nazwanych adresów IP w Google Cloud Armor umożliwiają odwoływanie się do list adresów IP i zakresów adresów IP, które są utrzymywane przez dostawców zewnętrznych. W ramach zasad bezpieczeństwa możesz skonfigurować nazwane listy adresów IP. Nie musisz ręcznie określać każdego adresu IP ani zakresu adresów IP.

Czego się nauczysz

  • Korzyści z nazwanej listy adresów IP Cloud Armor
  • Tworzenie zasady zabezpieczeń Cloud Armor
  • Wdrażanie nazwanej listy adresów IP Cloud Armor
  • Tworzenie globalnego systemu równoważenia obciążenia
  • Tworzenie zarządzanej grupy instancji z przykładową aplikacją testową

Czego potrzebujesz

  • Doświadczenie w zakresie zasad zabezpieczeń i systemów równoważenia obciążenia

2. zezwalanie na ruch tylko z dozwolonych usługodawców zewnętrznych;

Typowym przypadkiem użycia jest utworzenie listy dozwolonych zawierającej adresy IP dozwolonego partnera zewnętrznego, aby mieć pewność, że tylko ruch pochodzący od tego partnera może uzyskać dostęp do systemu równoważenia obciążenia i backendów.

Na przykład dostawcy CDN muszą regularnie pobierać treści z serwerów pierwotnych, aby rozpowszechniać je we własnych pamięciach podręcznych. Partnerstwo z Google zapewnia bezpośrednie połączenie między dostawcami CDN a brzegiem sieci Google. Użytkownicy sieci CDN w Google Cloud mogą używać tego bezpośredniego połączenia podczas pobierania z serwera źródłowego. W takim przypadku użytkownik CDN może chcieć utworzyć zasady zabezpieczeń, które zezwalają tylko na ruch pochodzący od tego konkretnego dostawcy CDN.

W tym przykładzie dostawca sieci CDN publikuje listę adresów IP 23.235.32.0/20, 43.249.72.0/22, ⋯. Użytkownik sieci CDN konfiguruje regułę bezpieczeństwa, która zezwala tylko na ruch pochodzący z tych adresów IP. W związku z tym dozwolone są 2 punkty dostępu dostawcy CDN (23.235.32.10 i 43.249.72.10), a ruch z nich jest dozwolony. Ruch z nieautoryzowanego punktu dostępu 198.51.100.1 jest blokowany.

27243e72ee25ee16.png

Nazwany adres IP Google Cloud Armor

3. Uproszczenie konfiguracji i zarządzania dzięki wstępnie skonfigurowanym regułom

Dostawcy sieci CDN często używają dobrze znanych adresów IP, z których korzysta wielu użytkowników sieci CDN. Listy te zmieniają się z czasem, ponieważ dostawcy dodają, usuwają i aktualizują adresy IP.

Używanie w regule zasad bezpieczeństwa listy nazwanych adresów IP upraszcza proces konfigurowania adresów IP i zarządzania nimi, ponieważ Google Cloud Armor automatycznie synchronizuje informacje od dostawców CDN codziennie. Eliminuje to czasochłonny i podatny na błędy proces ręcznego zarządzania dużą listą adresów IP.

Dostawcy list adresów IP

W przypadku Google Cloud Armor obsługiwani są dostawcy list adresów IP wymienieni w tabeli poniżej. Są to dostawcy CDN, którzy współpracują z Google. Listy adresów IP są publikowane za pomocą poszczególnych publicznych adresów URL.

Ci partnerzy udostępniają osobne listy adresów IPv4 i IPv6. Google Cloud Armor używa podanych adresów URL do pobierania list, a następnie przekształca je w nazwane listy adresów IP. Do list odwołujesz się za pomocą nazw w tabeli.

7e9c09a008e04656.png

Możesz też użyć Cloud Shell, aby uzyskać listę wstępnie skonfigurowanych nazwanych list adresów IP.

Zaloguj się w Cloud Shell i ustaw identyfikator projektu.

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]

Perform setting your projectID:
projectid=YOUR-PROJECT-ID

echo $projectid

W Cloud Shell

gcloud compute security-policies list-preconfigured-expression-sets \
    --filter="id:sourceiplist"

Wynik:

EXPRESSION_SET
sourceiplist-fastly
sourceiplist-cloudflare
sourceiplist-imperva

4. Topologia ćwiczeń z programowania

68a800f9adbf4570.png

5. 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 lub Google Workspace, musisz je utworzyć).

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

Zapamiętaj identyfikator projektu, czyli unikalną nazwę we wszystkich projektach Google Cloud (podana powyżej nazwa jest już zajęta i nie będzie działać w Twoim przypadku). W dalszej części tego laboratorium będzie on nazywany PROJECT_ID.

  1. Następnie musisz włączyć rozliczenia w konsoli Cloud, aby korzystać z zasobów Google Cloud.

Ukończenie tego laboratorium nie powinno wiązać się z dużymi kosztami, a nawet z żadnymi. Wykonaj instrukcje z sekcji „Czyszczenie”, w której znajdziesz informacje o tym, jak wyłączyć zasoby, aby uniknąć naliczenia opłat po zakończeniu tego samouczka. 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.

6. Utwórz sieć VPC

Sieć VPC

Z Cloud Shell

gcloud compute networks create 

named-list-vpc

 --subnet-mode custom

Utwórz podsieć

Z Cloud Shell

gcloud compute networks subnets create named-ip-subnet \
        --network 

named-list-vpc

 --range 10.0.0.0/24 --region us-east1

Tworzenie reguł zapory sieciowej

Z Cloud Shell

gcloud compute --project=$projectid firewall-rules create default-allow-http --direction=INGRESS --priority=1000 --network=named-list-vpc --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 
gcloud compute --project=$projectid firewall-rules create default-allow-health-check --direction=INGRESS --priority=1000 --network=named-list-vpc --action=ALLOW --rules=tcp --source-ranges=130.211.0.0/22,35.191.0.0/16 

Tworzenie systemu równoważenia obciążenia

Tworzenie szablonu instancji

Z Cloud Shell

gcloud beta compute --project=$projectid instance-templates create us-east1-template --machine-type=e2-medium --subnet=projects/$projectid/regions/us-east1/subnetworks/named-ip-subnet --network-tier=PREMIUM --metadata=startup-script-url=gs://cloud-training/gcpnet/httplb/startup.sh --maintenance-policy=MIGRATE --image=debian-10-buster-v20210217 --image-project=debian-cloud --boot-disk-size=10GB --boot-disk-type=pd-balanced --boot-disk-device-name=us-east1-template --no-shielded-secure-boot --no-shielded-vtpm --no-shielded-integrity-monitoring --reservation-affinity=any

Tworzenie zarządzanej grupy instancji

Z Cloud Shell

gcloud compute --project=$projectid  instance-groups managed create us-east1-mig --base-instance-name=us-east1-mig --template=us-east1-template --size=1 --zone=us-east1-b

7. Sprawdzanie backendów

Sprawdź, czy instancje maszyn wirtualnych są tworzone w obu regionach, i otwórz ich strony HTTP.

  1. Będąc na stronie Compute Engine, w menu po lewej stronie kliknij Instancje maszyn wirtualnych.
  2. Znajdziesz instancje zaczynające się od us-east1-mig. Są one częścią zarządzanych grup instancji.
  3. Kliknij zewnętrzny adres IP instancji us-east1-mig. Powinny się wyświetlić adres IP klienta (Twój adres IP) i nazwa hosta (zaczynająca się od us-east1-mig).

Konfigurowanie systemu równoważenia obciążenia HTTP

  1. W konsoli Cloud kliknij kolejno Menu nawigacyjne ( mainmenu.png) > Usługi sieciowe > Równoważenie obciążenia, a następnie kliknij Utwórz system równoważenia obciążenia.
  2. W sekcji Równoważenie obciążenia HTTP(S) kliknij Rozpocznij konfigurację.

start_config.png

  1. Wybierz Z internetu do moich maszyn wirtualnych i kliknij Dalej.
  2. W polu Nazwa wpisz http-lb.

Konfigurowanie backendu

Usługi backendu kierują ruch przychodzący do co najmniej jednego z podłączonych backendów. Każdy backend składa się z grupy instancji i metadanych dotyczących dodatkowej obsługiwanej przepustowości.

  1. Kliknij Konfiguracja backendu.
  2. W obszarze Usługi backendu i zasobniki backendu kliknij Utwórz lub wybierz usługi backendu i zasobniki backendu, a następnie Usługi backendu i Utwórz usługę backendu.
  3. Typ backendu to Grupa instancji
  4. Ustaw te wartości, a wszystkie inne pozostaw domyślne: 18bf7a852f0759ee.png
  5. Kliknij Gotowe.
  6. W obszarze Kontrola stanu wybierz Utwórz kontrolę stanu. health_check.png
    1. Ustaw te wartości, a wszystkie inne pozostaw domyślne: d2f85af1e988532b.png
  7. Kliknij Zapisz i kontynuuj.
  8. Aby utworzyć usługę backendu, kliknij Utwórz.

b00c217bf592f0.png

Konfigurowanie frontendu

Reguły hostów i ścieżek określają, w jaki sposób będzie kierowany ruch. Możesz na przykład skierować ruch wideo do jednego backendu, a ruch statyczny do innego. W tym module nie konfigurujesz jednak reguł hostów i ścieżek.

  1. Kliknij Konfiguracja frontendu.
  2. http-front-end
  3. Określ te wartości, a wszystkie inne pozostaw domyślne:51ae16211e72142f.png
  4. Kliknij Gotowe.

8. Przeglądanie i tworzenie systemu równoważenia obciążenia HTTP

  1. Kliknij Przejrzyj i zakończ.

8efe5b462a80071d.png

  1. Sprawdź usługi backendu i frontend.

30b06910bf7fae29.png

  1. Kliknij Utwórz.
  2. Poczekaj kilka minut, aż system równoważenia obciążenia zostanie utworzony.
  3. Kliknij nazwę systemu równoważenia obciążenia (http-lb).
  4. Zapisz adres IPv4 systemu równoważenia obciążenia, który będzie potrzebny w następnym zadaniu. Będziemy go nazywać http-lb.

9. Sprawdzanie, czy nieautoryzowany dostęp został uzyskany

Przed wdrożeniem zasady nazwanego adresu IP sprawdź, czy nieautoryzowany dostęp do modułu równoważenia obciążenia w laboratorium i powiązanej aplikacji internetowej jest możliwy. Pamiętaj, że po wdrożeniu zasady nazwanego adresu IP dostęp do aplikacji internetowej jest ograniczony do udostępnionego zestawu wyrażeń.

  1. Znajdź adres IP systemu równoważenia obciążenia utworzonego w poprzednim kroku (http-lb) i wklej go w przeglądarce. Dane wyjściowe będą podobne do tych na zrzucie ekranu poniżej.

UWAGA: ten krok zajmie kilka minut. Po wygenerowaniu strony IP klienta będzie pochodzić z Google Front End, a nie z IP stacji roboczej.

f93410e9568f1f32.png

Na stacji roboczej przeprowadź podobną weryfikację jak poniżej.

bash-3.2$ curl <load-balancer-IP>

10. Przykładowe dane wyjściowe

bash-3.2$ curl <load-balancer-ip>
<h1>HTTP Load Balancing Lab</h1><h2>Client IP</h2>Your IP address : 35.191.0.151<h2>Hostname</h2>Server Hostname: us-east1-mig-8nqq<h2>Server Location</h2>Region and Zone: us-east1-b

11. Konfigurowanie listy nazwanych adresów IP

Tworzenie nowej zasady Cloud Armor dla nazwanej listy adresów IP

Z Cloud Shell

gcloud compute --project=$projectid security-policies create ca-policy

Z Cloud Shell

gcloud compute --project=$projectid security-policies rules update 2147483647 --action=deny-403 --security-policy=ca-policy --description="Default rule, higher priority overrides it" --src-ip-ranges=\*

Określ dostępne adresy list nazwanych adresów IP CDN.

Z Cloud Shell

gcloud compute security-policies list-preconfigured-expression-sets \
    --filter="id:sourceiplist"

Wynik:

EXPRESSION_SET
sourceiplist-fastly
sourceiplist-cloudflare
sourceiplist-imperva

W Cloud Shell skonfiguruj nazwaną listę adresów IP na podstawie dostępnego w CDN zestawu wyrażeń.

gcloud beta compute security-policies rules create 600 \
    --security-policy ca-policy \
    --expression "evaluatePreconfiguredExpr('expression_set')" \
    --action "allow"

Przykład z wykorzystaniem cloudflare

gcloud beta compute security-policies rules create 600 \
    --security-policy ca-policy \
    --expression "evaluatePreconfiguredExpr('sourceiplist-cloudflare')" \
    --action "allow"

12. Stosowanie zasad zabezpieczeń urzędu certyfikacji

Zastosuj zasadę zabezpieczeń urzędu certyfikacji i poczekaj kilka minut na rozpowszechnienie zasad globalnych.

gcloud compute backend-services update http-backend --security-policy ca-policy --global

13. Weryfikacja nazwanego adresu IP

  1. Po wdrożeniu zasad bezpieczeństwa dostęp do systemu równoważenia obciążenia z Twojej stacji roboczej jest nieautoryzowany.
  2. Aby sprawdzić, czy wszystko działa prawidłowo, otwórz okno terminala na stacji roboczej i wykonaj polecenie curl na adres IP systemu równoważenia obciążenia. Dane wyjściowe polecenia curl spowodują błąd „403” (Forbidden), ponieważ stacja robocza jest teraz nieautoryzowana.

Na stacji roboczej

bash-3.2$ curl <load-balancer-IP>
<!doctype html><meta charset="utf-8"><meta name=viewport content="width=device-width, initial-scale=1"><title>403</title>403 Forbidden

Procedura czyszczenia

gcloud -q compute backend-services update http-backend --security-policy "" --global

gcloud -q compute --project=$projectid security-policies delete ca-policy

gcloud -q compute forwarding-rules delete http-front-end --global

gcloud -q compute target-http-proxies delete http-lb-target-proxy

gcloud -q compute url-maps delete http-lb

gcloud -q compute backend-services delete http-backend --global

gcloud -q compute health-checks delete http-health-check

gcloud -q compute --project=$projectid instance-groups managed delete us-east1-mig --zone=us-east1-b

gcloud -q beta compute --project=$projectid instance-templates delete us-east1-template

gcloud -q compute --project=$projectid firewall-rules delete default-allow-http

gcloud -q compute --project=$projectid firewall-rules delete default-allow-health-check

gcloud -q compute networks subnets delete named-ip-subnet --region us-east1

gcloud -q compute networks delete named-list-vpc

14. Gratulacje!

Gratulujemy ukończenia ćwiczenia.

Omówione zagadnienia

  • Korzyści z nazwanej listy adresów IP Cloud Armor
  • Tworzenie globalnego systemu równoważenia obciążenia
  • Tworzenie zarządzanej grupy instancji z przykładową aplikacją testową
  • Tworzenie zasady zabezpieczeń Cloud Armor
  • Wdrażanie nazwanej listy adresów IP Cloud Armor
  • Weryfikowanie zasady Cloud Armor dotyczącej nazwanych adresów IP