Sử dụng TLS để đưa ra dự đoán trực tuyến an toàn bằng Vertex AI

1. Giới thiệu

Tận dụng Private Service Connect (PSC) để thiết lập quyền truy cập riêng tư, có độ bảo mật cao cho các mô hình được triển khai từ Vertex AI Model Garden. Thay vì hiển thị một điểm cuối công khai, phương thức này cho phép bạn triển khai mô hình của mình đến một điểm cuối Vertex AI riêng tư chỉ có thể truy cập trong Đám mây riêng ảo (VPC) của bạn.

Private Service Connect tạo một điểm cuối có địa chỉ IP nội bộ trong VPC của bạn, kết nối trực tiếp với dịch vụ Vertex AI do Google quản lý đang lưu trữ mô hình của bạn. Điều này cho phép các ứng dụng trong VPC và môi trường tại chỗ (thông qua Cloud VPN hoặc Interconnect) gửi yêu cầu suy luận bằng cách sử dụng IP riêng tư.

Điều quan trọng là tất cả lưu lượng truy cập mạng giữa VPC của bạn và điểm cuối Vertex AI riêng tư vẫn nằm trên mạng chuyên dụng của Google, hoàn toàn tách biệt với Internet công cộng. Ngoài ra, kết nối riêng tư này được bảo mật trong quá trình truyền bằng cách sử dụng phương thức mã hoá TLS. Tính năng mã hoá đầu cuối này đảm bảo rằng các yêu cầu dự đoán và phản hồi của mô hình đều được bảo vệ, giúp tăng cường tính bảo mật và tính toàn vẹn của dữ liệu. Việc kết hợp tính năng cách ly mạng thông qua PSC và phương thức mã hoá TLS mang đến một môi trường bảo mật mạnh mẽ cho các hoạt động dự đoán trực tuyến của bạn, giúp giảm độ trễ và tăng cường đáng kể khả năng bảo mật.

8bdac2f2d3dd88c9.png

Sản phẩm bạn sẽ tạo ra

Trong hướng dẫn này, bạn sẽ tải Gemma 3 xuống từ Model Garden, được lưu trữ trong Vertex AI Online Inference dưới dạng một điểm cuối riêng tư có thể truy cập thông qua Private Service Connect. Quá trình thiết lập mã hoá hai đầu sẽ bao gồm:

  1. Mô hình trong Model Garden: Bạn sẽ chọn Gemma 3 trong Vertex AI Model Garden và triển khai mô hình này đến một điểm cuối Private Service Connect.
  2. Private Service Connect: Bạn sẽ định cấu hình một điểm cuối của người dùng trong Đám mây riêng ảo (VPC) bao gồm một địa chỉ IP nội bộ trong mạng của riêng bạn.
  3. Kết nối an toàn với Vertex AI: Điểm cuối PSC sẽ nhắm đến Service Attachment do Vertex AI tự động tạo cho việc triển khai mô hình riêng tư của bạn. Điều này thiết lập một kết nối riêng tư, đảm bảo lưu lượng truy cập giữa VPC của bạn và điểm cuối phân phát mô hình không đi qua Internet công cộng.
  4. Cấu hình máy khách trong VPC: Bạn sẽ thiết lập một máy khách (ví dụ: máy ảo Compute Engine) trong VPC để gửi các yêu cầu suy luận đến mô hình đã triển khai bằng địa chỉ IP nội bộ của điểm cuối PSC.
  5. Xác minh hoạt động mã hoá TLS: Từ máy ảo ứng dụng trong VPC, bạn sẽ sử dụng các công cụ tiêu chuẩn ( openssl s_client) để kết nối với địa chỉ IP nội bộ của điểm cuối PSC. Bước này sẽ giúp bạn xác nhận rằng kênh giao tiếp với dịch vụ Vertex AI thực sự được mã hoá bằng TLS bằng cách kiểm tra thông tin chi tiết về cơ chế bắt tay và chứng chỉ máy chủ được trình bày.

Đến cuối khoá học, bạn sẽ có một ví dụ minh hoạ chức năng về một mô hình Model Garden được phân phát riêng tư, chỉ có thể truy cập từ bên trong mạng VPC được chỉ định của bạn.

Kiến thức bạn sẽ học được

