1. Wprowadzenie
Nazwane listy adresów IP Google Cloud Armor umożliwiają odwoływanie się do list adresów IP i zakresów adresów IP obsługiwanych przez zewnętrznych dostawców. W zasadzie zabezpieczeń możesz konfigurować nazwane listy adresów IP. Nie musisz ręcznie określać każdego adresu IP ani każdego zakresu adresów IP oddzielnie.
Czego się nauczysz
- Zalety nazwanej listy adresów IP Cloud Armor
- Tworzenie zasady zabezpieczeń Cloud Armor
- Wdrażanie nazwanej listy adresów IP Cloud Armor
- Utwórz globalny system równoważenia obciążenia
- Utwórz zarządzaną grupę 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 od dozwolonych dostawców zewnętrznych
Typowym przypadkiem użycia jest utworzenie listy dozwolonych zawierającej adresy IP dozwolonego partnera zewnętrznego, aby zapewnić, że dostęp do systemu równoważenia obciążenia i backendów ma tylko ruch pochodzący od tego partnera.
Na przykład dostawcy CDN muszą w regularnych odstępach czasu pobierać treści z serwerów pierwotnych, aby rozprowadzać je do własnych pamięci podręcznych. Współpraca z Google zapewnia bezpośrednie połączenie między dostawcami CDN a brzegiem sieci Google. Użytkownicy CDN w Google Cloud mogą używać tego połączenia bezpośredniego podczas pobierania punktu początkowego. W takim przypadku użytkownik CDN może utworzyć zasadę zabezpieczeń, która zezwala wyłącznie na ruch pochodzący od tego konkretnego dostawcy CDN.
W tym przykładzie dostawca sieci CDN publikuje swoją listę adresów IP: 23.235.32.0/20, 43.249.72.0/22, ⋯,. Użytkownik CDN konfiguruje regułę zabezpieczeń, 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 ich ruch jest dozwolony. Ruch z nieautoryzowanego punktu dostępu 198.51.100.1 jest blokowany.
Nazwany adres IP Google Cloud Armor
3. Uproszczenie konfiguracji i zarządzania przez użycie wstępnie skonfigurowanych reguł
Dostawcy CDN często używają dobrze znanych adresów IP, z których musi korzystać wielu użytkowników CDN. Listy te zmieniają się z czasem, w miarę jak dostawcy dodają, usuwają i aktualizują adresy IP.
Używanie nazwanej listy adresów IP w regule zasady zabezpieczeń upraszcza proces konfigurowania adresów IP i zarządzania nimi, ponieważ Google Cloud Armor codziennie automatycznie synchronizuje informacje od dostawców CDN. Eliminuje to czasochłonny i narażony na błędy proces ręcznego tworzenia dużej listy adresów IP.
Dostawcy list adresów IP
Google Cloud Armor obsługuje dostawców list adresów IP podanych w tabeli poniżej. Są to dostawcy CDN, którzy współpracują z Google. Listy adresów IP są publikowane przy użyciu 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. Odwołujesz się do tych list za pomocą nazw podanych w tabeli.
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
Z Cloud Shell
gcloud compute security-policies list-preconfigured-expression-sets \ --filter="id:sourceiplist"
Zwraca ono:
EXPRESSION_SET sourceiplist-fastly sourceiplist-cloudflare sourceiplist-imperva
4. Topologia ćwiczeń z programowania
5. Konfiguracja i wymagania
Samodzielne konfigurowanie środowiska
- 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ć.
Zapamiętaj identyfikator projektu, unikalną nazwę we wszystkich projektach Google Cloud (powyższa nazwa jest już zajęta i nie będzie Ci odpowiadać). W dalszej części tego ćwiczenia w Codelabs będzie ona określana jako PROJECT_ID
.
- Następnie musisz włączyć płatności w Cloud Console, aby korzystać z zasobów Google Cloud.
Ukończenie tego ćwiczenia z programowania nie powinno kosztować zbyt wiele. Postępuj zgodnie z instrukcjami podanymi w sekcji „Czyszczenie” W tym samouczku znajdziesz wskazówki, jak wyłączyć zasoby, aby uniknąć naliczania opłat. 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:
Uzyskanie dostępu do środowiska i połączenie się z nim powinno zająć tylko kilka chwil. Po zakończeniu powinno pojawić się coś takiego:
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.
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.
- Będąc w Compute Engine, kliknij Instancje maszyn wirtualnych w menu po lewej stronie
- Zwróć uwagę na instancje zaczynające się od us-east1-mig Te instancje są częścią zarządzanych grup instancji.
- Kliknij zewnętrzny adres IP instancji us-east1-mig. Powinien wyświetlić się adres IP klienta (Twój adres IP) oraz nazwa hosta (zaczynająca się od us-east1-mig).
Konfigurowanie systemu równoważenia obciążenia HTTP
- W konsoli Cloud kliknij Menu nawigacyjne (
) > kliknij Usługi sieciowe > Równoważenie obciążenia, a następnie kliknij Utwórz system równoważenia obciążenia.
- W sekcji Równoważenie obciążenia HTTP(S) kliknij Rozpocznij konfigurację.
- Wybierz Z internetu do moich maszyn wirtualnych i kliknij Dalej.
- W polu Nazwa ustaw 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.
- Kliknij Konfiguracja backendu.
- Dla usług backendu i za pomocą zasobników backendu, kliknij Utwórz lub wybierz usługi backendu i za zasobniki backendu, potem „Usługi backendu” i „Utwórz usługę backendu”.
- Typ backendu to grupa instancji
- Ustaw te wartości, a wszystkie inne pozostaw domyślne:
- Kliknij Gotowe.
- W sekcji Kontrola stanu wybierz Utwórz kontrolę stanu.
- Ustaw te wartości, a wszystkie inne pozostaw domyślne:
- Ustaw te wartości, a wszystkie inne pozostaw domyślne:
- Kliknij Zapisz i kontynuuj.
- Kliknij Utwórz, aby utworzyć usługę backendu.
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.
- Kliknij Konfiguracja frontendu.
- http-front-end
- Określ te wartości, a wszystkie inne pozostaw domyślne (
)
- Kliknij Gotowe.
8. Przeglądanie i tworzenie systemu równoważenia obciążenia HTTP
- Kliknij Sprawdź i zakończ.
- Przejrzyj usługi backendu i frontend.
- Kliknij Utwórz.
- Poczekaj kilka minut na utworzenie systemu równoważenia obciążenia
- Kliknij nazwę systemu równoważenia obciążenia (http-lb).
- Zapisz adres IPv4 systemu równoważenia obciążenia – będzie nazywany http-lb na potrzeby następnego zadania.
9. Weryfikacja udanego nieautoryzowanego dostępu
Przed wdrożeniem zasady nazwanych adresów IP zweryfikuj udany nieautoryzowany dostęp do systemu równoważenia obciążenia i kolejnej aplikacji internetowej. Pamiętaj, że po wdrożeniu zasady dotyczącej nazwanego adresu IP dostęp do aplikacji internetowej jest ograniczony do udostępnionego zestawu wyrażeń.
- Zidentyfikuj adres IP systemu równoważenia obciążenia utworzony w poprzednim kroku (http-lb) i wklej go w przeglądarce. Dane wyjściowe będą podobne jak na zrzucie ekranu poniżej.
UWAGA: ten krok może potrwać kilka minut. Po wygenerowaniu strony internetowej adres IP klienta pochodzi z interfejsu Google Front End, a nie z adresu IP Twojej stacji roboczej.
Na swojej stacji roboczej przeprowadź podobną weryfikację, jak pokazano 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. Skonfiguruj listę nazwanych adresów IP
Utwórz nową zasadę Cloud Amour dla nazwanych 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=\*
Zidentyfikuj dostępne adresy IP z nazwanymi listami CDN.
Z Cloud Shell
gcloud compute security-policies list-preconfigured-expression-sets \ --filter="id:sourceiplist"
Zwraca ono:
EXPRESSION_SET sourceiplist-fastly sourceiplist-cloudflare sourceiplist-imperva
Z Cloud Shell skonfiguruj nazwaną listę adresów IP na podstawie dostępnego zbioru wyrażeń CDN
gcloud beta compute security-policies rules create 600 \ --security-policy ca-policy \ --expression "evaluatePreconfiguredExpr('expression_set')" \ --action "allow"
Przykład użycia cloudflare
gcloud beta compute security-policies rules create 600 \ --security-policy ca-policy \ --expression "evaluatePreconfiguredExpr('sourceiplist-cloudflare')" \ --action "allow"
12. Zastosuj 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
- Ponieważ zasada zabezpieczeń jest wdrożona, dostęp z Twojej stacji roboczej do systemu równoważenia obciążenia jest nieautoryzowany.
- Aby to sprawdzić, otwórz okno terminala ze swojej stacji roboczej i zwiń ją pod adres IP systemu równoważenia obciążenia. Dane wyjściowe z curlu dają wartość „403”. Błąd zabroniony, ponieważ Twoja stacja robocza jest teraz nieautoryzowana.
Ze 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
Etapy 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 ćwiczeń z programowania.
Omówione zagadnienia
- Zalety nazwanej listy adresów IP Cloud Armor
- Utwórz globalny system równoważenia obciążenia
- Utwórz zarządzaną grupę instancji z przykładową aplikacją testową
- Tworzenie zasady zabezpieczeń Cloud Armor
- Wdrażanie nazwanej listy adresów IP Cloud Armor
- Weryfikacja zasady nazwanego IP Cloud Armor