1. Introducción
Aprovecha Private Service Connect (PSC) para establecer un acceso privado y altamente seguro a los modelos implementados desde Vertex AI Model Garden. En lugar de exponer un extremo público, este método te permite implementar tu modelo en un extremo privado de Vertex AI al que solo se puede acceder dentro de tu nube privada virtual (VPC).
Private Service Connect crea un extremo con una dirección IP interna dentro de tu VPC, que se conecta directamente al servicio de Vertex AI administrado por Google que aloja tu modelo. Esto permite que las aplicaciones en tu VPC y en los entornos locales (a través de Cloud VPN o Interconnect) envíen solicitudes de inferencia con IPs privadas.
Es fundamental destacar que todo el tráfico de red entre tu VPC y el extremo privado de Vertex AI permanece en la red dedicada de Google, lo que lo aísla por completo de Internet pública. Además, esta conexión privada está protegida en tránsito con encriptación TLS. Esta encriptación de extremo a extremo garantiza que tus solicitudes de predicción y las respuestas del modelo estén protegidas, lo que mejora la confidencialidad y la integridad de los datos. La combinación del aislamiento de red a través de PSC y la encriptación TLS proporciona un entorno sólido y seguro para tus predicciones en línea, lo que reduce la latencia y refuerza significativamente tu postura de seguridad.

