Menggunakan TLS untuk Prediksi Online yang Aman dengan Vertex AI

1. Pengantar

Manfaatkan Private Service Connect (PSC) untuk membuat akses pribadi yang sangat aman bagi model yang di-deploy dari Vertex AI Model Garden. Daripada mengekspos endpoint publik, metode ini memungkinkan Anda men-deploy model ke endpoint Vertex AI pribadi yang hanya dapat diakses dalam Virtual Private Cloud (VPC) Anda.

Private Service Connect membuat endpoint dengan alamat IP internal di dalam VPC Anda, yang terhubung langsung ke layanan Vertex AI yang dikelola Google yang menghosting model Anda. Hal ini memungkinkan aplikasi di VPC dan lingkungan lokal Anda (melalui Cloud VPN atau Interconnect) mengirim permintaan inferensi menggunakan IP pribadi.

Yang penting, semua traffic jaringan antara VPC Anda dan endpoint Vertex AI pribadi tetap berada di jaringan khusus Google, sehingga sepenuhnya terisolasi dari internet publik. Selain itu, koneksi pribadi ini diamankan dalam pengiriman menggunakan enkripsi TLS. Enkripsi end-to-end ini memastikan bahwa permintaan prediksi dan respons model Anda terlindungi, sehingga meningkatkan kerahasiaan dan integritas data. Kombinasi isolasi jaringan melalui PSC dan enkripsi TLS memberikan lingkungan yang sangat aman untuk prediksi online Anda, mengurangi latensi, dan secara signifikan memperkuat postur keamanan Anda.

8bdac2f2d3dd88c9.png

Yang akan Anda bangun

Dalam tutorial ini, Anda akan mendownload Gemma 3 dari Model Garden, yang dihosting di Inferensi Online Vertex AI sebagai endpoint pribadi yang dapat diakses melalui Private Service Connect. Penyiapan end-to-end Anda akan mencakup:

  1. Model Garden Model: Anda akan memilih Gemma 3 dari Vertex AI Model Garden dan men-deploy-nya ke endpoint Private Service Connect.
  2. Private Service Connect: Anda akan mengonfigurasi endpoint konsumen di Virtual Private Cloud (VPC) yang terdiri dari alamat IP internal dalam jaringan Anda sendiri.
  3. Koneksi Aman ke Vertex AI: Endpoint PSC akan menargetkan Lampiran Layanan yang dibuat secara otomatis oleh Vertex AI untuk deployment model pribadi Anda. Tindakan ini akan membuat koneksi pribadi, sehingga memastikan traffic antara VPC Anda dan endpoint penayangan model tidak melintasi internet publik.
  4. Konfigurasi Klien dalam VPC Anda: Anda akan menyiapkan klien (misalnya, VM Compute Engine) dalam VPC untuk mengirim permintaan inferensi ke model yang di-deploy menggunakan alamat IP internal endpoint PSC.
  5. Verifikasi Enkripsi TLS: Dari VM klien dalam VPC, Anda akan menggunakan alat standar ( openssl s_client) untuk terhubung ke alamat IP internal endpoint PSC. Langkah ini akan memungkinkan Anda mengonfirmasi bahwa saluran komunikasi ke layanan Vertex AI memang dienkripsi menggunakan TLS dengan memeriksa detail handshake dan sertifikat server yang ditampilkan.

Pada akhirnya, Anda akan memiliki contoh fungsional model Model Garden yang ditayangkan secara pribadi, yang hanya dapat diakses dari dalam jaringan VPC yang Anda tetapkan.

Yang akan Anda pelajari

Dalam tutorial ini, Anda akan mempelajari cara men-deploy model dari Vertex AI Model Garden dan membuatnya dapat diakses dengan aman dari Virtual Private Cloud (VPC) menggunakan Private Service Connect (PSC). Metode ini memungkinkan aplikasi Anda dalam VPC (konsumen) terhubung secara pribadi ke endpoint model Vertex AI (layanan produsen) tanpa melintasi internet publik.

