Vertex AI ile güvenli online tahminler için TLS kullanma

1. Giriş

Vertex AI Model Garden'dan dağıtılan modeller için son derece güvenli ve özel erişim oluşturmak üzere Private Service Connect (PSC) özelliğinden yararlanın. Bu yöntem, herkese açık bir uç nokta kullanmak yerine modelinizi yalnızca sanal özel bulutunuzda (VPC) erişilebilen özel bir Vertex AI uç noktasına dağıtmanıza olanak tanır.

Private Service Connect, VPC'nizde dahili IP adresi olan bir uç nokta oluşturarak modelinizi barındıran Google tarafından yönetilen Vertex AI hizmetine doğrudan bağlanır. Bu sayede VPC'nizdeki ve şirket içi ortamlarınızdaki (Cloud VPN veya Interconnect aracılığıyla) uygulamalar, özel IP'leri kullanarak çıkarım istekleri gönderebilir.

En önemlisi, VPC'niz ile özel Vertex AI uç noktası arasındaki tüm ağ trafiği, Google'ın özel ağında kalır ve genel internetten tamamen izole edilir. Ayrıca, bu özel bağlantı, TLS şifrelemesi kullanılarak aktarım sırasında güvence altına alınır. Bu uçtan uca şifreleme, tahmin isteklerinizin ve model yanıtlarınızın korunmasını sağlayarak veri gizliliğini ve bütünlüğünü artırır. PSC üzerinden ağ izolasyonu ve TLS şifrelemenin birleşimi, online tahminleriniz için sağlam bir şekilde güvenli bir ortam sağlar, gecikmeyi azaltır ve güvenlik yapınızı önemli ölçüde güçlendirir.

8bdac2f2d3dd88c9.png

Ne oluşturacaksınız?

Bu eğitimde, Gemma 3'ü Model Garden'dan indirecek ve Private Service Connect üzerinden erişilebilen özel bir uç nokta olarak Vertex AI Online Inference'te barındıracaksınız. Uçtan uca kurulumunuz şunları içerir:

  1. Model Garden modeli: Vertex AI Model Garden'dan Gemma 3'ü seçip Private Service Connect uç noktasına dağıtacaksınız.
  2. Private Service Connect: Sanal Özel Bulutunuzda (VPC) kendi ağınızdaki bir dahili IP adresinden oluşan bir tüketici uç noktası yapılandırırsınız.
  3. Vertex AI'ye güvenli bağlantı: PSC uç noktası, özel model dağıtımınız için Vertex AI tarafından otomatik olarak oluşturulan hizmet ekini hedefler. Bu, özel bir bağlantı oluşturarak VPC'niz ile model sunma uç noktası arasındaki trafiğin genel internet üzerinden geçmemesini sağlar.
  4. VPC'nizdeki İstemci Yapılandırması: PSC uç noktasının dahili IP adresini kullanarak dağıtılan modele çıkarım istekleri göndermek için VPC'nizde bir istemci (ör. Compute Engine sanal makinesi) ayarlarsınız.
  5. TLS şifrelemesini doğrulama: VPC'nizdeki istemci sanal makinesinden, PSC uç noktasının dahili IP adresine bağlanmak için standart araçları ( openssl s_client) kullanırsınız. Bu adım, el sıkışma ayrıntılarını ve sunulan sunucu sertifikasını inceleyerek Vertex AI hizmetiyle iletişim kanalının gerçekten TLS kullanılarak şifrelendiğini doğrulamanıza olanak tanır.

Bu eğitimin sonunda, yalnızca belirlenen VPC ağınızdan erişilebilen, özel olarak sunulan bir Model Garden modeli örneği oluşturmuş olacaksınız.

Neler öğreneceksiniz?

Bu eğitimde, Vertex AI Model Garden'dan bir modeli nasıl dağıtacağınızı ve Private Service Connect (PSC) kullanarak sanal özel bulutunuzdan (VPC) güvenli bir şekilde erişilebilir hale getireceğinizi öğreneceksiniz. Bu yöntem, VPC'nizdeki (tüketici) uygulamalarınızın herkese açık interneti geçmeden Vertex AI model uç noktasına (üretici hizmeti) özel olarak bağlanmasına olanak tanır.