Qué compilarás
En este instructivo, descargarás Gemma 3 de Model Garden, alojado en la inferencia en línea de Vertex AI como un extremo privado al que se puede acceder a través de Private Service Connect. Tu configuración integral incluirá lo siguiente:
- Modelo de Model Garden: Seleccionarás Gemma 3 de Model Garden de Vertex AI y lo implementarás en un extremo de Private Service Connect.
- Private Service Connect: Configurarás un extremo del consumidor en tu nube privada virtual (VPC) que constará de una dirección IP interna dentro de tu propia red.
- Conexión segura a Vertex AI: El extremo de PSC se dirigirá al adjunto de servicio que Vertex AI genera automáticamente para la implementación de tu modelo privado. Esto establece una conexión privada, lo que garantiza que el tráfico entre tu VPC y el extremo de servicio del modelo no atraviese la Internet pública.
- Configuración del cliente dentro de tu VPC: Configurarás un cliente (p.ej., una VM de Compute Engine) dentro de tu VPC para enviar solicitudes de inferencia al modelo implementado con la dirección IP interna del extremo de PSC.
- Verifica el cifrado TLS: Desde la VM cliente dentro de tu VPC, usarás herramientas estándar ( openssl s_client) para conectarte a la dirección IP interna del extremo de PSC. En este paso, podrás confirmar que el canal de comunicación con el servicio de Vertex AI está encriptado con TLS. Para ello, inspecciona los detalles del protocolo de enlace y el certificado del servidor presentado.
Al final, tendrás un ejemplo funcional de un modelo de Model Garden que se entrega de forma privada y al que solo se puede acceder desde tu red de VPC designada.
Qué aprenderás
En este instructivo, aprenderás a implementar un modelo de Vertex AI Model Garden y a hacer que se pueda acceder a él de forma segura desde tu nube privada virtual (VPC) con Private Service Connect (PSC). Este método permite que tus aplicaciones dentro de tu VPC (el consumidor) se conecten de forma privada al extremo del modelo de Vertex AI (el servicio productor) sin atravesar Internet pública.
Específicamente, aprenderás lo siguiente:
- Información sobre PSC para Vertex AI: Cómo PSC habilita conexiones privadas y seguras entre el consumidor y el productor Tu VPC puede acceder al modelo de Model Garden implementado con direcciones IP internas.
- Implementación de un modelo con acceso privado: Cómo configurar un extremo de Vertex AI para que tu modelo de Model Garden use PSC, lo que lo convierte en un extremo privado.
- El rol del adjunto de servicio: Cuando implementas un modelo en un extremo privado de Vertex AI, Google Cloud crea automáticamente un adjunto de servicio en un proyecto de arrendatario administrado por Google. Este adjunto de servicio expone el servicio de publicación de modelos a las redes de consumidores.
- Cómo crear un extremo de PSC en tu VPC:
- Cómo obtener el URI único de Service Attachment de los detalles del extremo de Vertex AI implementado
- Cómo reservar una dirección IP interna dentro de la subred que elegiste en tu VPC
- Cómo crear una regla de reenvío en tu VPC que actúe como el extremo de PSC y que apunte al adjunto de servicio de Vertex AI Este extremo hace que el modelo sea accesible a través de la IP interna reservada.
- Establecimiento de conectividad privada: Cómo el extremo de PSC en tu VPC se conecta al adjunto de servicio, lo que une tu red con el servicio de Vertex AI de forma segura
- Envío privado de solicitudes de inferencia: Cómo enviar solicitudes de predicción desde recursos (como VMs de Compute Engine) dentro de tu VPC a la dirección IP interna del extremo de PSC
- Validación: Pasos para probar y confirmar que puedes enviar solicitudes de inferencia desde tu VPC al modelo de Model Garden implementado a través de la conexión privada
- Verificación de la encriptación TLS: Cómo usar herramientas desde tu cliente de VPC (p.ej., una VM de Compute Engine) para conectarte a través de TLS a la dirección IP interna del extremo de PSC.
Cuando completes este paso, podrás alojar modelos de Model Garden a los que solo se podrá acceder desde tu infraestructura de red privada.
Requisitos
Proyecto de Google Cloud
Permisos de IAM
- Administrador de AI Platform (roles/ml.Admin)
- Administrador de red de Compute (roles/compute.networkAdmin)
- Administrador de instancias de Compute (roles/compute.instanceAdmin)
- Administrador de seguridad de Compute (roles/compute.securityAdmin)
- Administrador de DNS (roles/dns.admin)
- Usuario de túnel protegido con IAP (roles/iap.tunnelResourceAccessor)
- Administrador de Logging (roles/logging.admin)
- Administrador de Notebooks (roles/notebooks.admin)
- Administrador de IAM de proyecto (roles/resourcemanager.projectIamAdmin)
- Administrador de cuenta de servicio (roles/iam.serviceAccountAdmin)
- Administrador de Service Usage (roles/serviceusage.serviceUsageAdmin)
2. Antes de comenzar
Actualiza el proyecto para que admita el instructivo
En este instructivo, se usan variables para facilitar la implementación de la configuración de gcloud en Cloud Shell.
Dentro de Cloud Shell, haz lo siguiente:
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
projectid=[YOUR-PROJECT-ID]
echo $projectid
Habilitación de la API
Dentro de Cloud Shell, haz lo siguiente:
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. Implementar modelo
Sigue los pasos que se indican a continuación para implementar tu modelo desde Model Garden
En la consola de Google Cloud, ve a Model Garden, busca Gemma 3 y selecciónalo.

Haz clic en Implementar modelo y selecciona Vertex AI

Selecciona Editar configuración en la parte inferior de la sección Configuración de implementación.

En el panel Deploy on Vertex AI, asegúrate de que el acceso al extremo esté configurado como Private Service Connect y, luego, selecciona tu proyecto.

Deja todos los valores predeterminados para las demás opciones, selecciona Deploy en la parte inferior y consulta tus notificaciones para ver el estado de la implementación.

En Model Garden, selecciona la región us-central1, que proporciona el modelo y el extremo de Gemma 3. La implementación del modelo tarda aproximadamente 5 minutos.

En 30 minutos, el extremo pasará al estado "Activo" una vez que se complete el proceso.

Selecciona el extremo para obtener y anotar su ID.

