1. Introduction
Tirez parti de Private Service Connect (PSC) pour établir un accès privé hautement sécurisé pour les modèles déployés à partir de Vertex AI Model Garden. Au lieu d'exposer un point de terminaison public, cette méthode vous permet de déployer votre modèle sur un point de terminaison Vertex AI privé accessible uniquement dans votre cloud privé virtuel (VPC).
Private Service Connect crée un point de terminaison avec une adresse IP interne dans votre VPC, qui se connecte directement au service Vertex AI géré par Google qui héberge votre modèle. Cela permet aux applications de votre VPC et de vos environnements sur site (via Cloud VPN ou Interconnect) d'envoyer des requêtes d'inférence à l'aide d'adresses IP privées.
Il est essentiel de noter que tout le trafic réseau entre votre VPC et le point de terminaison Vertex AI privé reste sur le réseau dédié de Google, ce qui l'isole complètement de l'Internet public. De plus, cette connexion privée est sécurisée en transit à l'aide du chiffrement TLS. Ce chiffrement de bout en bout garantit que vos requêtes de prédiction et vos réponses de modèle sont protégées, ce qui améliore la confidentialité et l'intégrité des données. La combinaison de l'isolation du réseau via PSC et du chiffrement TLS fournit un environnement robuste et sécurisé pour vos prédictions en ligne, ce qui réduit la latence et renforce considérablement votre niveau de sécurité.

