1. Введение
Используйте Private Service Connect (PSC) для обеспечения высокозащищенного, приватного доступа к моделям, развернутым из Vertex AI Model Garden. Вместо предоставления доступа к общедоступной конечной точке этот метод позволяет развернуть вашу модель на частной конечной точке Vertex AI, доступной только внутри вашей виртуальной частной сети (VPC).
Private Service Connect создает конечную точку с внутренним IP-адресом внутри вашей VPC, напрямую подключаясь к управляемому Google сервису Vertex AI, на котором размещена ваша модель. Это позволяет приложениям в вашей VPC и локальных средах (через Cloud VPN или Interconnect) отправлять запросы на вывод данных, используя частные IP-адреса.
Крайне важно, что весь сетевой трафик между вашей VPC и частной конечной точкой Vertex AI остается в выделенной сети Google, полностью изолируя ее от общедоступного интернета. Кроме того, это частное соединение защищено при передаче с помощью шифрования TLS. Это сквозное шифрование гарантирует защиту ваших запросов на прогнозирование и ответов модели, повышая конфиденциальность и целостность данных. Сочетание сетевой изоляции с помощью PSC и шифрования TLS обеспечивает надежную защищенную среду для ваших онлайн-прогнозирований, снижая задержку и значительно повышая уровень безопасности.