Trong hướng dẫn này, bạn sẽ tìm hiểu cách triển khai một mô hình từ Vertex AI Model Garden và giúp mô hình đó có thể truy cập một cách an toàn từ Đám mây riêng ảo (VPC) bằng Private Service Connect (PSC). Phương thức này cho phép các ứng dụng trong VPC của bạn (người dùng) kết nối riêng tư với điểm cuối mô hình Vertex AI (dịch vụ nhà sản xuất) mà không cần đi qua Internet công cộng.

Cụ thể, bạn sẽ tìm hiểu:

  1. Tìm hiểu về PSC cho Vertex AI: Cách PSC cho phép các kết nối riêng tư và an toàn từ người dùng đến nhà cung cấp. VPC của bạn có thể truy cập vào mô hình Model Garden đã triển khai bằng địa chỉ IP nội bộ.
  2. Triển khai một mô hình có quyền truy cập riêng tư: Cách định cấu hình một điểm cuối Vertex AI cho mô hình Model Garden để sử dụng PSC, biến điểm cuối đó thành một điểm cuối riêng tư.
  3. Vai trò của Service Attachment: Khi bạn triển khai một mô hình đến một Điểm cuối Vertex AI riêng tư, Google Cloud sẽ tự động tạo một Service Attachment trong một dự án đối tượng thuê do Google quản lý. Service Attachment này cung cấp dịch vụ phân phát mô hình cho các mạng lưới người tiêu dùng.
  4. Tạo điểm cuối PSC trong VPC:
  • Cách lấy URI Service Attachment duy nhất từ thông tin chi tiết về Điểm cuối Vertex AI đã triển khai.
  • Cách đặt trước địa chỉ IP nội bộ trong mạng con bạn chọn trong VPC.
  • Cách tạo một Quy tắc chuyển tiếp trong VPC đóng vai trò là Điểm cuối PSC, nhắm đến Vertex AI Service Attachment. Điểm cuối này giúp mô hình có thể truy cập thông qua IP nội bộ được đặt trước.
  1. Thiết lập kết nối riêng tư: Cách điểm cuối PSC trong VPC của bạn kết nối với Service Attachment, kết nối mạng của bạn với dịch vụ Vertex AI một cách an toàn.
  2. Gửi riêng tư các yêu cầu suy luận: Cách gửi yêu cầu dự đoán từ các tài nguyên (chẳng hạn như máy ảo Compute Engine) trong VPC đến địa chỉ IP nội bộ của Điểm cuối PSC.
  3. Xác thực: Các bước kiểm thử và xác nhận rằng bạn có thể gửi thành công các yêu cầu suy luận từ VPC đến mô hình Model Garden đã triển khai thông qua kết nối riêng tư.
  4. Xác minh hoạt động mã hoá TLS: Cách sử dụng các công cụ trong ứng dụng VPC (ví dụ: máy ảo Compute Engine) để kết nối qua TLS với địa chỉ IP nội bộ của Điểm cuối PSC.

Khi hoàn tất bước này, bạn sẽ có thể lưu trữ các mô hình trong Model Garden mà chỉ có thể truy cập được từ cơ sở hạ tầng mạng riêng của bạn.

Bạn cần có

Dự án trên Google Cloud

Quyền IAM

2. Trước khi bắt đầu

Cập nhật dự án để hỗ trợ hướng dẫn

Hướng dẫn này sử dụng $variables để hỗ trợ việc triển khai cấu hình gcloud trong Cloud Shell.

Trong Cloud Shell, hãy thực hiện các bước sau:

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

Bật API

Trong Cloud Shell, hãy thực hiện các bước sau:

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. Triển khai mô hình

Làm theo các bước dưới đây để triển khai mô hình của bạn từ Model Garden

Trong bảng điều khiển Cloud, hãy Chuyển đến Model Garden rồi tìm và chọn Gemma 3

47c724030a846b25.png

Nhấp vào Triển khai mô hình rồi chọn Vertex AI

a9a9f4aef7e52356.png

Chọn Chỉnh sửa chế độ cài đặt ở cuối mục Cài đặt triển khai

d5b449d2893ddf2f.png

Trong ngăn Triển khai trên Vertex AI, hãy đảm bảo bạn đã định cấu hình Quyền truy cập vào điểm cuối là Private Service Connect, sau đó chọn Dự án của bạn.

c679aa90c3638e31.png

Để nguyên tất cả các giá trị mặc định cho các lựa chọn khác, sau đó chọn Triển khai ở dưới cùng và Kiểm tra thông báo để biết trạng thái triển khai.

d5eab71cbb43e2fe.png