Objectifs de l'atelier
Dans ce tutoriel, vous allez télécharger Gemma 3 depuis Model Garden, hébergé dans Vertex AI Online Inference en tant que point de terminaison privé accessible via Private Service Connect. Votre configuration de bout en bout comprendra les éléments suivants :
- Modèle Model Garden : vous allez sélectionner Gemma 3 dans Vertex AI Model Garden et le déployer sur un point de terminaison Private Service Connect.
- Private Service Connect : vous allez configurer un point de terminaison client dans votre cloud privé virtuel (VPC) composé d'une adresse IP interne au sein de votre propre réseau.
- Connexion sécurisée à Vertex AI : le point de terminaison PSC ciblera le rattachement de service généré automatiquement par Vertex AI pour le déploiement de votre modèle privé. Cela établit une connexion privée, garantissant que le trafic entre votre VPC et le point de terminaison de diffusion du modèle ne transite pas par l'Internet public.
- Configuration du client dans votre VPC : vous allez configurer un client (par exemple, une VM Compute Engine) dans votre VPC pour envoyer des requêtes d'inférence au modèle déployé à l'aide de l'adresse IP interne du point de terminaison PSC.
- Vérifier le chiffrement TLS : à partir de la VM cliente de votre VPC, vous utiliserez des outils standards ( openssl s_client) pour vous connecter à l'adresse IP interne du point de terminaison PSC. Cette étape vous permettra de confirmer que le canal de communication vers le service Vertex AI est bien chiffré à l'aide du protocole TLS en inspectant les détails du handshake et le certificat de serveur présenté.
À la fin de ce tutoriel, vous disposerez d'un exemple fonctionnel d'un modèle Model Garden diffusé en mode privé, accessible uniquement depuis votre réseau VPC désigné.
Points abordés
Dans ce tutoriel, vous allez apprendre à déployer un modèle à partir de Vertex AI Model Garden et à le rendre accessible de manière sécurisée depuis votre cloud privé virtuel (VPC) à l'aide de Private Service Connect (PSC). Cette méthode permet à vos applications de votre VPC (le client) de se connecter en mode privé au point de terminaison du modèle Vertex AI (le service producteur) sans transiter par l'Internet public.
Plus précisément, vous apprendrez à :
- Comprendre PSC pour Vertex AI : comment PSC permet des connexions privées et sécurisées entre le client et le producteur. Votre VPC peut accéder au modèle Model Garden déployé à l'aide d'adresses IP internes.
- Déployer un modèle avec accès privé : comment configurer un point de terminaison Vertex AI pour que votre modèle Model Garden utilise PSC, ce qui en fait un point de terminaison privé.
- Rôle du rattachement de service : lorsque vous déployez un modèle sur un point de terminaison Vertex AI privé, Google Cloud crée automatiquement un rattachement de service dans un projet locataire géré par Google. Ce rattachement de service expose le service de diffusion du modèle aux réseaux clients.
- Créer un point de terminaison PSC dans votre VPC :
- Comment obtenir l'URI unique du rattachement de service à partir des détails de votre point de terminaison Vertex AI déployé.
- Comment réserver une adresse IP interne dans le sous-réseau de votre choix dans votre VPC.
- Comment créer une règle de transfert dans votre VPC qui fait office de point de terminaison PSC, en ciblant le rattachement de service Vertex AI. Ce point de terminaison rend le modèle accessible via l'adresse IP interne réservée.
- Établir une connectivité privée : comment le point de terminaison PSC de votre VPC se connecte au rattachement de service, en reliant votre réseau au service Vertex AI de manière sécurisée.
- Envoyer des requêtes d'inférence en mode privé : comment envoyer des requêtes de prédiction à partir de ressources (telles que des VM Compute Engine) de votre VPC à l'adresse IP interne du point de terminaison PSC.
- Validation : étapes à suivre pour tester et confirmer que vous pouvez envoyer des requêtes d'inférence de votre VPC au modèle Model Garden déployé via la connexion privée.
- Vérifier le chiffrement TLS : comment utiliser des outils depuis votre client VPC (par exemple, une VM Compute Engine) pour vous connecter via TLS à l'adresse IP interne du point de terminaison PSC.
Une fois cette opération terminée, vous pourrez héberger des modèles de Model Garden qui ne sont accessibles que depuis votre infrastructure de réseau privé.
Ce dont vous avez besoin
Projet Google Cloud
Autorisations IAM
- Administrateur AI Platform (roles/ml.Admin)
- Administrateur de réseaux Compute (roles/compute.networkAdmin)
- Administrateur d'instances Compute (roles/compute.instanceAdmin)
- Administrateur de sécurité de Compute (roles/compute.securityAdmin)
- Administrateur DNS (roles/dns.admin)
- Utilisateur de tunnels sécurisés par IAP (roles/iap.tunnelResourceAccessor)
- Administrateur Logging (roles/logging.admin)
- Administrateur Notebooks (roles/notebooks.admin)
- Administrateur de projet IAM (roles/resourcemanager.projectIamAdmin)
- Administrateur de compte de service (roles/iam.serviceAccountAdmin)
- Administrateur d'utilisation du service (roles/serviceusage.serviceUsageAdmin)
2. Avant de commencer
Mettre à jour le projet pour qu'il soit compatible avec le tutoriel
Ce tutoriel utilise des $variables pour faciliter l'implémentation de la configuration gcloud dans Cloud Shell.
Dans Cloud Shell, procédez comme suit :
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
projectid=[YOUR-PROJECT-ID]
echo $projectid
Activation de l'API
Dans Cloud Shell, procédez comme suit :
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. Déployer le modèle
Suivez les étapes ci-dessous pour déployer votre modèle à partir de Model Garden.
Dans la console Google Cloud, accédez à Model Garden, puis recherchez et sélectionnez Gemma 3.

Cliquez sur "Déployer le modèle", puis sélectionnez "Vertex AI".

Sélectionnez "Modifier les paramètres" en bas de la section "Paramètres de déploiement".

Dans le volet "Déployer sur Vertex AI", assurez-vous que l'accès au point de terminaison est configuré sur "Private Service Connect", puis sélectionnez votre projet.

Laissez toutes les autres options sur leurs valeurs par défaut, puis sélectionnez "Déployer" en bas de la page et vérifiez l'état du déploiement dans vos notifications.

Dans Model Garden, sélectionnez la région us-central1, qui fournit le modèle et le point de terminaison Gemma 3. Le déploiement du modèle prend environ cinq minutes.

Au bout de 30 minutes, le point de terminaison passera à l'état "Actif" une fois l'opération terminée.

Obtenez l'ID du point de terminaison et notez-le en sélectionnant le point de terminaison.

