Używanie protokołu TLS do zabezpieczania prognoz online w Vertex AI

1. Wprowadzenie

Korzystaj z usługi Private Service Connect (PSC), aby ustanowić wysoce bezpieczny, prywatny dostęp do modeli wdrożonych z bazy modeli Vertex AI. Zamiast udostępniać publiczny punkt końcowy, ta metoda umożliwia wdrożenie modelu w prywatnym punkcie końcowym Vertex AI, który jest dostępny tylko w Twoim prywatnym środowisku wirtualnym w chmurze (VPC).

Usługa Private Service Connect tworzy w Twojej sieci VPC punkt końcowy z wewnętrznym adresem IP, który łączy się bezpośrednio z zarządzaną przez Google usługą Vertex AI hostującą Twój model. Umożliwia to aplikacjom w środowiskach VPC i lokalnych (za pomocą Cloud VPN lub Interconnect) wysyłanie żądań wnioskowania przy użyciu prywatnych adresów IP.

Co ważne, cały ruch w sieci między siecią VPC a prywatnym punktem końcowym Vertex AI pozostaje w dedykowanej sieci Google, co całkowicie izoluje go od publicznego internetu. Ponadto to połączenie prywatne jest zabezpieczone podczas przesyłania za pomocą szyfrowania TLS. Szyfrowanie typu end-to-end zapewnia ochronę żądań prognozowania i odpowiedzi modelu, zwiększając poufność i integralność danych. Połączenie izolacji sieciowej za pomocą PSC i szyfrowania TLS zapewnia solidne i bezpieczne środowisko dla prognoz online, zmniejszając czas oczekiwania i znacznie zwiększając stan zabezpieczeń.

8bdac2f2d3dd88c9.png

Co utworzysz

W tym samouczku pobierzesz model Gemma 3 z bazy modeli hostowanej w Vertex AI Online Inference jako prywatny punkt końcowy dostępny przez Private Service Connect. Konfiguracja kompleksowa obejmuje:

  1. Model z bazy modeli: wybierzesz model Gemma 3 z bazy modeli Vertex AI i wdrożysz go w punkcie końcowym Private Service Connect.
  2. Private Service Connect: w prywatnym środowisku wirtualnym w chmurze (VPC) skonfigurujesz punkt końcowy konsumenta składający się z wewnętrznego adresu IP w Twojej sieci.
  3. Bezpieczne połączenie z Vertex AI: punkt końcowy PSC będzie kierowany na załącznik usługi wygenerowany automatycznie przez Vertex AI na potrzeby wdrożenia modelu prywatnego. Ustanawia to połączenie prywatne, dzięki czemu ruch między siecią VPC a punktem końcowym wdrożenia modelu nie przechodzi przez publiczny internet.
  4. Konfiguracja klienta w sieci VPC: skonfigurujesz klienta (np. maszynę wirtualną Compute Engine) w sieci VPC, aby wysyłał żądania wnioskowania do wdrożonego modelu za pomocą wewnętrznego adresu IP punktu końcowego PSC.
  5. Sprawdź szyfrowanie TLS: na maszynie wirtualnej klienta w sieci VPC użyj standardowych narzędzi ( openssl s_client), aby połączyć się z wewnętrznym adresem IP punktu końcowego PSC. Ten krok pozwoli Ci potwierdzić, że kanał komunikacji z usługą Vertex AI jest szyfrowany za pomocą protokołu TLS. Wystarczy, że sprawdzisz szczegóły uzgadniania połączenia i przedstawiony certyfikat serwera.

Na koniec będziesz mieć działający przykład modelu z repozytorium Model Garden, który jest udostępniany prywatnie i dostępny tylko z poziomu wyznaczonej sieci VPC.

Czego się nauczysz

Z tego samouczka dowiesz się, jak wdrożyć model z repozytorium Vertex AI Model Garden i bezpiecznie udostępnić go z prywatnego środowiska wirtualnego w chmurze (VPC) za pomocą Private Service Connect (PSC). Ta metoda umożliwia aplikacjom w sieci VPC (konsumentowi) prywatne łączenie się z punktem końcowym modelu Vertex AI (usługą producenta) bez przechodzenia przez publiczny internet.

