1. Wprowadzenie
Private Service Connect pozwala producentowi usług oferować prywatne usługi konsumentom usług. Usługa Private Service Connect zapewnia te korzyści:
- Sieć VPC producenta usług może obsługiwać więcej niż 1 konsumenta usługi.
- Każdy konsument łączy się ze zdefiniowanym przez siebie wewnętrznym adresem IP. Private Service Connect przeprowadza translację adresów sieciowych (NAT), aby kierować żądanie do producenta usługi.
Rysunek 2. Private Service Connect korzysta z punktów końcowych i przyłączy usług, aby umożliwić konsumentom usługi wysyłanie ruchu z sieci VPC konsumenta do usług w sieci VPC producenta usługi (kliknij, aby powiększyć).
Czego się nauczysz
- Zalety Private Service Connect
- Kluczowe pojęcia dla konsumentów usług
- Najważniejsze pojęcia dla producentów usług
- Tworzenie środowiska producenta
- Udostępnianie usługi (środowisko producenta) za pomocą przyłącza usługi
- Tworzenie środowiska konsumenta
- Tworzenie reguły przekierowania w sieci konsumenta
- Weryfikacja dostępu klienta
- Włącz kontrolę dostępu na podstawie zasad
- Blokowanie dostępu do reguły przekierowania klienta za pomocą reguły zapory sieciowej dotyczącej ruchu wychodzącego
Czego potrzebujesz
- Wiedza na temat wdrażania klastrów i usług GKE
- Wiedza na temat wewnętrznych systemów równoważenia obciążenia
- Możliwość tworzenia środowisk VPC w 2 projektach
- Możliwość utworzenia klastra GKE
2. Zalety Private Service Connect
PSC zapewnia kilka korzyści w porównaniu ze stosowaniem połączeń równorzędnych VPC:
Lepsza kontrola nad przestrzenią prywatnych adresów IP
- Jako konsument usługi masz kontrolę nad prywatnym adresem IP używanym do łączenia się z usługą zarządzaną, do której chcesz mieć dostęp.
- Jako konsument usług nie musisz się martwić o rezerwowanie zakresów prywatnych adresów IP dla usług backendu używanych w Twojej sieci VPC. Wystarczy wybrać adres IP ze swojej podsieci, aby połączyć się z usługami producenta.
- Jako producent usług możesz wdrożyć model wielu najemców, w którym Twoje środowisko VPC zawiera usługi obsługujące wiele środowisk VPC konsumenta. Konsumenci z nakładającymi się zakresami podsieci nie stanowią już problemu.
- Jako dostawca usług możesz przeskalować swoją usługę na dowolną liczbę instancji maszyn wirtualnych bez konieczności kontaktowania się z klientem w celu uzyskania dodatkowych adresów IP.
Większe bezpieczeństwo i izolacja
- Jako konsument usługi tylko Ty możesz zainicjować komunikację z producentem usługi. Takie połączenie jednokierunkowe drastycznie upraszcza konfigurację zapory sieciowej, ale jednocześnie zmniejsza ryzyko związane z nieuczciwym ruchem pochodzącym od producenta usługi.
- Jako producent usług nie musisz zmieniać reguł zapory sieciowej na podstawie zakresów podsieci w sieci VPC konsumenta. Możesz po prostu utworzyć reguły zapory sieciowej dla zakresu adresów IP NAT skonfigurowanego dla Twojej usługi.
Lepsza skalowalność
- PSC umożliwia wysoką skalowalność projektowania przez obsługę tysięcy konsumentów i pozwala producentom usług oferować wysoce skalowalne usługi obejmujące wielu najemców lub jednego najemcę.
- Jako konsument usługi używający Private Service Connect możesz tworzyć zasoby zgodnie z wymaganiami w sieci VPC. Na skalę tego zjawiska nie ma wpływu liczba takich zasobów utworzonych w producenta VPC.
3. Kluczowe pojęcia dla konsumentów usług
punktów końcowych usługi Private Service Connect możesz używać do korzystania z usług spoza Twojej sieci VPC. Konsumenci usługi tworzą punkty końcowe Private Service Connect, które łączą się z usługą docelową.
Punkty końcowe
Punkty końcowe Private Service Connect umożliwiają łączenie się z usługą docelową. Punkty końcowe mają wewnętrzny adres IP w Twojej sieci VPC i opierają się na zasobie reguły przekierowania.
Wysyłasz ruch do punktu końcowego, który przekierowuje go do celów poza Twoją siecią VPC.
Cele
Punkty końcowe Private Service Connect mają lokalizację docelową, czyli usługę, z którą chcesz się połączyć:
- Pakiet interfejsów API:
- Wszystkie interfejsy API: większość interfejsów API Google
- VPC-SC: interfejsy API obsługiwane przez Ustawienia usługi VPC
- Opublikowana usługa w innej sieci VPC. Tą usługą może zarządzać Twoja organizacja lub inna firma.
Opublikowana usługa
Aby połączyć punkt końcowy z usługą producenta usługi, potrzebujesz przyłącza usługi dla usługi. Identyfikator URI przyłącza usługi ma ten format: projects/PROJEKT_USŁUGI/regions/REGION/serviceAttachments/NAZWA_USŁUGI
4. Najważniejsze pojęcia dla producentów usług
Aby udostępnić usługę klientom, musisz utworzyć co najmniej 1 podsieć, która będzie używana do translacji adresów sieciowych (NAT) konsumenta z adresów IP. Następnie możesz utworzyć przyłącze usługi odwołujące się do tych podsieci.
Podsieci Private Service Connect
Aby udostępnić usługę, producent usługi najpierw tworzy co najmniej 1 podsieć z przeznaczeniem Private Service Connect.
Gdy żądanie jest wysyłane z sieci VPC konsumenta, źródłowy adres IP konsumenta jest przekształcany przy użyciu source NAT (SNAT) na adres IP wybrany z jednej z podsieci Private Service Connect.
Jeśli chcesz zachować informacje o adresie IP połączenia konsumenta, zapoznaj się z sekcją Wyświetlanie informacji o połączeniu konsumenta.
Tych podsieci nie można używać na potrzeby zasobów takich jak instancje maszyn wirtualnych czy reguły przekierowania. Podsieci są używane wyłącznie do udostępniania adresów IP na potrzeby protokołu SNAT dla przychodzących połączeń konsumentów.
Podsieć Private Service Connect musi zawierać co najmniej 1 adres IP na każde 63 maszyny wirtualne,aby każda maszyna wirtualna konsumenta otrzymała 1024 krotki źródłowe na potrzeby translacji adresów sieciowych.
Minimalny rozmiar podsieci Private Service Connect to /24.
Przyłącza usługi
Producenci usług udostępniają swoją usługę za pomocą przyłącza usługi.
- Aby udostępnić usługę, producent usługi tworzy przyłącze usługi odwołujące się do reguły przekierowania systemu równoważenia obciążenia w usłudze.
- Aby uzyskać dostęp do usługi, konsument usługi tworzy punkt końcowy odwołujący się do przyłącza usługi.
Ustawienia połączeń
Podczas tworzenia usługi wybierasz sposób jej udostępniania. Możesz wybrać jedną z dwóch opcj:
- Automatycznie akceptuj połączenia we wszystkich projektach – każdy konsument usługi może skonfigurować punkt końcowy i automatycznie połączyć się z usługą.
- Akceptuj połączenia w wybranych projektach – konsumenci usługi konfigurują punkt końcowy tak, aby łączył się z usługą, a producent usługi akceptuje lub odrzuca żądania połączenia.
Wymagania i ograniczenia
- Obowiązują ograniczenia dotyczące Private Service Connect.
- Przyłącze usługi możesz utworzyć w GKE w wersji 1.21.4-gke.300 i nowszych.
- Nie możesz używać tej samej podsieci w wielu konfiguracjach przyłącza usługi.
- Musisz utworzyć usługę GKE, która używa wewnętrznego systemu równoważenia obciążenia TCP/UDP.
5. Środowisko testowe
Sieć konsumenta składa się ze statycznego adresu IP używanego do wysyłania żądań do producenta usługi, a także przyłącza usługi docelowej, który jest mapowany na przyłącze usługi producenta (opublikowaną usługę).
Przyjrzyjmy się teraz sieci producentów. Zwróć uwagę, że sieć producentów nie ma mapowania na sieć konsumenta. Zamiast tego sieć producentów zawiera przyłącze usługi (opublikowaną usługę) używane przez konsumenta na potrzeby usług. Przyłącze usługi producenta jest udostępniane przez system równoważenia obciążenia L4 L4 dla ruchu przychodzącego (opublikowana usługa), co umożliwia komunikację z podami GKE powiązanych aplikacji.
Podsieć NAT jest używana, gdy żądanie jest wysyłane z sieci VPC konsumenta, a źródłowy adres IP konsumenta jest przekształcany przy użyciu protokołu NAT (SNAT) na adres IP wybrany z jednej z podsieci Private Service Connect.
Tych podsieci nie można używać na potrzeby zasobów takich jak instancje maszyn wirtualnych czy reguły przekierowania. Podsieci są używane wyłącznie do udostępniania adresów IP na potrzeby protokołu SNAT dla przychodzących połączeń konsumentów.
Aby dowiedzieć się więcej o L4ILB dla GKE Private Service Connect i uzyskać bezpośredni dostęp do treści użytych w tym module, zapoznaj się z poniższymi.
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ć.
- Nazwa projektu jest wyświetlaną nazwą uczestników tego projektu. Jest 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 kod lub wypróbuj swój własny 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.
- 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 Cloud.
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. Zanim zaczniesz
Ćwiczenia z programowania wymagają 2 projektów, choć nie są one wymagane w przypadku PSC. Zwróć uwagę na odwołania do obsługi jednego lub wielu projektów.
Pojedynczy projekt – zaktualizuj projekt, aby obsługiwać sieć producenta i konsumenta
Sprawdź w Cloud Shell, czy identyfikator projektu jest skonfigurowany
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] prodproject=YOUR-PROJECT-NAME consumerproject=YOUR-PROJECT-NAME echo $prodproject echo $consumerproject
Wiele projektów – zaktualizuj projekt, aby wspierać sieć producenta
Sprawdź w Cloud Shell, czy identyfikator projektu jest skonfigurowany
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] prodproject=YOUR-PROJECT-NAME echo $prodproject
Pamiętaj o tej konwencji kolorów:
7. Utwórz sieć VPC producenta
Sieć VPC
Z Cloud Shell
gcloud compute networks create gke-producer-l4-vpc --project=$prodproject --subnet-mode=custom
Tworzenie podsieci klastra GKE
Z Cloud Shell
gcloud compute networks subnets create node-subnet1 --project=$prodproject --range=192.168.10.0/24 --network=gke-producer-l4-vpc --region=us-central1 --secondary-range=pod=10.10.10.0/24,service=10.10.20.0/24 --enable-private-ip-google-access
Tworzenie klastra GKE
Z Cloud Shell
gcloud container clusters create gke-psc-l4 \ --release-channel=rapid \ --enable-ip-alias \ --zone=us-central1-a \ --network gke-producer-l4-vpc \ --num-nodes 1 \ --subnetwork node-subnet1 \ --cluster-secondary-range-name pod \ --services-secondary-range-name service
Utwórz podsieć na potrzeby usługi Private Service Connect (podsieć NAT)
Musisz utworzyć co najmniej 1 dedykowaną podsieć do użytku z usługą Private Service Connect. Jeśli publikujesz usługę w konsoli Google Cloud, możesz podczas tej procedury utworzyć podsieci.
Informacje o podsieciach Private Service Connect znajdziesz w artykule o podsieciach Private Service Connect.
Z Cloud Shell
gcloud beta compute networks subnets create gke-nat-subnet \ --project $prodproject \ --network gke-producer-l4-vpc \ --region us-central1 \ --range 100.100.10.0/24 \ --purpose PRIVATE_SERVICE_CONNECT
8. Wdrażanie zadania i usług
Poniższy plik manifestu opisuje wdrożenie, w którym uruchamiany jest przykładowy obraz kontenera aplikacji internetowej. Zapisz plik manifestu jako my-deployment.yaml z Cloud Shell.
apiVersion: apps/v1 kind: Deployment metadata: name: psc-ilb spec: replicas: 3 selector: matchLabels: app: psc-ilb template: metadata: labels: app: psc-ilb spec: containers: - name: whereami image: gcr.io/google-samples/whereami:v1.2.1 ports: - name: http containerPort: 8080 readinessProbe: httpGet: path: /healthz port: 8080 scheme: HTTP initialDelaySeconds: 5 timeoutSeconds: 1
Zastosuj plik manifestu do klastra z Cloud Shell
kubectl apply -f my-deployment.yaml
Tworzenie usługi
Poniższy plik manifestu opisuje usługę, która tworzy wewnętrzny system równoważenia obciążenia TCP/UDP na porcie TCP 8080. Zapisz plik manifestu jako my-service.yaml z Cloud Shell.
apiVersion: v1 kind: Service metadata: name: gke-l4-psc annotations: networking.gke.io/load-balancer-type: "Internal" spec: type: LoadBalancer selector: app: psc-ilb ports: - port: 80 targetPort: 8080 protocol: TCP
Zastosuj plik manifestu do klastra z Cloud Shell
kubectl apply -f my-service.yaml
Utwórz przyłącze usługi
Ten plik manifestu opisuje załącznik ServiceAttachment, który udostępnia utworzoną przez Ciebie usługę konsumentom usług. Zapisz plik manifestu jako my-psc.yaml z Cloud Shell.
apiVersion: networking.gke.io/v1beta1 kind: ServiceAttachment metadata: name: emoji-sa namespace: default spec: connectionPreference: ACCEPT_AUTOMATIC natSubnets: - gke-nat-subnet proxyProtocol: false resourceRef: kind: Service name: gke-l4-psc
Zastosuj plik manifestu do klastra z Cloud Shell
kubectl apply -f my-psc.yaml
ServiceAttachment zawiera te pola:
- connectionPreference:ustawienie połączenia określające sposób, w jaki klienci łączą się z usługą. Możesz korzystać z automatycznego zatwierdzania projektów za pomocą metody ACCEPT_AUTOMATIC lub bezpośrednio zatwierdzania projektu za pomocą metody ACCEPT_MANUAL. Więcej informacji znajdziesz w artykule Publikowanie usług za pomocą Private Service Connect.
- natSubnets: lista nazw zasobów podsieci, które mają być używane na potrzeby przyłącza usługi.
- proxyProtocol: jeśli ma wartość Prawda, źródłowy adres IP klienta i identyfikator połączenia Private Service Connect są dostępne w żądaniach. To pole jest opcjonalne i jeśli nie zostanie podane, domyślnie ma wartość Fałsz.
- consumerAllowList: lista projektów konsumentów, które mogą łączyć się z obiektem ServiceAttachment. Tego pola można używać tylko wtedy, gdy connectionPreference ma wartość ACCEPT_MANUAL. Więcej informacji o tym polu i innych opcjach znajdziesz w artykule Publikowanie usług za pomocą Private Service Connect.
Weryfikacja producenta
Wyświetlanie szczegółów przyłącza usługi
Szczegóły przyłącza usługi możesz wyświetlić za pomocą następującego polecenia z Cloud Shell
kubectl describe serviceattachment emoji-sa
Wyświetl system równoważenia obciążenia L4 GKE
W konsoli Cloud otwórz Usługi sieciowe → Równoważenie obciążenia → Frontendy
Zidentyfikuj adres IP frontendu, który pasuje do wcześniej zdefiniowanej podsieci węzła 192.168.10.0/24 (zwróć uwagę na zrzut ekranu poniżej). Twój adres IP może być inny.
Wyświetl opublikowaną usługę
W konsoli Cloud otwórz Usługi sieciowe → Private Service Connect → Opublikowane usługi
Zidentyfikuj usługę z siecią używaną w module (gke-producer-l4-vpc,), zapoznaj się z poniższym zrzutem ekranu. Wartości usługi i celu mogą się różnić.
Kliknij nazwę usługi, aby przejść na poniższy ekran. Zwróć uwagę na szczegóły przyłącza usługi zawarte w informacjach podstawowych. Zwróć też uwagę na „Połączone projekty” jest puste, ponieważ konsument nie zarejestrował się jeszcze w usłudze. Nazwy ACCEPT i ODRZUĆ pozostaną nieaktywne, ponieważ Preferencja połączenia ma wartość "ACCEPT_AUTOMATIVELY". W każdej chwili można zmienić tę opcję na „ACCEPT_MANUAL”, modyfikując plik yaml usługi (my-psc.yaml).
9. Utwórz sieć VPC klientów
W tej sekcji środowisko VPC konsumenta zostało skonfigurowane w oddzielnym projekcie. Komunikacja między siecią konsumenta a siecią producenta odbywa się przez przyłącze usługi zdefiniowane w sieci konsumenta.
Ćwiczenia z programowania wymagają 2 projektów, choć nie są one wymagane w przypadku PSC. Zwróć uwagę na odwołania do obsługi jednego lub wielu projektów.
Pojedynczy projekt – zaktualizuj projekt, aby obsługiwać sieć producenta i konsumenta
Sprawdź w Cloud Shell, czy identyfikator projektu jest skonfigurowany
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] consumerproject=YOUR-PROJECT-NAME prodproject=YOUR-PROJECT-NAME echo $prodproject echo $consumerproject
Wiele projektów – zaktualizuj projekt, aby obsługiwać konsumenta sieci
Sprawdź w Cloud Shell, czy identyfikator projektu jest skonfigurowany
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] consumerproject=YOUR-PROJECT-NAME echo $consumerproject
Sieć VPC
Z Cloud Shell
gcloud compute networks create vpc-demo-consumer --project=$consumerproject --subnet-mode=custom
Tworzenie podsieci dla PSC
Z Cloud Shell
gcloud compute networks subnets create consumer-subnet --project=$consumerproject --range=10.0.60.0/24 --network=vpc-demo-consumer --region=us-central1
Tworzenie podsieci dla instancji maszyn wirtualnych
Z Cloud Shell
gcloud compute networks subnets create consumer-subnet-vm --project=$consumerproject --range=10.0.70.0/24 --network=vpc-demo-consumer --region=us-central1
Tworzenie statycznego adresu IP, aby uzyskać dostęp do opublikowanej usługi
Z Cloud Shell
gcloud compute addresses create vpc-consumer-psc --region=us-central1 --subnet=consumer-subnet --addresses 10.0.60.100
Tworzenie reguł zapory sieciowej
Aby umożliwić IAP nawiązywanie połączeń z maszynami wirtualnymi, utwórz regułę zapory sieciowej, która:
- Dotyczy wszystkich instancji maszyn wirtualnych, które mają być dostępne za pomocą IAP.
- Zezwala na ruch przychodzący z zakresu adresów IP 35.235.240.0/20. Ten zakres zawiera wszystkie adresy IP używane przez IAP do przekierowywania TCP
Z Cloud Shell
gcloud compute firewall-rules create psclab-iap-consumer --network vpc-demo-consumer --allow tcp:22 --source-ranges=35.235.240.0/20 --enable-logging
Chociaż nie jest to wymagane przez PSC, utworzenie reguły zapory sieciowej dotyczącej ruchu wychodzącego w celu monitorowania ruchu PSC konsumenta do przyłącza usługi producentów
gcloud compute --project=$consumerproject firewall-rules create vpc-consumer-psc --direction=EGRESS --priority=1000 --network=vpc-demo-consumer --action=ALLOW --rules=all --destination-ranges=10.0.60.0/24 --enable-logging
10. Tworzenie instancji testowej 1 konsumenta
Z Cloud Shell
gcloud compute instances create consumer-instance-1 --zone=us-central1-a --machine-type=e2-micro --private-network-ip=10.0.70.10 --no-address --subnet=consumer-subnet-vm --tags=google1 --image-family=debian-10 --image-project=debian-cloud
11. Tworzenie instancji testowej konsumenta 2
Z Cloud Shell
gcloud compute instances create consumer-instance-2 --zone=us-central1-a --machine-type=e2-micro --private-network-ip=10.0.70.20 --no-address --subnet=consumer-subnet-vm --tags=google2 --image-family=debian-10 --image-project=debian-cloud
12. Utwórz przyłącze usługi
W poprzednim kroku skopiowaliśmy ciąg znaków załącznika usługi producenta w bezpiecznym miejscu. Wstawmy przechowywaną wartość w polu „target-service-attachment”. .
Z Cloud Shell
gcloud compute forwarding-rules create vpc-consumer-psc-fr --region=us-central1 --network=vpc-demo-consumer --address=vpc-consumer-psc --target-service-attachment=yoursavedproducerserviceattachment
13. Weryfikacja – konsument
Wykorzystamy CURL & logów zapory sieciowej do weryfikacji komunikacji między klientem a producentem.
W projekcie klienta statyczne adresy IP służą do inicjowania komunikacji z producentem. Mapowanie statycznego adresu IP na regułę przekierowania klienta jest weryfikowane przez wykonanie tej składni.
Z poziomu chmury VPC klienta użyj powłoki, aby zidentyfikować regułę przekierowania i statyczny adres IP.
gcloud compute forwarding-rules describe vpc-consumer-psc-fr --region us-central1
Podane niżej dane wyjściowe użyjemy 10.0.60.100, aby skontaktować się z producentem na późniejszym etapie
IPAddress: 10.0.60.100 creationTimestamp: '2021-09-30T21:13:54.124-07:00' id: '3564572805904938477' kind: compute#forwardingRule labelFingerprint: 42WmSpB8rSM= name: vpc-consumer-psc-fr network: https://www.googleapis.com/compute/v1/projects/deepakmichaelstage/global/networks/vpc-demo-consumer networkTier: PREMIUM pscConnectionId: '36583161500548196' pscConnectionStatus: ACCEPTED
Wyświetlanie połączonej usługi
W konsoli Cloud otwórz Usługi sieciowe → Private Service Connect → Połączone punkty końcowe wyświetl nowo utworzony punkt końcowy
Zalogujmy się w consumer-instance-1 i przetestujemy dostęp do usługi Producer Opublikowano.
W Cloud Shell otwórz nową kartę, klikając przycisk +
W Cloud Shell wykonaj te czynności:
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "consumer-instance-1" --project "$projectname"
Po zalogowaniu się w instancji customer-instance-1 wykorzystuj curl do adresu IP reguły przekierowania 10.0.60.100
W Cloud Shell wykonaj te czynności:
user@consumer-instance-1:~$ curl 10.0.60.100
Przykładowe dane wyjściowe
user@consumer-instance-1:~$ curl 10.0.60.100 { "cluster_name": "gke-psc-l4", "host_header": "10.0.60.100", "node_name": "gke-gke-psc-l4-default-pool-f2c6e301-vnlz.c.prodprojectid.internal", "pod_name": "psc-ilb-588887dfdb-w7tbr", "pod_name_emoji": "🤷", "project_id": "prodorijectid", "timestamp": "2021-10-01T17:43:37", "zone": "us-central1-a"
Zalogujmy się w consumer-instance-2 i przetestujemy dostęp do usługi Producer Publish Service.
W Cloud Shell otwórz nową kartę, klikając przycisk +
W Cloud Shell wykonaj te czynności:
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "consumer-instance-2" --project "$projectname"
W Cloud Shell wykonaj te czynności:
user@consumer-instance-2:~$ curl 10.0.60.100
Przykładowe dane wyjściowe
deepakmichael@consumer-instance-2:~$ curl 10.0.60.100 { "cluster_name": "gke-psc-l4", "host_header": "10.0.60.100", "node_name": "gke-gke-psc-l4-default-pool-f2c6e301-vnlz.c.prodproject.internal", "pod_name": "psc-ilb-588887dfdb-4jdql", "pod_name_emoji": "🧑🏿", "project_id": "prodproject", "timestamp": "2021-10-01T17:49:51", "zone": "us-central1-a"
14. Logowanie zapory sieciowej – walidacja przydzielona
Za pomocą eksploratora logów zweryfikuj regułę zapory sieciowej „vpc-consumner-psc” przechwytuje przepływ między instancją maszyny wirtualnej a statycznym adresem IP
- W konsoli Cloud wybierz Identity Operations Logging → Eksplorator logów.
- W polu Zapytanie uzupełnij poniższy wpis o treści yourconsumerproject i wybierz „Uruchom zapytanie”
logName:(projects/yourconsumerprojectID/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:vpc-consumer-psc")
- Wyniki zapytania zawierają następujące dane dla każdego dostarczonego zrzutu ekranu
- Rozwiń log (jsonPayload → Połączenie) i zidentyfikuj podane niżej dane wyjściowe. Zwróć uwagę na dest_ip: 10.0.60.100 to STATYCZNY adres IP TCP użyty do uzyskania dostępu do usługi Producer, a src_ip: 10.0.70.10 lub 10.0.70.20 to adresy IP instancji maszyny wirtualnej. Dyspozycja jest dozwolona.
15. Weryfikacja – producent
Z poziomu projektu Producers sprawdź, czy przyłącze usługi jest prawidłowo połączone. Przejdź do usług sieciowych → Private Service Connect → Opublikowane usługi
Kliknięcie usługi spowoduje wyświetlenie połączonego projektu konsumenta i jego stanu, tak jak na ilustracji poniżej
16. Ograniczanie dostępu do opublikowanej usługi
Na razie potwierdziliśmy, że obie instancje mają dostęp do opublikowanych usług. Utwórzmy regułę zapory sieciowej ruchu wychodzącego, która zablokuje dostęp consumer-instance-2 do opublikowanej usługi.
Domyślnie GCP zezwala na cały ruch wychodzący, ale odrzuca cały ruch przychodzący. W kolejnych krokach utworzymy regułę zapory sieciowej na podstawie wcześniej zdefiniowanego tagu sieciowego „google2” używany podczas tworzenia instancji Consumer-instance-2 w celu odmowy dostępu do opublikowanej usługi.
Otwórz nową kartę Cloud Shell, klikając + wykonaj tę regułę zapory sieciowej w Cloud Shell
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute --project=$projectname firewall-rules create psc-endpoint-deny-egress --direction=EGRESS --priority=999 --network=vpc-demo-consumer --action=DENY --rules=all --destination-ranges=10.0.60.100/32 --target-tags=google2 --enable-logging
Sprawdźmy teraz, czy consumer-instance-2 ma dostęp do opublikowanej usługi. Jeśli sesja przekroczyła limit czasu, musisz otworzyć nową powłokę Cloud Shell i zalogować się do maszyny wirtualnej w sposób opisany poniżej.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] projectname=YOUR-PROJECT-NAME echo $projectname gcloud compute ssh --zone "us-central1-a" "consumer-instance-2" --project "$projectname"
W Cloud Shell wykonaj te czynności:
user@consumer-instance-2:~$ curl 10.0.60.100
Przykładowe dane wyjściowe
user@consumer-instance-2:~$ curl 10.0.60.100 curl: (7) Failed to connect to 10.0.60.100 port 80: Connection timed out
Logowanie zapory sieciowej – odmowa weryfikacja
Za pomocą eksploratora logów zweryfikuj regułę zapory sieciowej „psc-endpoint-deny-egress” przechwytuje przepływ między instancją maszyny wirtualnej a statycznym adresem IP
- W konsoli Cloud wybierz Identity Operations Logging → Eksplorator logów.
- W polu Zapytanie zaktualizuj poniższy wpis przy użyciu swojego projektu klienta i wybierz „Uruchom zapytanie”
logName:(projects/yourconsumerprojectID/logs/compute.googleapis.com%2Ffirewall) AND jsonPayload.rule_details.reference:("network:vpc-demo-consumer/firewall:psc-endpoint-deny-egress")
- Wyniki zapytania zawierają następujące dane dla każdego dostarczonego zrzutu ekranu
- Rozwiń dziennik i znajdź widoczne poniżej dane wyjściowe. Zanotuj parametr dest_ip: 10.0.60.100 to STATYCZNY adres IP TCP, a pole src_ip: 10.0.70.10 lub 10.0.70.20 to adresy IP instancji maszyny wirtualnej. Dyspozycja jest odrzucona.
17. Procedura czyszczenia
Kroki czyszczenia sieci producenta
Z pojedynczej powłoki Cloud Shell w terminalu projektu Producer, usuń komponenty modułu
gcloud container clusters delete gke-psc-l4 --region us-central1-a --quiet gcloud compute networks subnets delete gke-nat-subnet --region=us-central1 --quiet gcloud compute networks subnets delete node-subnet1 --region=us-central1 --quiet gcloud compute networks delete gke-producer-l4-vpc --quiet
Kroki czyszczenia sieci klienta
Z pojedynczej powłoki Cloud Shell w terminalu projektu klienta – usuwanie komponentów modułu
gcloud compute instances delete consumer-instance-1 --zone=us-central1-a --quiet gcloud compute instances delete consumer-instance-2 --zone=us-central1-a --quiet gcloud compute forwarding-rules delete vpc-consumer-psc-fr --region=us-central1 --quiet gcloud compute addresses delete vpc-consumer-psc --region=us-central1 --quiet gcloud compute firewall-rules delete psclab-iap-consumer --quiet gcloud compute networks subnets delete consumer-subnet --region=us-central1 --quiet gcloud compute networks subnets delete consumer-subnet-vm --region=us-central1 --quiet gcloud compute firewall-rules delete vpc-consumer-psc --quiet gcloud compute firewall-rules delete psc-endpoint-deny-egress --quiet gcloud compute networks delete vpc-demo-consumer --quiet
18. Gratulacje!
Gratulujemy ukończenia ćwiczeń z programowania.
Omówione zagadnienia
- Zalety Private Service Connect
- Kluczowe pojęcia dla konsumentów usług
- Najważniejsze pojęcia dla producentów usług
- Tworzenie środowiska producenta
- Udostępnianie usługi (środowisko producenta) za pomocą przyłącza usługi
- Tworzenie środowiska konsumenta
- Tworzenie reguły przekierowania w sieci konsumenta
- Weryfikacja dostępu klienta
- Włącz kontrolę dostępu na podstawie zasad
- Użycie reguły zapory sieciowej dotyczącej ruchu wychodzącego do zablokowania dostępu do reguły przekierowania klienta