Selecciona el extremo para recuperar su ID y actualizar la variable. En el ejemplo que se muestra, el ID es 1934769929467199488.
Dentro de Cloud Shell, haz lo siguiente:
endpointID=<Enter_Your_Endpoint_ID>
region=us-central1
Realiza las siguientes acciones para obtener el URI del adjunto de servicio de Private Service Connect. El consumidor usa esta cadena de URI cuando implementa un extremo de consumidor de PSC.
Dentro de Cloud Shell, usa la variable ID del extremo/región y, luego, ejecuta el siguiente comando:
gcloud ai endpoints describe $endpointID --region=$region | grep -i serviceAttachment:
A continuación, se muestra un ejemplo.
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
Copia el contenido después de serviceAttachment en una variable llamada "Service_attachment". La necesitarás más adelante cuando crees la conexión de PSC.
user@cloudshell:$ Service_attachment=<Enter_Your_ServiceAttachment>
4. Configuración del consumidor
Crea la VPC del consumidor
Dentro de Cloud Shell, haz lo siguiente:
gcloud compute networks create consumer-vpc --project=$projectid --subnet-mode=custom
Crea la subred de la VM del consumidor
Dentro de Cloud Shell, haz lo siguiente:
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
Crea la subred del extremo de PSC. En Cloud Shell, realiza las siguientes acciones**:
gcloud compute networks subnets create pscendpoint-subnet --project=$projectid --range=10.10.10.0/28 --network=consumer-vpc --region=$region
5. Habilitar IAP
Para permitir que IAP se conecte a tus instancias de VM, crea una regla de firewall que cumpla con lo siguiente:
- Se aplica a todas las instancias de VM a las que deseas acceder mediante IAP.
- Permite el tráfico de entrada desde el rango de IP 35.235.240.0/20. Este rango contiene todas las direcciones IP que IAP usa para el reenvío de TCP.
Dentro de Cloud Shell, crea la regla de firewall de IAP.
gcloud compute firewall-rules create ssh-iap-consumer \
--network consumer-vpc \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
6. Crea instancias de VM de consumidor
Dentro de Cloud Shell, crea la instancia de VM del consumidor, 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. Extremos de Private Service Connect
El consumidor crea un extremo de consumidor (regla de reenvío) con una dirección IP interna dentro de su VPC. Este extremo de PSC apunta al adjunto de servicio del productor. Los clientes dentro de la red híbrida o de VPC del consumidor pueden enviar tráfico a esta dirección IP interna para llegar al servicio del productor.
Reserva una dirección IP para el extremo del consumidor.
Dentro de Cloud Shell, crea la regla de reenvío.
gcloud compute addresses create psc-address \
--project=$projectid \
--region=$region \
--subnet=pscendpoint-subnet \
--addresses=10.10.10.6
Verifica que la dirección IP esté reservada.
En Cloud Shell, enumera la dirección IP reservada.
gcloud compute addresses list
Deberías ver la dirección IP 10.10.10.6 reservada.

Crea el extremo del consumidor especificando el URI del adjunto de servicio, target-service-attachment, que capturaste en el paso anterior, en la sección Implementa el modelo.
Dentro de Cloud Shell, describe el adjunto de red.
gcloud compute forwarding-rules create psc-consumer-ep \
--network=consumer-vpc \
--address=psc-address \
--region=$region \
--target-service-attachment=$Service_attachment \
--project=$projectid
Verifica que el adjunto de servicio acepte el extremo.
Dentro de Cloud Shell, haz lo siguiente:
gcloud compute forwarding-rules describe psc-consumer-ep \
--project=$projectid \
--region=$region
En la respuesta, verifica que aparezca el estado "ACCEPTED" en el campo pscConnectionStatus.