Trong Model Garden, hãy chọn khu vực us-central1 cung cấp mô hình và điểm cuối Gemma 3. Quá trình triển khai mô hình mất khoảng 5 phút.

fce9d5c9152255f1.png

Trong 30 phút, điểm cuối sẽ chuyển sang trạng thái "Đang hoạt động" sau khi hoàn tất

d6cc741415213e1a.png

Lấy và ghi lại Mã nhận dạng điểm cuối bằng cách chọn điểm cuối.

87d1756fa534619d.png

Chọn điểm cuối để truy xuất Mã nhận dạng điểm cuối và cập nhật biến. Trong ví dụ minh hoạ, mã nhận dạng là 1934769929467199488.

Trong Cloud Shell, hãy thực hiện các bước sau:

endpointID=<Enter_Your_Endpoint_ID>
region=us-central1

Thực hiện các bước sau để lấy URI của Private Service Connect Service Attachment. Chuỗi URI này được người tiêu dùng sử dụng khi triển khai một điểm cuối người tiêu dùng PSC.

Trong Cloud Shell, hãy dùng biến Endpoint ID/Region (Mã nhận dạng điểm cuối/Khu vực), sau đó đưa ra lệnh sau:

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

Dưới đây là một ví dụ:

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

Sao chép nội dung sau serviceAttachment vào một biến có tên là "Service_attachment". Bạn sẽ cần biến này sau khi tạo mối kết nối PSC.

user@cloudshell:$ Service_attachment=<Enter_Your_ServiceAttachment>

4. Thiết lập người tiêu dùng

Tạo VPC người tiêu dùng

Trong Cloud Shell, hãy thực hiện các bước sau:

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

Tạo mạng con VM của người tiêu dùng

Trong Cloud Shell, hãy thực hiện các bước sau:

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

Tạo mạng con Điểm cuối PSC, bên trong Cloud Shell, hãy thực hiện các bước sau**:**

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

5. Bật IAP

Để cho phép IAP kết nối với các phiên bản máy ảo, hãy tạo một quy tắc tường lửa có:

  • Áp dụng cho tất cả các phiên bản máy ảo mà bạn muốn có thể truy cập bằng IAP.
  • Cho phép lưu lượng truy cập vào từ dải IP 35.235.240.0/20. Dải này chứa tất cả địa chỉ IP mà IAP sử dụng để chuyển tiếp TCP.

Trong Cloud Shell, hãy tạo quy tắc tường lửa IAP.

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

6. Tạo phiên bản máy ảo cho người tiêu dùng

Trong Cloud Shell, hãy tạo thực thể vm người dùng, 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. Điểm cuối Private Service Connect

Người dùng tạo một điểm cuối của người dùng (quy tắc chuyển tiếp) có địa chỉ IP nội bộ trong VPC của họ. Điểm cuối PSC này nhắm đến tệp đính kèm dịch vụ của nhà sản xuất. Các máy khách trong VPC của người tiêu dùng hoặc mạng kết hợp có thể gửi lưu lượng truy cập đến địa chỉ IP nội bộ này để truy cập vào dịch vụ của nhà sản xuất.

Dành riêng một địa chỉ IP cho điểm cuối của người tiêu dùng.

Trong Cloud Shell, hãy tạo quy tắc chuyển tiếp.

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

Xác minh rằng địa chỉ IP đã được đặt trước.

Trong Cloud Shell, hãy liệt kê địa chỉ IP dành riêng.

gcloud compute addresses list 

Bạn sẽ thấy địa chỉ IP 10.10.10.6 được đặt trước.

3029e97ddc9c192d.png

Tạo điểm cuối của người dùng bằng cách chỉ định URI của tệp đính kèm dịch vụ, target-service-attachment mà bạn đã chụp ở bước trước đó, phần Triển khai mô hình.

Trong Cloud Shell, hãy mô tả network attachment.

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

Xác minh rằng tệp đính kèm dịch vụ chấp nhận điểm cuối.

Trong Cloud Shell, hãy thực hiện các bước sau:

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

Trong phản hồi, hãy xác minh rằng trạng thái "ACCEPTED" xuất hiện trong trường pscConnectionStatus

e1debc2bdb6a1a44.png

8. Thiết lập để kết nối với điểm cuối HTTPS của Vertex thông qua TLS

Tạo một vùng DNS riêng tư để bạn có thể nhận được Suy luận trực tuyến mà không cần chỉ định địa chỉ IP.