Özellikle şunları öğreneceksiniz:

  1. Vertex AI için PSC'yi anlama: PSC, tüketici-üretici bağlantılarını nasıl özel ve güvenli hale getirir? VPC'niz, dahili IP adreslerini kullanarak dağıtılan Model Garden modeline erişebilir.
  2. Özel erişimle model dağıtma: Model Garden modeliniz için PSC kullanacak bir Vertex AI uç noktasını nasıl yapılandıracağınızı öğrenin. Bu sayede uç nokta özel hale gelir.
  3. Hizmet Ekinin Rolü: Bir modeli özel bir Vertex AI uç noktasına dağıttığınızda Google Cloud, Google tarafından yönetilen bir kiracı projesinde otomatik olarak bir Hizmet Eki oluşturur. Bu hizmet eki, model sunma hizmetini tüketici ağlarına sunar.
  4. VPC'nizde PSC uç noktası oluşturma:
  • Dağıtılan Vertex AI uç nokta ayrıntılarınızdan benzersiz hizmet eki URI'sini edinme
  • VPC'nizdeki seçtiğiniz alt ağda dahili IP adresi ayırma
  • VPC'nizde, Vertex AI hizmet ekini hedefleyen PSC uç noktası olarak işlev gören bir yönlendirme kuralı oluşturma. Bu uç nokta, ayrılmış dahili IP üzerinden modele erişilmesini sağlar.
  1. Özel Bağlantı Oluşturma: VPC'nizdeki PSC uç noktası, hizmet ekiyle nasıl bağlanır ve ağınızı Vertex AI hizmetiyle güvenli bir şekilde nasıl köprüler?
  2. Çıkarım İsteklerini Özel Olarak Gönderme: VPC'nizdeki kaynaklardan (ör. Compute Engine sanal makineleri) PSC uç noktasının dahili IP adresine tahmin istekleri gönderme.
  3. Doğrulama: Özel bağlantı üzerinden VPC'nizden dağıtılan Model Garden modeline başarılı bir şekilde çıkarım isteği gönderebildiğinizi test etme ve onaylama adımları.
  4. TLS Şifrelemesini Doğrulama: VPC istemcinizdeki (ör. Compute Engine sanal makinesi) araçları kullanarak PSC uç noktasının dahili IP adresine TLS üzerinden nasıl bağlanacağınız.

Bu işlemi tamamladığınızda, Model Garden'daki yalnızca özel ağ altyapınızdan erişilebilen modelleri barındırabilirsiniz.

İhtiyacınız olanlar

Google Cloud projesi

IAM İzinleri

2. Başlamadan önce

Projeyi, eğitimi destekleyecek şekilde güncelleyin

Bu eğitimde, Cloud Shell'de gcloud yapılandırmasının uygulanmasına yardımcı olmak için $değişkenleri kullanılır.

Cloud Shell'de aşağıdakileri yapın:

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

API Etkinleştirme

Cloud Shell'de aşağıdakileri yapın:

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. Modeli Dağıt

Model Garden'dan modelinizi dağıtmak için aşağıdaki adımları uygulayın.

Google Cloud Console'da Model Garden'a gidin ve Gemma 3'ü arayıp seçin.

47c724030a846b25.png

Modeli dağıt'ı tıklayın ve Vertex AI'ı seçin.

a9a9f4aef7e52356.png

Dağıtım Ayarları bölümünün alt kısmında Ayarları Düzenle'yi seçin.

d5b449d2893ddf2f.png

Vertex AI'da Dağıt bölmesinde, Uç Nokta Erişimi'nin Private Service Connect olarak yapılandırıldığından emin olun ve projenizi seçin.

c679aa90c3638e31.png

Diğer seçeneklerin tüm varsayılan ayarlarını değiştirmeden en altta Dağıt'ı seçin ve dağıtım durumu için bildirimlerinizi kontrol edin.

d5eab71cbb43e2fe.png

Model Garden'da Gemma 3 modelini ve uç noktasını sağlayan us-central1 bölgesini seçin. Model dağıtımı yaklaşık 5 dakika sürer.