Dowiesz się m.in.:

  1. Omówienie PSC w Vertex AI: jak PSC umożliwia prywatne i bezpieczne połączenia między konsumentem a producentem. Sieć VPC może uzyskać dostęp do wdrożonego modelu z bazy modeli za pomocą wewnętrznych adresów IP.
  2. Wdrażanie modelu z dostępem prywatnym: jak skonfigurować punkt końcowy Vertex AI dla modelu z repozytorium Model Garden, aby używać PSC, co sprawi, że będzie to punkt końcowy prywatny.
  3. Rola połączenia usługi: gdy wdrażasz model w prywatnym punkcie końcowym Vertex AI, Google Cloud automatycznie tworzy połączenie usługi w projekcie najemcy zarządzanym przez Google. To przyłącze usługi udostępnia usługę wdrożenia modelu sieciom konsumentów.
  4. Tworzenie punktu końcowego PSC w sieci VPC:
  • Jak uzyskać unikalny identyfikator URI przyłączenia usługi z informacji o wdrożonym punkcie końcowym Vertex AI.
  • Jak zarezerwować wewnętrzny adres IP w wybranej podsieci w sieci VPC.
  • Jak utworzyć w sieci VPC regułę przekazywania, która będzie działać jako punkt końcowy PSC i będzie kierować ruch do przyłącza usługi Vertex AI. Ten punkt końcowy udostępnia model za pomocą zarezerwowanego wewnętrznego adresu IP.
  1. Nawiązywanie połączenia prywatnego: jak punkt końcowy PSC w sieci VPC łączy się z przyłączem usługi, bezpiecznie łącząc Twoją sieć z usługą Vertex AI.
  2. Prywatne wysyłanie żądań wnioskowania: jak wysyłać żądania prognozowania z zasobów (takich jak maszyny wirtualne Compute Engine) w sieci VPC na wewnętrzny adres IP punktu końcowego PSC.
  3. Weryfikacja: czynności, które należy wykonać, aby sprawdzić i potwierdzić, że możesz wysyłać żądania wnioskowania z sieci VPC do wdrożonego modelu Model Garden za pomocą połączenia prywatnego.
  4. Weryfikowanie szyfrowania TLS: jak używać narzędzi w kliencie VPC (np. na maszynie wirtualnej Compute Engine), aby połączyć się przez TLS z wewnętrznym adresem IP punktu końcowego PSC.

Dzięki temu będziesz mieć możliwość hostowania modeli z Model Garden, które są dostępne tylko z Twojej prywatnej infrastruktury sieciowej.

Czego potrzebujesz

Projekt Google Cloud

Uprawnienia

2. Zanim zaczniesz

Aktualizowanie projektu na potrzeby samouczka

W tym samouczku używamy zmiennych $variables, aby ułatwić implementację konfiguracji gcloud w Cloud Shell.

W Cloud Shell wykonaj te czynności:

gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
projectid=[YOUR-PROJECT-ID]
echo $projectid

Włączanie interfejsu API

W Cloud Shell wykonaj te czynności:

gcloud services enable "compute.googleapis.com"
gcloud services enable "aiplatform.googleapis.com"
gcloud services enable "serviceusage.googleapis.com"
gcloud services enable dns.googleapis.com

3. Wdrażanie modelu

Aby wdrożyć model z Model Garden, wykonaj te czynności:

W konsoli Google Cloud otwórz Model Garden, a następnie wyszukaj i wybierz Gemma 3.

47c724030a846b25.png

Kliknij Wdróż model i wybierz Vertex AI.

a9a9f4aef7e52356.png

U dołu sekcji Ustawienia wdrożenia kliknij Edytuj ustawienia.

d5b449d2893ddf2f.png

W panelu Wdróż w Vertex AI sprawdź, czy dostęp do punktu końcowego jest skonfigurowany jako Private Service Connect, a następnie wybierz projekt.

c679aa90c3638e31.png

W przypadku pozostałych opcji pozostaw wartości domyślne, a następnie u dołu kliknij Wdróż i sprawdź stan wdrożenia w powiadomieniach.

d5eab71cbb43e2fe.png

W Model Garden wybierz region us-central1, który udostępnia model Gemma 3 i punkt końcowy. Wdrożenie modelu zajmuje około 5 minut.

fce9d5c9152255f1.png

Po 30 minutach punkt końcowy przejdzie w stan „Aktywny”.

d6cc741415213e1a.png

Wybierz punkt końcowy, aby uzyskać i zapisać jego identyfikator.

87d1756fa534619d.png

Wybierz punkt końcowy, aby pobrać jego identyfikator i zaktualizować zmienną. W tym przykładzie identyfikator to 1934769929467199488.

W Cloud Shell wykonaj te czynności:

endpointID=<Enter_Your_Endpoint_ID>
region=us-central1

Aby uzyskać identyfikator URI przyłącza usługi Private Service Connect, wykonaj te czynności. Ten ciąg URI jest używany przez konsumenta podczas wdrażania punktu końcowego konsumenta PSC.