Что вы построите
В этом руководстве вы загрузите Gemma 3 из Model Garden, размещенную в Vertex AI Online Inference в качестве частной конечной точки, доступной через Private Service Connect. Ваша комплексная настройка будет включать в себя:
- Модель сада моделей: Вам нужно будет выбрать модель Gemma 3 из сада моделей Vertex AI и развернуть ее на конечной точке Private Service Connect.
- Подключение к частной службе: Вам потребуется настроить конечную точку потребителя в вашей виртуальной частной сети (VPC), используя внутренний IP-адрес в вашей собственной сети.
- Защищенное соединение с Vertex AI: конечная точка PSC будет использовать автоматически сгенерированное Vertex AI соединение Service Attachment для развертывания вашей частной модели. Это устанавливает частное соединение, гарантируя, что трафик между вашей VPC и конечной точкой, обслуживающей модель, не будет проходить через общедоступный интернет.
- Настройка клиента в вашей VPC: Вам потребуется настроить клиент (например, виртуальную машину Compute Engine) в вашей VPC для отправки запросов на вывод результатов развернутой модели, используя внутренний IP-адрес конечной точки PSC.
- Проверка шифрования TLS: с клиентской виртуальной машины в вашей VPC вы будете использовать стандартные инструменты (openssl s_client) для подключения к внутреннему IP-адресу конечной точки PSC. Этот шаг позволит вам подтвердить, что канал связи со службой Vertex AI действительно зашифрован с использованием TLS, проверив данные рукопожатия и представленный сертификат сервера.
В итоге у вас будет функциональный пример модели сада-модели, работающей в приватном режиме и доступной только из вашей выделенной сети VPC.
Что вы узнаете
В этом руководстве вы узнаете, как развернуть модель из Vertex AI Model Garden и обеспечить к ней безопасный доступ из вашей виртуальной частной сети (VPC) с помощью Private Service Connect (PSC). Этот метод позволяет вашим приложениям внутри вашей VPC (потребителю) подключаться к конечной точке модели Vertex AI (сервису-производителю) в частном порядке, минуя общедоступный интернет.
В частности, вы узнаете:
- Понимание PSC для Vertex AI: как PSC обеспечивает частные и безопасные соединения между потребителем и производителем. Ваша VPC может получить доступ к развернутой модели Model Garden, используя внутренние IP-адреса.
- Развертывание модели с приватным доступом: как настроить конечную точку Vertex AI для вашей модели Model Garden, чтобы использовать PSC, сделав ее приватной конечной точкой.
- Роль сервисного подключения: При развертывании модели на частной конечной точке Vertex AI Google Cloud автоматически создает сервисное подключение в проекте, управляемом Google. Это сервисное подключение предоставляет доступ к сервису обслуживания модели для сетей потребителей.
- Создание конечной точки PSC в вашей VPC:
- Как получить уникальный URI подключения сервиса из сведений о развернутой конечной точке Vertex AI.
- Как зарезервировать внутренний IP-адрес в выбранной подсети вашей VPC.
- Как создать правило переадресации в вашей VPC, которое будет выступать в качестве конечной точки PSC, ориентированной на подключение к сервису Vertex AI. Эта конечная точка делает модель доступной через зарезервированный внутренний IP-адрес.
- Установление частного соединения: как конечная точка PSC в вашей VPC подключается к сервисному соединению, обеспечивая безопасное соединение вашей сети с сервисом Vertex AI.
- Отправка запросов на вывод результатов в приватном режиме: как отправлять запросы на прогнозирование от ресурсов (например, виртуальных машин Compute Engine) внутри вашей VPC на внутренний IP-адрес конечной точки PSC.
- Проверка: Шаги для тестирования и подтверждения возможности успешной отправки запросов на вывод данных из вашей VPC к развернутой модели Model Garden через частное соединение.
- Проверка TLS-шифрования: как использовать инструменты из вашего VPC-клиента (например, виртуальной машины Compute Engine) для подключения по TLS к внутреннему IP-адресу конечной точки PSC.
Выполнив это, вы сможете размещать модели из Model Garden, доступ к которым будет возможен только из вашей частной сети.
Что вам понадобится
Проект Google Cloud
Разрешения IAM
- Администратор платформы ИИ (roles/ml.Admin)
- Администратор вычислительной сети (roles/compute.networkAdmin)
- Администратор вычислительного экземпляра (roles/compute.instanceAdmin)
- Администратор безопасности вычислительных ресурсов (roles/compute.securityAdmin)
- Администратор DNS (roles/dns.admin)
- Пользователь туннеля, защищенный IAP (roles/iap.tunnelResourceAccessor)
- Ведение логов (roles/logging.admin)
- Администратор блокнотов (roles/notebooks.admin)
- Администратор IAM проекта (roles/resourcemanager.projectIamAdmin)
- Администратор учетной записи службы (roles/iam.serviceAccountAdmin)
- Администратор использования сервиса (roles/serviceusage.serviceUsageAdmin)
2. Прежде чем начать
Обновите проект, чтобы он соответствовал учебному пособию.
В этом руководстве переменные `$variables` используются для упрощения настройки gcloud в Cloud Shell.
Внутри Cloud Shell выполните следующие действия:
gcloud config list project
gcloud config set project [YOUR-PROJECT-ID]
projectid=[YOUR-PROJECT-ID]
echo $projectid
Включение API
Внутри Cloud Shell выполните следующие действия:
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. Модель развертывания
Выполните следующие шаги, чтобы развернуть свою модель из Model Garden.
В консоли Google Cloud перейдите в раздел Model Garden , найдите и выберите Gemma 3.

Нажмите «Развернуть модель» и выберите Vertex AI.

В нижней части раздела «Параметры развертывания» выберите «Редактировать настройки».

В панели «Развертывание на Vertex AI» убедитесь, что для параметра «Доступ к конечной точке» выбран режим «Частное подключение к службе», а затем выберите свой проект.

Оставьте все остальные параметры по умолчанию, затем выберите «Развернуть» внизу и проверьте уведомления о статусе развертывания.

В разделе «Сад моделей» выберите регион us-central1, который предоставляет модель и конечную точку Gemma 3. Развертывание модели занимает приблизительно 5 минут.

Через 30 минут после завершения процесса конечная точка перейдет в состояние "Активно".

Получите и запишите идентификатор конечной точки, выбрав её.