fce9d5c9152255f1.png

30 dakika içinde, tamamlandıktan sonra uç nokta "Etkin"e geçiş yapacak.

d6cc741415213e1a.png

Uç noktayı seçerek uç nokta kimliğini alın ve not edin.

87d1756fa534619d.png

Uç nokta kimliğini almak ve değişkeni güncellemek için uç noktayı seçin. Gösterilen örnekte kimlik 1934769929467199488'dir.

Cloud Shell'de aşağıdakileri yapın:

endpointID=<Enter_Your_Endpoint_ID>
region=us-central1

Private Service Connect hizmet eki URI'sini almak için aşağıdakileri yapın. Bu URI dizesi, PSC tüketici uç noktası dağıtırken tüketici tarafından kullanılır.

Cloud Shell'de, uç nokta kimliği/bölge değişkenini kullanın ve ardından aşağıdaki komutu verin:

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

Aşağıda bir örnek verilmiştir:

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

serviceAttachment'tan sonraki içeriği "Service_attachment" adlı bir değişkene kopyalayın. Bu değişken, daha sonra PSC bağlantısı oluştururken gereklidir.

user@cloudshell:$ Service_attachment=<Enter_Your_ServiceAttachment>

4. Tüketici Kurulumu

Tüketici VPC'sini oluşturma

Cloud Shell'de aşağıdakileri yapın:

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

Tüketici sanal makine alt ağını oluşturma

Cloud Shell'de aşağıdakileri yapın:

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

Cloud Shell'de PSC uç noktası alt ağını oluşturmak için aşağıdakileri yapın**:**

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

5. IAP'yi etkinleştirme

IAP'nin sanal makine örneklerinize bağlanmasına izin vermek için aşağıdaki özellikleri içeren bir güvenlik duvarı kuralı oluşturun:

  • IAP kullanarak erişmek istediğiniz tüm sanal makine örnekleri için geçerlidir.
  • 35.235.240.0/20 IP aralığından gelen giriş trafiğine izin verir. Bu aralık, IAP'nin TCP yönlendirme için kullandığı tüm IP adreslerini içerir.

Cloud Shell'de IAP güvenlik duvarı kuralını oluşturun.

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

6. Tüketici sanal makine örnekleri oluşturma

Cloud Shell'de consumer-vm adlı tüketici sanal makinesi örneğini oluşturun.

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. Private Service Connect uç noktaları

Tüketici, VPC'sinde dahili IP adresi olan bir tüketici uç noktası (yönlendirme kuralı) oluşturur. Bu PSC uç noktası, üreticinin hizmet ekini hedefler. Tüketici VPC'sindeki veya karma ağdaki istemciler, üreticinin hizmetine ulaşmak için bu dahili IP adresine trafik gönderebilir.

Tüketici uç noktası için bir IP adresi ayırın.

Cloud Shell'de iletim kuralını oluşturun.

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

IP adresinin ayrıldığını doğrulayın.

Cloud Shell'de ayrılmış IP adresini listeleyin.

gcloud compute addresses list 

Ayrılmış 10.10.10.6 IP adresini görmeniz gerekir.

3029e97ddc9c192d.png

Önceki adımda (Modeli Dağıtma bölümü) yakaladığınız hizmet eki URI'si (target-service-attachment) değerini belirterek tüketici uç noktasını oluşturun.

Cloud Shell'de ağ ekini açıklayın.

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

Hizmet eklerinin uç noktayı kabul ettiğini doğrulayın.

Cloud Shell'de aşağıdakileri yapın:

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

Yanıtın pscConnectionStatus alanında "ACCEPTED" durumunun göründüğünü doğrulayın.

e1debc2bdb6a1a44.png

8. TLS üzerinden Vertex HTTPS uç noktasına bağlanacak şekilde ayarlama

IP adresi belirtmenize gerek kalmadan Online Çıkarım elde edebilmek için DNS özel bölgesi oluşturun.

Cloud Shell'de aşağıdakileri yapın:

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."

Alan adını PSC IP adresiyle eşlemek için A kaydı oluşturun.