Secara khusus, Anda akan mempelajari:

  1. Memahami PSC untuk Vertex AI: Cara PSC memungkinkan koneksi pribadi dan aman dari konsumen ke produsen. VPC Anda dapat mengakses model Model Garden yang di-deploy menggunakan alamat IP internal.
  2. Men-deploy Model dengan Akses Pribadi: Cara mengonfigurasi Endpoint Vertex AI untuk model Model Garden agar menggunakan PSC, sehingga menjadikannya endpoint pribadi.
  3. Peran Lampiran Layanan: Saat Anda men-deploy model ke Endpoint Vertex AI pribadi, Google Cloud akan otomatis membuat Lampiran Layanan di project tenant yang dikelola Google. Lampiran Layanan ini mengekspos layanan penayangan model ke jaringan konsumen.
  4. Membuat Endpoint PSC di VPC Anda:
  • Cara mendapatkan URI Lampiran Layanan unik dari detail Endpoint Vertex AI yang di-deploy.
  • Cara mencadangkan alamat IP internal dalam subnet yang dipilih di VPC Anda.
  • Cara membuat Aturan Penerusan di VPC yang berfungsi sebagai Endpoint PSC, yang menargetkan Lampiran Layanan Vertex AI. Endpoint ini membuat model dapat diakses melalui IP internal yang dicadangkan.
  1. Membangun Konektivitas Pribadi: Cara Endpoint PSC di VPC Anda terhubung ke Lampiran Layanan, yang menjembatani jaringan Anda dengan layanan Vertex AI secara aman.
  2. Mengirim Permintaan Inferensi Secara Pribadi: Cara mengirim permintaan prediksi dari resource (seperti VM Compute Engine) dalam VPC Anda ke alamat IP internal Endpoint PSC.
  3. Validasi: Langkah-langkah untuk menguji dan mengonfirmasi bahwa Anda dapat berhasil mengirim permintaan inferensi dari VPC ke model Model Garden yang di-deploy melalui koneksi pribadi.
  4. Memverifikasi Enkripsi TLS: Cara menggunakan alat dari dalam klien VPC Anda (misalnya, VM Compute Engine) untuk terhubung melalui TLS ke alamat IP internal Endpoint PSC.

Dengan menyelesaikannya, Anda akan dapat menghosting model dari Model Garden yang hanya dapat dijangkau dari infrastruktur jaringan pribadi Anda.

Yang Anda butuhkan

Project Google Cloud

Izin IAM

2. Sebelum memulai

Memperbarui project untuk mendukung tutorial

Tutorial ini menggunakan $variables untuk membantu penerapan konfigurasi gcloud di Cloud Shell.

Di dalam Cloud Shell, lakukan hal berikut:

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

Pengaktifan API

Di dalam Cloud Shell, lakukan hal berikut:

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. Deploy Model

Ikuti langkah-langkah di bawah untuk men-deploy model Anda dari Model Garden

Di Konsol Google Cloud, Buka Model Garden, lalu telusuri dan pilih Gemma 3

47c724030a846b25.png

Klik Deploy model, lalu pilih Vertex AI

a9a9f4aef7e52356.png

Pilih Edit Setelan di bagian bawah bagian Setelan Deployment

d5b449d2893ddf2f.png

Di panel Deploy on Vertex AI, pastikan Endpoint Access dikonfigurasi sebagai Private Service Connect, lalu pilih Project Anda.

c679aa90c3638e31.png

Biarkan semua opsi lainnya dalam setelan default, lalu pilih Deploy di bagian bawah & Periksa status deployment di notifikasi Anda.

d5eab71cbb43e2fe.png

Di Model Garden, pilih region, us-central1, yang menyediakan model dan endpoint Gemma 3. Deployment model memerlukan waktu sekitar 5 menit.

fce9d5c9152255f1.png

Dalam 30 menit, endpoint akan bertransisi ke "Aktif" setelah selesai

d6cc741415213e1a.png

Dapatkan dan catat ID Endpoint dengan memilih endpoint.

87d1756fa534619d.png

Pilih endpoint untuk mengambil ID Endpoint-nya dan perbarui variabel. Dalam contoh yang ditampilkan, ID-nya adalah 1934769929467199488.

Di dalam Cloud Shell, lakukan hal berikut:

endpointID=<Enter_Your_Endpoint_ID>
region=us-central1

Lakukan langkah-langkah berikut untuk mendapatkan URI Lampiran Layanan Private Service Connect. String URI ini digunakan oleh konsumen saat men-deploy endpoint konsumen PSC.

Di dalam Cloud Shell, gunakan variabel Endpoint ID/Region, lalu jalankan perintah berikut:

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

Berikut contohnya:

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

Salin konten setelah serviceAttachment ke dalam variabel bernama "Service_attachment". Anda akan memerlukannya nanti saat membuat koneksi PSC.

user@cloudshell:$ Service_attachment=<Enter_Your_ServiceAttachment>

4. Penyiapan Konsumen

Buat VPC Konsumen

Di dalam Cloud Shell, lakukan hal berikut:

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

Membuat subnet VM konsumen

Di dalam Cloud Shell, lakukan hal berikut:

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

Buat subnet Endpoint PSC, di dalam Cloud Shell, lakukan hal berikut**:**

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

5. Mengaktifkan IAP

Untuk mengizinkan IAP terhubung ke instance VM Anda, buat aturan firewall yang:

  • Berlaku untuk semua instance VM yang ingin Anda akses menggunakan IAP.
  • Mengizinkan traffic masuk dari rentang IP 35.235.240.0/20. Rentang ini berisi semua alamat IP yang digunakan IAP untuk penerusan TCP.

Di dalam Cloud Shell, buat aturan firewall IAP.

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

6. Membuat instance VM konsumen

Di dalam Cloud Shell, buat instance VM konsumen, 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. Endpoint Private Service Connect

Konsumen membuat endpoint konsumen (aturan penerusan) dengan alamat IP internal dalam VPC-nya. Endpoint PSC ini menargetkan lampiran layanan produsen. Klien dalam jaringan VPC konsumen atau jaringan hybrid dapat mengirim traffic ke alamat IP internal ini untuk menjangkau layanan produsen.