Sélectionnez le point de terminaison pour récupérer son ID et mettre à jour la variable. Dans l'exemple présenté, l'ID est 1934769929467199488.
Dans Cloud Shell, procédez comme suit :
endpointID=<Enter_Your_Endpoint_ID>
region=us-central1
Procédez comme suit pour obtenir l'URI du rattachement de service Private Service Connect. Cette chaîne d'URI est utilisée par le client lors du déploiement d'un point de terminaison client PSC.
Dans Cloud Shell, utilisez la variable ID/Région du point de terminaison, puis exécutez la commande suivante :
gcloud ai endpoints describe $endpointID --region=$region | grep -i serviceAttachment:
Vous trouverez un exemple ci-dessous. :
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
Copiez le contenu après serviceAttachment dans une variable appelée "Service_attachment". Vous en aurez besoin ultérieurement lors de la création de la connexion PSC.
user@cloudshell:$ Service_attachment=<Enter_Your_ServiceAttachment>
4. Configuration du client
Créer le VPC client
Dans Cloud Shell, procédez comme suit :
gcloud compute networks create consumer-vpc --project=$projectid --subnet-mode=custom
Créer le sous-réseau de la VM cliente
Dans Cloud Shell, procédez comme suit :
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
Créez le sous-réseau du point de terminaison PSC. Dans Cloud Shell, procédez comme suit :**:**
gcloud compute networks subnets create pscendpoint-subnet --project=$projectid --range=10.10.10.0/28 --network=consumer-vpc --region=$region
5. Activer IAP
Pour permettre à IAP de se connecter à vos instances de VM, créez une règle de pare-feu qui :
- s'applique à toutes les instances de VM que vous souhaitez rendre accessibles à l'aide d'IAP ;
- autorise le trafic entrant à partir de la plage IP 35.235.240.0/20, qui contient toutes les adresses IP qu'IAP utilise pour le transfert TCP.
Dans Cloud Shell, créez la règle de pare-feu IAP.
gcloud compute firewall-rules create ssh-iap-consumer \
--network consumer-vpc \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
6. Créer des instances de VM clientes
Dans Cloud Shell, créez l'instance de VM cliente, 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. Points de terminaison Private Service Connect
Le client crée un point de terminaison client (règle de transfert) avec une adresse IP interne dans son VPC. Ce point de terminaison PSC cible le rattachement de service du producteur. Les clients du VPC client ou du réseau hybride peuvent envoyer du trafic à cette adresse IP interne pour accéder au service du producteur.
Réservez une adresse IP pour le point de terminaison client.
Dans Cloud Shell, créez la règle de transfert.
gcloud compute addresses create psc-address \
--project=$projectid \
--region=$region \
--subnet=pscendpoint-subnet \
--addresses=10.10.10.6
Vérifiez que l'adresse IP est réservée.
Dans Cloud Shell, répertoriez l'adresse IP réservée.
gcloud compute addresses list
L'adresse IP 10.10.10.6 doit être réservée.

Créez le point de terminaison client en spécifiant l'URI du rattachement de service, target-service-attachment, que vous avez capturé à l'étape précédente, dans la section Déployer le modèle.
Dans Cloud Shell, décrivez le rattachement réseau.
gcloud compute forwarding-rules create psc-consumer-ep \
--network=consumer-vpc \
--address=psc-address \
--region=$region \
--target-service-attachment=$Service_attachment \
--project=$projectid
Vérifiez que le rattachement de service accepte le point de terminaison.
Dans Cloud Shell, procédez comme suit :
gcloud compute forwarding-rules describe psc-consumer-ep \
--project=$projectid \
--region=$region
Dans la réponse, vérifiez que l'état "ACCEPTED" s'affiche dans le champ pscConnectionStatus.