Cloud Shell'de aşağıdakileri yapın:

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

NAT örneği için ön koşul olarak Cloud Router örneği oluşturun.

Cloud Shell'de aşağıdakileri yapın:

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

openssl ve dnsutils paketlerini indirmek için kullanılan Cloud NAT örneğini oluşturun.

Cloud Shell'de aşağıdakileri yapın:

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

ssh (konsol) aracılığıyla tüketici VM'sine bağlanın. Cloud Shell'de aşağıdakileri yapın:

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

Aşağıdaki paketleri güncelleyin, open-ssl'yi ve DNS yardımcı programlarını yükleyin.

Cloud Shell'de aşağıdakileri yapın:

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

Bir sonraki adımda Proje Numarası'na ihtiyacınız olacak. Proje numaranızı almak için Cloud Shell'den aşağıdaki komutu çalıştırın ve bir değişkene yerleştirin:

Cloud Shell'de aşağıdakileri yapın:

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

Sonraki birkaç adımda tanımlanması gereken birkaç değişken daha olacak. Bu değişkenleri(ENDPOINT_ID, REGION, VERTEX_AI_PROJECT_ID) önce Cloud Shell'den yakalayarak, ardından sanal makinede aynı değişkenleri oluşturarak tanımlayın.

Cloud Shell'de aşağıdakileri yapın:

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

Aşağıda örnek bir çıktı verilmiştir:

549538389202
test4-473419
Us-central1
1934769929467199s

Tüketici sanal makinenize aşağıdaki değişkenleri ekleyin (örnek aşağıda verilmiştir):

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

Sanal makinenizdeki ana dizinden aşağıdaki komutu çalıştırarak Vertex AI sertifikasını indirin. Bu komut, vertex_certificate.crt adlı bir dosya oluşturur.

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

Sertifikayı sistem güvenilir sertifika deposuna taşıyın.

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

Sertifika yöneticisini güncelleyin.

sudo update-ca-certificates

Güncellendikten sonra aşağıdaki gibi görünür.

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. Tüketici VM'sinden Son Test

Tüketici VM'sinde, uygulama varsayılan kimlik bilgileriyle yeniden kimlik doğrulama yapın ve Vertex AI kapsamlarını belirtin:

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

Tüketici VM'sinde, "1 pound tüy mü yoksa kaya mı daha ağırdır?" istemiyle Gemini Modelinizde Tahmin'i test etmek için aşağıdaki curl komutunu çalıştırın.

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?"}] }'

SONUÇ: BAŞARILI!!!

Çıkışın en altında Gemma 3'ten tahmin sonucu görmeniz gerekir. Bu, PSC uç noktası aracılığıyla API uç noktasına özel olarak erişebildiğinizi gösterir.

 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. Temizleme

Cloud Shell'den eğitim bileşenlerini silin.

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. Tebrikler

Tebrikler. Vertex AI'den alınan ve VM'lerin güvenilir sertifika deposuna dağıtılan, kendinden imzalı bir sertifika kullanarak Private Service Connect uç noktası aracılığıyla Vertex AI Prediction'da barındırılan Gemma 3 API'ye özel erişimi başarıyla yapılandırdınız ve doğruladınız.

Dahili IP adresi ayırma, VPC'nizde Private Service Connect uç noktası (iletim kuralı) yapılandırma ve *prediction.p.vertexai.goog adlı kendinden imzalı sertifikayla eşleşecek şekilde özel DNS yapılandırma dahil olmak üzere tüketici altyapısını oluşturdunuz. Bu uç nokta, dağıtılan Gemma 3 modelinizle ilişkili hizmet ekini hedefleyerek Vertex AI hizmetine güvenli bir şekilde bağlanır.

Bu kurulum, VPC veya bağlı ağlardaki uygulamalarınızın, sertifikalar kullanarak dahili bir IP adresiyle Gemma 3 API ile özel olarak etkileşime girmesini sağlar. Tüm trafik Google'ın ağında kalır ve hiçbir zaman genel internet üzerinden geçmez.

Yapabilecekleriniz

Daha fazla bilgi ve videolar

Referans belgeler