W Cloud Shell użyj zmiennej identyfikatora punktu końcowego lub regionu, a potem wydaj to polecenie:

gcloud ai endpoints describe $endpointID --region=$region  | grep -i serviceAttachment:

Oto przykład:

user@cloudshell:$ gcloud ai endpoints describe 1934769929467199488 --region=us-central1 | grep -i serviceAttachment:

Using endpoint [https://us-central1-aiplatform.googleapis.com/]
    serviceAttachment: projects/o9457b320a852208e-tp/regions/us-central1/serviceAttachments/gkedpm-52065579567eaf39bfe24f25f7981d

Skopiuj zawartość po serviceAttachment do zmiennej o nazwie „Service_attachment”. Będzie ona potrzebna później podczas tworzenia połączenia PSC.

user@cloudshell:$ Service_attachment=<Enter_Your_ServiceAttachment>

4. Konfiguracja konsumencka

Tworzenie sieci VPC konsumenta

W Cloud Shell wykonaj te czynności:

gcloud compute networks create consumer-vpc --project=$projectid --subnet-mode=custom

Tworzenie podsieci maszyny wirtualnej konsumenta

W Cloud Shell wykonaj te czynności:

gcloud compute networks subnets create consumer-vm-subnet --project=$projectid --range=192.168.1.0/24 --network=consumer-vpc --region=$region --enable-private-ip-google-access

Utwórz podsieć punktu końcowego PSC. W Cloud Shell wykonaj te czynności:

gcloud compute networks subnets create pscendpoint-subnet --project=$projectid --range=10.10.10.0/28 --network=consumer-vpc --region=$region

5. Włączanie IAP

Aby umożliwić IAP połączenie z instancjami maszyn wirtualnych, utwórz regułę zapory sieciowej, która:

  • Dotyczy wszystkich instancji maszyn wirtualnych, które mają być dostępne przez IAP.
  • Zezwala na ruch przychodzący z zakresu adresów IP 35.235.240.0/20. Ten zakres zawiera wszystkie adresy IP, których IAP używa do przekierowywania TCP.

W Cloud Shell utwórz regułę zapory sieciowej IAP.

gcloud compute firewall-rules create ssh-iap-consumer \
    --network consumer-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

6. Tworzenie instancji maszyn wirtualnych konsumentów

W Cloud Shell utwórz instancję maszyny wirtualnej klienta o nazwie consumer-vm.

gcloud compute instances create consumer-vm \
    --project=$projectid \
    --machine-type=e2-micro \
    --image-family debian-11 \
    --no-address \
    --shielded-secure-boot \
    --image-project debian-cloud \
    --zone us-central1-a \
    --subnet=consumer-vm-subnet 

7. Punkty końcowe Private Service Connect

Konsument tworzy punkt końcowy konsumenta (regułę przekierowania) z wewnętrznym adresem IP w swojej sieci VPC. Ten punkt końcowy PSC jest kierowany na przyłącze usługi producenta. Klienty w sieci VPC konsumenta lub sieci hybrydowej mogą wysyłać ruch na ten wewnętrzny adres IP, aby uzyskać dostęp do usługi producenta.

Zarezerwuj adres IP dla punktu końcowego klienta.

W Cloud Shell utwórz regułę przekierowania.

gcloud compute addresses create psc-address \
    --project=$projectid \
    --region=$region \
    --subnet=pscendpoint-subnet \
    --addresses=10.10.10.6

Sprawdź, czy adres IP jest zarezerwowany.

W Cloud Shell wyświetl listę zarezerwowanych adresów IP.

gcloud compute addresses list 

Powinien być widoczny zarezerwowany adres IP 10.10.10.6.

3029e97ddc9c192d.png

Utwórz punkt końcowy klienta, podając identyfikator URI przyłącza usługi, target-service-attachment, który został zarejestrowany w sekcji Wdrażanie modelu w poprzednim kroku.

W Cloud Shell opisz przyłącze sieci.

 gcloud compute forwarding-rules create psc-consumer-ep \
    --network=consumer-vpc \
    --address=psc-address \
    --region=$region \
    --target-service-attachment=$Service_attachment \
    --project=$projectid

Sprawdź, czy przyłączenie usługi akceptuje punkt końcowy.

W Cloud Shell wykonaj te czynności:

gcloud compute forwarding-rules describe psc-consumer-ep \
    --project=$projectid \
    --region=$region

W odpowiedzi sprawdź, czy w polu pscConnectionStatus wyświetla się stan „ACCEPTED”.

e1debc2bdb6a1a44.png

8. Konfigurowanie połączenia z punktem końcowym HTTPS Vertex AI za pomocą protokołu TLS

Utwórz prywatną strefę DNS, aby uzyskać wnioskowanie online bez konieczności podawania adresu IP.

W Cloud Shell wykonaj te czynności:

DNS_NAME_SUFFIX="prediction.p.vertexai.goog."  

gcloud dns managed-zones create vertex \
--project=$projectid \
--dns-name=$DNS_NAME_SUFFIX \
--networks=consumer-vpc \
--visibility=private \
--description="A DNS zone for Vertex AI endpoints using Private Service Connect."

Utwórz rekord A, aby zmapować domenę na adres IP usługi PSC.

W Cloud Shell wykonaj te czynności:

gcloud dns record-sets create "*.prediction.p.vertexai.goog." \
  --zone=vertex \
  --type=A \
  --ttl=300 \
  --rrdatas="10.10.10.6"

Utwórz instancję Cloud Router jako warunek wstępny dla instancji NAT.

W Cloud Shell wykonaj te czynności:

gcloud compute routers create consumer-cr \
--region=$region --network=consumer-vpc \
--asn=65001 

Utwórz instancję Cloud NAT, która będzie używana do pobierania pakietów openssl i dnsutils.

W Cloud Shell wykonaj te czynności:

gcloud compute routers nats create consumer-nat-gw \
  --router=consumer-cr \
  --region=$region \
  --nat-all-subnet-ip-ranges \
  --auto-allocate-nat-external-ips 

Połącz się z maszyną wirtualną klienta przez SSH (konsola). W Cloud Shell wykonaj te czynności:

gcloud compute ssh --zone "us-central1-a" "consumer-vm" --tunnel-through-iap --project "$projectid"

Zaktualizuj poniższe pakiety, zainstaluj OpenSSL i narzędzia DNS.

W Cloud Shell wykonaj te czynności:

sudo apt update 
sudo apt install openssl
sudo apt-get install -y dnsutils

Numer projektu będzie Ci potrzebny w następnym kroku. Aby uzyskać numer projektu, uruchom to polecenie w Cloud Shell i umieść go w zmiennej:

W Cloud Shell wykonaj te czynności:

gcloud projects describe $projectid --format="value(projectNumber)"
Example Output: 549538389202
projectNumber=549538389202

W kolejnych krokach musisz zdefiniować kilka innych zmiennych. Zdefiniuj te zmienne(ENDPOINT_ID, REGION, VERTEX_AI_PROJECT_ID), najpierw przechwytując je w powłoce Cloud Shell, a potem tworząc te same zmienne na maszynie wirtualnej.

W Cloud Shell wykonaj te czynności:

echo $projectNumber
echo $projectid 
echo $region
echo $endpointID

Przykładowe dane wyjściowe poniżej:

549538389202
test4-473419
Us-central1
1934769929467199s

Na maszynie wirtualnej klienta dodaj te zmienne – przykład poniżej:

projectNumber=1934769929467199488  
projectid=test4-473419
region=us-central1
endpointID=1934769929467199488

Pobierz certyfikat Vertex AI, wykonując to polecenie w katalogu głównym maszyny wirtualnej. To polecenie tworzy plik o nazwie vertex_certificate.crt.

sudo openssl s_client -showcerts -connect $endpointID-$region-$projectNumber.prediction.p.vertexai.goog:443 </dev/null | openssl x509 -outform pem -out vertex_certificate.crt

Output should look like below, error is expected.

2f2899141dde1af2.png

Przenieś certyfikat do systemowego magazynu zaufanych certyfikatów.

sudo mv vertex_certificate.crt /usr/local/share/ca-certificates

Zaktualizuj menedżera certyfikatów.

sudo update-ca-certificates

Po aktualizacji powinna wyglądać tak:

user@linux-vm:~$ sudo update-ca-certificates

Updating certificates in /etc/ssl/certs...

1 added, 0 removed; done.

Running hooks in /etc/ca-certificates/update.d...

Done.

9. Test końcowy z maszyny wirtualnej konsumenta

Na maszynie wirtualnej klienta ponownie uwierzytelnij się za pomocą domyślnego uwierzytelniania aplikacji i określ zakresy Vertex AI:

gcloud auth application-default login
--scopes=https://www.googleapis.com/auth/cloud-platform 

Na maszynie wirtualnej klienta uruchom to polecenie curl, aby przetestować prognozowanie za pomocą modelu Gemini z promptem „Co waży więcej: 1 funt piór czy kamieni?

curl -v -X POST -H "Authorization: Bearer $(gcloud auth application-default print-access-token)"   -H "Content-Type: application/json" https://$endpointID-$region-$projectNumber.prediction.p.vertexai.goog/v1/projects/$projectid/locations/$region/endpoints/$endpointID/chat/completions   -d '{"model": "google/gemma-3-12b-it", "messages": [{"role": "user","content": "What weighs more 1 pound of feathers or rocks?"}] }'

WYNIK KOŃCOWY – SUKCES!!!

Na dole danych wyjściowych powinna pojawić się prognoza modelu Gemma 3. Oznacza to, że udało Ci się uzyskać dostęp do punktu końcowego interfejsu API w sposób prywatny za pomocą punktu końcowego PSC.

 Connection #0 to host 10.10.10.6 left intact
{"id":"chatcmpl-9e941821-65b3-44e4-876c-37d81baf62e0","object":"chat.completion","created":1759009221,"model":"google/gemma-3-12b-it","choices":[{"index":0,"message":{"role":"assistant","reasoning_content":null,"content":"This is a classic trick question! They weigh the same. One pound is one pound, regardless of the material. 😊\n\n\n\n","tool_calls":[]},"logprobs":null,"finish_reason":"stop","stop_reason":106}],"usage":{"prompt_tokens":20,"total_tokens":46,"completion_tokens":26,"prompt_tokens_details":null},"prompt_logprobs":null

10. Czyszczenie danych

W Cloud Shell usuń komponenty samouczka.

Get Deployed Model ID first with this command, you will need it to delete the Endpoint ID:

gcloud ai endpoints describe $endpointID \
  --region=$region \
  --project=$projectid \
  --format="table[no-heading](deployedModels.id)"

Example Output: 7389140900875599872

Put it in a Variable:

deployedModelID=7389140900875599872

Run following Commands:

gcloud ai endpoints undeploy-model $endpointID --deployed-model-id=$deployedModelID --region=$region --quiet

gcloud ai endpoints delete $endpointID --project=$projectid --region=$region --quiet

Run Following command to get $MODEL_ID to delete Model:

gcloud ai models list --project=$projectid --region=$region

Example Output:

Using endpoint [https://us-central1-aiplatform.googleapis.com/]
MODEL_ID: gemma-3-12b-it-1768409471942
DISPLAY_NAME: gemma-3-12b-it-1768409471942

Put MODEL_ID value in a variable:

MODEL_ID=gemma-3-12b-it-1768409471942

Run the follow command to delete Model:

gcloud ai models delete $MODEL_ID --project=$projectid --region=$region --quiet

Clean up rest of the lab:
gcloud compute instances delete consumer-vm --zone=us-central1-a --quiet

gcloud compute forwarding-rules delete psc-consumer-ep --region=$region --project=$projectid --quiet

gcloud compute addresses delete psc-address --region=$region --project=$projectid --quiet

gcloud compute networks subnets delete pscendpoint-subnet consumer-vm-subnet --region=$region --quiet

gcloud compute firewall-rules delete ssh-iap-consumer --project=$projectid

gcloud compute routers delete consumer-cr --region=$region

gcloud compute networks delete consumer-vpc --project=$projectid --quiet

11. Gratulacje

Gratulacje. Udało Ci się skonfigurować i zweryfikować prywatny dostęp do interfejsu Gemma 3 API hostowanego w Vertex AI Prediction przy użyciu punktu końcowego Private Service Connect z certyfikatem podpisanym samodzielnie, który został uzyskany z Vertex AI i wdrożony w magazynie zaufanych certyfikatów maszyn wirtualnych.

Utworzono infrastrukturę konsumenta, w tym zarezerwowano wewnętrzny adres IP, skonfigurowano punkt końcowy usługi Private Service Connect (regułę przekierowania) w sieci VPC i prywatny DNS, aby pasował do certyfikatu podpisanego samodzielnie *prediction.p.vertexai.goog. Ten punkt końcowy bezpiecznie łączy się z usługą Vertex AI, kierując się na załącznik usługi powiązany z wdrożonym modelem Gemma 3.

Ta konfiguracja zapewnia, że aplikacje w sieci VPC lub połączonych sieciach mogą prywatnie wchodzić w interakcje z interfejsem Gemma 3 API przy użyciu wewnętrznego adresu IP i certyfikatów. Cały ruch pozostaje w sieci Google i nigdy nie przechodzi przez internet publiczny.

Co dalej?

Więcej informacji i filmy

Dokumentacja