8. Configuración para conectarse al extremo HTTPS de Vertex a través de TLS
Crea una zona privada de DNS para que puedas obtener la inferencia en línea sin necesidad de especificar una dirección IP.
Dentro de Cloud Shell, haz lo siguiente:
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."
Crea un registro A para asignar el dominio a la dirección IP del PSC.
Dentro de Cloud Shell, haz lo siguiente:
gcloud dns record-sets create "*.prediction.p.vertexai.goog." \
--zone=vertex \
--type=A \
--ttl=300 \
--rrdatas="10.10.10.6"
Crea una instancia de Cloud Router como requisito previo para una instancia de NAT.
Dentro de Cloud Shell, haz lo siguiente:
gcloud compute routers create consumer-cr \
--region=$region --network=consumer-vpc \
--asn=65001
Crea la instancia de Cloud NAT que se usa para descargar los paquetes openssl y dnsutils.
Dentro de Cloud Shell, haz lo siguiente:
gcloud compute routers nats create consumer-nat-gw \
--router=consumer-cr \
--region=$region \
--nat-all-subnet-ip-ranges \
--auto-allocate-nat-external-ips
Conéctate a la VM del consumidor a través de SSH (consola). Dentro de Cloud Shell, haz lo siguiente:
gcloud compute ssh --zone "us-central1-a" "consumer-vm" --tunnel-through-iap --project "$projectid"
Actualiza los siguientes paquetes, instala OpenSSL y las utilidades de DNS
Dentro de Cloud Shell, haz lo siguiente:
sudo apt update
sudo apt install openssl
sudo apt-get install -y dnsutils
Necesitarás el número de proyecto en el próximo paso. Para obtener el número de tu proyecto, ejecuta el siguiente comando desde Cloud Shell y colócalo en una variable:
Dentro de Cloud Shell, haz lo siguiente:
gcloud projects describe $projectid --format="value(projectNumber)"
Example Output: 549538389202
projectNumber=549538389202
En los próximos pasos, deberás definir algunas otras variables. Para ello, primero, captúralas desde Cloud Shell y, luego, crea las mismas variables en la VM.ENDPOINT_IDREGIONVERTEX_AI_PROJECT_ID
Dentro de Cloud Shell, haz lo siguiente:
echo $projectNumber
echo $projectid
echo $region
echo $endpointID
A continuación, se muestra un ejemplo de resultado:
549538389202
test4-473419
Us-central1
1934769929467199s
En tu VM de consumidor, agrega estas variables (ejemplo a continuación):
projectNumber=1934769929467199488
projectid=test4-473419
region=us-central1
endpointID=1934769929467199488
Descarga el certificado de Vertex AI ejecutando el siguiente comando desde tu directorio principal en la VM. Este comando crea un archivo llamado 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.

Mueve el certificado al almacén de confianza del sistema.
sudo mv vertex_certificate.crt /usr/local/share/ca-certificates
Actualiza el administrador de certificados.
sudo update-ca-certificates
Debería verse de la siguiente manera una vez que se actualice.
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. Prueba final desde la VM del consumidor
En la VM del consumidor, vuelve a autenticarte con las credenciales predeterminadas de la aplicación y especifica los alcances de Vertex AI:
gcloud auth application-default login
--scopes=https://www.googleapis.com/auth/cloud-platform
En la VM del consumidor, ejecuta el siguiente comando curl para probar la predicción en tu modelo de Gemini con la instrucción "¿Qué pesa más: 1 libra de plumas o de rocas?".
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?"}] }'
RESULTADO FINAL: ¡ÉXITO!
El resultado que deberías ver es la predicción de Gemma 3 en la parte inferior del resultado, lo que demuestra que pudiste acceder al extremo de la API de forma privada a través del extremo de 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. Limpia
Borra los componentes del instructivo desde Cloud Shell.
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. Felicitaciones
Felicitaciones. Configuraste y validaste correctamente el acceso privado a la API de Gemma 3 alojada en Vertex AI Prediction con un extremo de Private Service Connect que usa un certificado autofirmado obtenido de Vertex AI y que se implementó en el almacén de confianza de las VMs.
Creaste la infraestructura del consumidor, lo que incluye reservar una dirección IP interna, configurar un extremo de Private Service Connect (una regla de reenvío) dentro de tu VPC y un DNS privado para que coincida con el certificado autofirmado *prediction.p.vertexai.goog. Este extremo se conecta de forma segura al servicio de Vertex AI a través del adjunto de servicio asociado con tu modelo de Gemma 3 implementado.
Esta configuración garantiza que tus aplicaciones dentro de la VPC o las redes conectadas puedan interactuar con la API de Gemma 3 de forma privada con una dirección IP interna y certificados. Todo el tráfico permanece dentro de la red de Google y nunca atraviesa la Internet pública.