Trong Cloud Shell, hãy thực hiện các bước sau:

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

Tạo bản ghi A để liên kết miền với địa chỉ IP PSC.

Trong Cloud Shell, hãy thực hiện các bước sau:

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

Tạo phiên bản Cloud Router làm điều kiện tiên quyết cho phiên bản NAT.

Trong Cloud Shell, hãy thực hiện các bước sau:

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

Tạo thực thể Cloud NAT dùng để tải các gói openssl và dnsutils xuống.

Trong Cloud Shell, hãy thực hiện các bước sau:

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

Kết nối qua ssh (bảng điều khiển) với VM người dùng. Trong Cloud Shell, hãy thực hiện các bước sau:

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

Cập nhật các gói bên dưới, cài đặt open-ssl và cài đặt các tiện ích DNS

Trong Cloud Shell, hãy thực hiện các bước sau:

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

Bạn sẽ cần Số dự án trong bước tiếp theo. Để lấy số dự án, hãy chạy lệnh sau từ Cloud Shell và đặt số dự án vào một Biến:

Trong Cloud Shell, hãy thực hiện các bước sau:

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

Bạn sẽ cần một vài biến khác được xác định trong vài bước tiếp theo, hãy xác định các biến này(ENDPOINT_ID, REGION, VERTEX_AI_PROJECT_ID) bằng cách chụp các biến đó từ cloud shell trước, sau đó tạo các biến tương tự trong VM.

Trong Cloud Shell, hãy thực hiện các bước sau:

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

Ví dụ về kết quả đầu ra bên dưới:

549538389202
test4-473419
Us-central1
1934769929467199s

Trong VM người dùng, hãy thêm các biến này – ví dụ bên dưới:

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

Tải chứng chỉ Vertex AI xuống bằng cách thực thi lệnh sau từ thư mục chính trong máy ảo. Lệnh này sẽ tạo một tệp có tên là 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

Di chuyển chứng chỉ vào kho lưu trữ uy tín của hệ thống.

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

Cập nhật trình quản lý chứng chỉ.

sudo update-ca-certificates

Sau khi được cập nhật, tệp này sẽ có dạng như sau.

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. Thử nghiệm cuối cùng từ VM người tiêu dùng

Trên VM người dùng, hãy xác thực lại bằng Thông tin xác thực mặc định của ứng dụng và chỉ định các phạm vi Vertex AI:

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

Trong VM người dùng, hãy chạy lệnh curl sau để kiểm thử tính năng Dự đoán cho Mô hình Gemini bằng câu lệnh "1 pound lông và 1 pound đá, cái nào nặng hơ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?"}] }'

KẾT QUẢ CUỐI CÙNG – THÀNH CÔNG!!!

Kết quả bạn sẽ thấy là dự đoán từ Gemma 3 ở cuối đầu ra. Điều này cho thấy bạn có thể truy cập vào điểm cuối API một cách riêng tư thông qua điểm cuối 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. Dọn dẹp

Trong Cloud Shell, hãy xoá các thành phần hướng dẫn.

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. Xin chúc mừng

Chúc mừng bạn đã định cấu hình và xác thực thành công quyền truy cập riêng tư vào Gemma 3 API được lưu trữ trên Vertex AI Prediction bằng Điểm cuối Private Service Connect bằng chứng chỉ tự ký lấy từ Vertex AI và triển khai vào kho lưu trữ uy tín của VM.

Bạn đã tạo cơ sở hạ tầng người dùng, bao gồm cả việc đặt trước một địa chỉ IP nội bộ, định cấu hình một Điểm cuối Private Service Connect (một quy tắc chuyển tiếp) trong VPC và DNS riêng tư để khớp với chứng chỉ tự ký *prediction.p.vertexai.goog. Điểm cuối này kết nối an toàn với dịch vụ Vertex AI bằng cách nhắm đến tệp đính kèm dịch vụ được liên kết với mô hình Gemma 3 đã triển khai của bạn.

Chế độ thiết lập này đảm bảo các ứng dụng của bạn trong VPC hoặc các mạng được kết nối có thể tương tác riêng tư với Gemma 3 API bằng địa chỉ IP nội bộ bằng cách sử dụng chứng chỉ. Tất cả lưu lượng truy cập vẫn nằm trong mạng của Google, không bao giờ đi qua Internet công cộng.

Tiếp theo là gì?

Tài liệu đọc thêm và video

Tài liệu tham khảo