Cadangkan alamat IP untuk endpoint konsumen.

Di dalam Cloud Shell, buat aturan penerusan.

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

Verifikasi bahwa alamat IP dicadangkan.

Di dalam Cloud Shell, cantumkan Alamat IP yang dicadangkan.

gcloud compute addresses list 

Anda akan melihat alamat IP 10.10.10.6 dicadangkan.

3029e97ddc9c192d.png

Buat endpoint konsumen dengan menentukan URI lampiran layanan, target-service-attachment, yang Anda ambil di langkah sebelumnya, bagian Deploy Model.

Di dalam Cloud Shell, deskripsikan lampiran jaringan.

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

Pastikan lampiran layanan menerima endpoint.

Di dalam Cloud Shell, lakukan hal berikut:

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

Dalam respons, verifikasi bahwa status "ACCEPTED" muncul di kolom pscConnectionStatus

e1debc2bdb6a1a44.png

8. Menyiapkan koneksi ke endpoint HTTPS Vertex melalui TLS

Buat zona pribadi DNS sehingga Anda bisa mendapatkan Inferensi Online tanpa perlu menentukan alamat IP.

Di dalam Cloud Shell, lakukan hal berikut:

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

Buat data A untuk memetakan domain ke alamat IP PSC.

Di dalam Cloud Shell, lakukan hal berikut:

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

Buat instance Cloud Router sebagai prasyarat untuk instance NAT.

Di dalam Cloud Shell, lakukan hal berikut:

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

Buat instance Cloud NAT yang digunakan untuk mendownload paket openssl dan dnsutils.

Di dalam Cloud Shell, lakukan hal berikut:

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

Hubungkan melalui ssh (konsol) ke VM Konsumen. Di dalam Cloud Shell, lakukan hal berikut:

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

Perbarui paket di bawah, instal open-ssl, dan instal utilitas DNS

Di dalam Cloud Shell, lakukan hal berikut:

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

Anda akan memerlukan Project Number pada langkah berikutnya. Untuk mendapatkan nomor project Anda, jalankan perintah berikut dari Cloud Shell dan masukkan ke dalam Variabel:

Di dalam Cloud Shell, lakukan hal berikut:

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

Anda akan memerlukan beberapa variabel lain yang ditentukan dalam beberapa langkah berikutnya. Tentukan variabel ini(ENDPOINT_ID, REGION, VERTEX_AI_PROJECT_ID) dengan mengambilnya dari Cloud Shell terlebih dahulu, lalu membuat variabel yang sama di VM.

Di dalam Cloud Shell, lakukan hal berikut:

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

Contoh output di bawah:

549538389202
test4-473419
Us-central1
1934769929467199s

Di VM konsumen Anda, tambahkan variabel ini - contoh di bawah:

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

Download sertifikat Vertex AI dengan menjalankan perintah berikut dari direktori beranda di VM Anda. Perintah ini akan membuat file bernama 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

Pindahkan sertifikat ke penyimpanan tepercaya sistem.

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

Perbarui pengelola sertifikat.

sudo update-ca-certificates

Setelah diperbarui, tampilannya akan seperti ini.

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. Pengujian Akhir dari VM Konsumen

Di VM Konsumen, lakukan Autentikasi ulang dengan Kredensial Default Aplikasi dan tentukan cakupan Vertex AI:

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

Di VM Konsumen, jalankan perintah curl berikut untuk menguji Prediksi ke Model Gemini Anda dengan perintah, "Mana yang lebih berat, 1 pon bulu atau batu?

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

HASIL AKHIR - BERHASIL!!!

Hasil yang akan Anda lihat adalah prediksi dari Gemma 3 di bagian bawah output, yang menunjukkan bahwa Anda dapat mengakses endpoint API secara pribadi melalui endpoint 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. Pembersihan

Dari Cloud Shell, hapus komponen tutorial.

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

Selamat, Anda telah berhasil mengonfigurasi dan memvalidasi akses pribadi ke Gemma 3 API yang dihosting di Vertex AI Prediction menggunakan Endpoint Private Service Connect dengan sertifikat yang ditandatangani sendiri yang diperoleh dari Vertex AI dan di-deploy ke trust store VM.

Anda telah membuat infrastruktur konsumen, termasuk mencadangkan alamat IP internal, mengonfigurasi Endpoint Private Service Connect (aturan penerusan) dalam VPC dan DNS pribadi agar cocok dengan *prediction.p.vertexai.goog. yang ditandatangani sendiri. Endpoint ini terhubung dengan aman ke layanan Vertex AI dengan menargetkan lampiran layanan yang terkait dengan model Gemma 3 yang di-deploy.

Penyiapan ini memastikan aplikasi Anda dalam VPC atau jaringan yang terhubung dapat berinteraksi dengan Gemma 3 API secara pribadi menggunakan alamat IP internal menggunakan sertifikat. Semua traffic tetap berada dalam jaringan Google, tidak pernah melintasi internet publik.

Apa selanjutnya?

Bacaan lebih lanjut & Video

Dokumen referensi