8. Configurer la connexion au point de terminaison HTTPS Vertex via TLS
Créez une zone privée DNS pour pouvoir obtenir une inférence en ligne sans avoir à spécifier d'adresse IP.
Dans Cloud Shell, procédez comme suit :
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."
Créez un enregistrement A pour mapper le domaine à l'adresse IP PSC.
Dans Cloud Shell, procédez comme suit :
gcloud dns record-sets create "*.prediction.p.vertexai.goog." \
--zone=vertex \
--type=A \
--ttl=300 \
--rrdatas="10.10.10.6"
Créez une instance Cloud Router comme prérequis pour une instance NAT.
Dans Cloud Shell, procédez comme suit :
gcloud compute routers create consumer-cr \
--region=$region --network=consumer-vpc \
--asn=65001
Créez une instance Cloud NAT utilisée pour télécharger les packages openssl et dnsutils.
Dans Cloud Shell, procédez comme suit :
gcloud compute routers nats create consumer-nat-gw \
--router=consumer-cr \
--region=$region \
--nat-all-subnet-ip-ranges \
--auto-allocate-nat-external-ips
Connectez-vous via SSH (console) à la VM cliente. Dans Cloud Shell, procédez comme suit :
gcloud compute ssh --zone "us-central1-a" "consumer-vm" --tunnel-through-iap --project "$projectid"
Mettez à jour les packages ci-dessous, installez open-ssl et installez les utilitaires DNS.
Dans Cloud Shell, procédez comme suit :
sudo apt update
sudo apt install openssl
sudo apt-get install -y dnsutils
Vous aurez besoin du numéro de projet à l'étape suivante. Pour obtenir votre numéro de projet, exécutez la commande suivante à partir de Cloud Shell et placez-le dans une variable :
Dans Cloud Shell, procédez comme suit :
gcloud projects describe $projectid --format="value(projectNumber)"
Example Output: 549538389202
projectNumber=549538389202
Vous aurez besoin de quelques autres variables définies dans les étapes suivantes. Définissez ces variables(ENDPOINT_ID, REGION, VERTEX_AI_PROJECT_ID) en les capturant d'abord à partir de Cloud Shell, puis en créant les mêmes variables dans la VM.
Dans Cloud Shell, procédez comme suit :
echo $projectNumber
echo $projectid
echo $region
echo $endpointID
Exemple de résultat ci-dessous :
549538389202
test4-473419
Us-central1
1934769929467199s
Dans votre VM cliente, ajoutez ces variables (exemple ci-dessous) :
projectNumber=1934769929467199488
projectid=test4-473419
region=us-central1
endpointID=1934769929467199488
Téléchargez le certificat Vertex AI en exécutant la commande suivante à partir de votre répertoire d'accueil dans votre VM. Cette commande crée un fichier nommé 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.

Déplacez le certificat vers le magasin d'approbation du système.
sudo mv vertex_certificate.crt /usr/local/share/ca-certificates
Mettez à jour le gestionnaire de certificats.
sudo update-ca-certificates
Une fois la mise à jour effectuée, le résultat doit se présenter comme suit :
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 final à partir de la VM cliente
Sur la VM cliente, réauthentifiez-vous avec les identifiants par défaut de l'application et spécifiez les champs d'application Vertex AI :
gcloud auth application-default login
--scopes=https://www.googleapis.com/auth/cloud-platform
Sur la VM cliente, exécutez la commande curl suivante pour tester la prédiction de votre modèle Gemini avec l'invite "Qu'est-ce qui pèse le plus : 500 grammes de plumes ou de pierres ?
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?"}] }'
RÉSULTAT FINAL : SUCCÈS !
Le résultat que vous devriez voir est une prédiction de Gemma 3 en bas de la sortie. Cela montre que vous avez pu atteindre le point de terminaison de l'API en mode privé via le point de terminaison 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. Effectuer un nettoyage
Dans Cloud Shell, supprimez les composants du tutoriel.
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. Félicitations
Félicitations ! Vous avez configuré et validé l'accès privé à l'API Gemma 3 hébergée sur Vertex AI Prediction à l'aide d'un point de terminaison Private Service Connect utilisant un certificat autosigné obtenu à partir de Vertex AI et déployé dans le magasin d'approbation des VM.
Vous avez créé l'infrastructure cliente, y compris la réservation d'une adresse IP interne, la configuration d'un point de terminaison Private Service Connect (règle de transfert) dans votre VPC et un DNS privé pour correspondre au certificat autosigné *prediction.p.vertexai.goog. Ce point de terminaison se connecte de manière sécurisée au service Vertex AI en ciblant le rattachement de service associé à votre modèle Gemma 3 déployé.
Cette configuration garantit que vos applications du VPC ou des réseaux connectés peuvent interagir en mode privé avec l'API Gemma 3 à l'aide d'une adresse IP interne utilisant des certificats. Tout le trafic reste dans le réseau de Google et ne transite jamais par l'Internet public.