Выберите конечную точку, чтобы получить ее идентификатор (Endpoint ID), и обновите переменную. В приведенном примере идентификатор равен 1934769929467199488.
Внутри Cloud Shell выполните следующие действия:
endpointID=<Enter_Your_Endpoint_ID>
region=us-central1
Выполните следующие действия, чтобы получить URI подключения к службе Private Service Connect. Эта строка URI используется потребителем при развертывании конечной точки потребителя PSC.
Внутри Cloud Shell используйте переменную Endpoint ID/Region, а затем выполните следующую команду:
gcloud ai endpoints describe $endpointID --region=$region | grep -i serviceAttachment:
Ниже приведён пример:
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 в переменную с именем "Service_attachment"; она понадобится вам позже при создании подключения PSC.
user@cloudshell:$ Service_attachment=<Enter_Your_ServiceAttachment>
4. Настройка потребителя
Создайте потребительскую VPC.
Внутри Cloud Shell выполните следующие действия:
gcloud compute networks create consumer-vpc --project=$projectid --subnet-mode=custom
Создайте подсеть виртуальных машин для потребителей.
Внутри Cloud Shell выполните следующие действия:
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
Создайте подсеть PSC Endpoint в Cloud Shell и выполните следующие действия:
gcloud compute networks subnets create pscendpoint-subnet --project=$projectid --range=10.10.10.0/28 --network=consumer-vpc --region=$region
5. Включите встроенные покупки (IAP).
Чтобы разрешить IAP подключаться к вашим виртуальным машинам, создайте правило брандмауэра, которое:
- Применяется ко всем экземплярам виртуальных машин, к которым вы хотите обеспечить доступ с помощью IAP.
- Разрешает входящий трафик из диапазона IP-адресов 35.235.240.0/20. Этот диапазон содержит все IP-адреса, которые IAP использует для пересылки TCP-трафика.
Внутри Cloud Shell создайте правило брандмауэра IAP.
gcloud compute firewall-rules create ssh-iap-consumer \
--network consumer-vpc \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
6. Создайте экземпляры виртуальных машин для потребителей.
Внутри Cloud Shell создайте экземпляр виртуальной машины потребителя, 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. Конечные точки подключения частных сервисов
Потребитель создает конечную точку потребителя (правило переадресации) с внутренним IP-адресом в пределах своей VPC. Эта конечная точка PSC нацелена на подключение к сервису производителя. Клиенты в VPC потребителя или гибридной сети могут отправлять трафик на этот внутренний IP-адрес для доступа к сервису производителя.
Зарезервировать IP-адрес для конечной точки потребителя.
Внутри Cloud Shell создайте правило переадресации.
gcloud compute addresses create psc-address \
--project=$projectid \
--region=$region \
--subnet=pscendpoint-subnet \
--addresses=10.10.10.6
Убедитесь, что IP-адрес зарезервирован.
Внутри Cloud Shell выведите список зарезервированных IP-адресов.
gcloud compute addresses list
Вы должны увидеть зарезервированный IP-адрес 10.10.10.6.

Создайте конечную точку потребителя, указав URI подключения службы, target-service-attachment, который вы получили на предыдущем шаге в разделе «Развертывание модели».
Внутри Cloud Shell опишите сетевое подключение.
gcloud compute forwarding-rules create psc-consumer-ep \
--network=consumer-vpc \
--address=psc-address \
--region=$region \
--target-service-attachment=$Service_attachment \
--project=$projectid
Убедитесь, что подключение к сервису принимает указанную конечную точку.
Внутри Cloud Shell выполните следующие действия:
gcloud compute forwarding-rules describe psc-consumer-ep \
--project=$projectid \
--region=$region
В ответе убедитесь, что в поле pscConnectionStatus отображается статус "ACCEPTED".

8. Настройте подключение к конечной точке Vertex HTTPS через TLS.
Создайте частную зону DNS, чтобы получать данные в режиме онлайн без необходимости указывать IP-адрес.
Внутри Cloud Shell выполните следующие действия:
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."
Создайте запись типа A для сопоставления домена с IP-адресом PSC.
Внутри Cloud Shell выполните следующие действия:
gcloud dns record-sets create "*.prediction.p.vertexai.goog." \
--zone=vertex \
--type=A \
--ttl=300 \
--rrdatas="10.10.10.6"
Для создания экземпляра NAT необходимо предварительно создать экземпляр Cloud Router.
Внутри Cloud Shell выполните следующие действия:
gcloud compute routers create consumer-cr \
--region=$region --network=consumer-vpc \
--asn=65001
Создайте экземпляр Cloud NAT, используемый для загрузки пакетов openssl и dnsutils.
Внутри Cloud Shell выполните следующие действия:
gcloud compute routers nats create consumer-nat-gw \
--router=consumer-cr \
--region=$region \
--nat-all-subnet-ip-ranges \
--auto-allocate-nat-external-ips
Подключитесь к виртуальной машине потребителя через SSH (консоль). Внутри Cloud Shell выполните следующие действия:
gcloud compute ssh --zone "us-central1-a" "consumer-vm" --tunnel-through-iap --project "$projectid"
Обновите указанные ниже пакеты, установите open-ssl и утилиты DNS.
Внутри Cloud Shell выполните следующие действия:
sudo apt update
sudo apt install openssl
sudo apt-get install -y dnsutils
Номер проекта понадобится вам на следующем шаге. Чтобы получить номер проекта, выполните следующую команду в облачной оболочке и сохраните его в переменной:
Внутри Cloud Shell выполните следующие действия:
gcloud projects describe $projectid --format="value(projectNumber)"
Example Output: 549538389202
projectNumber=549538389202
Вам потребуется определить еще несколько переменных на следующих шагах. Определите эти переменные ( ENDPOINT_ID , REGION , VERTEX_AI_PROJECT_ID ), сначала получив их из облачной оболочки, а затем создав те же переменные в виртуальной машине.
Внутри Cloud Shell выполните следующие действия:
echo $projectNumber
echo $projectid
echo $region
echo $endpointID
Пример выходных данных ниже:
549538389202
test4-473419
Us-central1
1934769929467199s
В виртуальной машине потребителя добавьте следующие переменные — пример ниже:
projectNumber=1934769929467199488
projectid=test4-473419
region=us-central1
endpointID=1934769929467199488
Загрузите сертификат Vertex AI, выполнив следующую команду из домашнего каталога вашей виртуальной машины. Эта команда создаст файл с именем 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.

Переместите сертификат в системное хранилище доверенных сертификатов.
sudo mv vertex_certificate.crt /usr/local/share/ca-certificates
Обновите менеджер сертификатов.
sudo update-ca-certificates
После обновления это должно выглядеть так.
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. Заключительное тестирование на виртуальной машине потребителя.
На виртуальной машине потребителя выполните повторную аутентификацию с использованием учетных данных приложения по умолчанию и укажите области действия Vertex AI:
gcloud auth application-default login
--scopes=https://www.googleapis.com/auth/cloud-platform
В виртуальной машине потребителя выполните следующую команду curl, чтобы проверить предсказания вашей модели Gemini, с подсказкой: «Что весит больше — 1 фунт перьев или камней?»
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?"}] }'
ОКОНЧАТЕЛЬНЫЙ РЕЗУЛЬТАТ - УСПЕХ!!!
В нижней части вывода вы должны увидеть предсказание от Gemma 3, это означает, что вам удалось получить доступ к конечной точке API в приватном режиме через конечную точку 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. Уборка
В 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. Поздравляем!
Поздравляем, вы успешно настроили и подтвердили частный доступ к API Gemma 3, размещенному на платформе Vertex AI Prediction, используя конечную точку Private Service Connect с помощью самоподписанного сертификата, полученного от Vertex AI и развернутого в хранилище доверенных сертификатов виртуальных машин.
Вы создали инфраструктуру для потребителей, включая резервирование внутреннего IP-адреса, настройку частной точки подключения к службе (правила переадресации) в вашей VPC и частный DNS для соответствия самоподписанному сертификату *prediction.p.vertexai.goog. Эта точка подключения обеспечивает безопасное соединение со службой Vertex AI, используя в качестве целевого объекта подключение к службе, связанное с развернутой моделью Gemma 3.
Такая настройка гарантирует, что ваши приложения в VPC или подключенных сетях смогут взаимодействовать с API Gemma 3 конфиденциально, используя внутренний IP-адрес и сертификаты. Весь трафик остается внутри сети Google и никогда не проходит через общедоступный интернет.