1. 總覽
本程式碼實驗室會引導您使用提示加密 SDK,與 Google Cloud 受信任的執行環境 (TEE) 中提供的模型安全地通訊。
課程內容
- 在用戶端和遠端推論伺服器之間建立經過加密驗證的加密管道。
- 使用經過認證的 TLS 驗證伺服器身分 (軟體雜湊、硬體型號、啟動設定)。
- 確保資料主權,在提示抵達已驗證的 Enclave 前,一律保持加密狀態。
- 使用提示加密 SDK 與在 Confidential Space 上執行的 vLLM 互動。
軟硬體需求
- 已啟用計費功能的 Google Cloud 專案。
- 已安裝並驗證 Google Cloud SDK (gcloud)。
- Python 3.10 以上版本環境。
- 用於下載 Gemma 模型的 Hugging Face 權杖。
- 熟悉虛擬私有雲防火牆和外部 IP 位址配額。
- 如要在本機建構 SDK,必須編譯 _ekm.c C 擴充功能。如果未安裝 Python C 標頭,這個步驟就會失敗。安裝 python3-dev 即可解決這個問題 (例如,在 Debian/Ubuntu 中執行 sudo apt-get install python3-dev)。
2. 設定雲端資源
開始之前,請務必啟用必要 API 並設定環境。
1. 啟用必要的 API:
gcloud services enable compute.googleapis.com \
confidentialcomputing.googleapis.com \
logging.googleapis.com \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com
2. 設定 Docker:
gcloud auth configure-docker gcr.io
3. 設定 Hugging Face 權杖:
export HF_TOKEN="your_token"
4. 複製存放區:
git clone https://github.com/google/prompt-encryption-sdk && cd prompt-encryption-sdk
3. 情境
我們將使用:
- 用戶端:本機 Python 環境或標準 VM。
- 伺服器:在 Confidential Space (TDX/SEV-SNP) 內提供開放原始碼模型 (例如 Gemma) 的 vLLM 執行個體。
- SDK:prompt_encryption_sdk Python 程式庫。
4. 步驟 0:設定伺服器
在用戶端驗證任何內容之前,我們需要 Confidential Space 中執行的伺服器。系統會提供 Bash 指令碼來處理佈建作業。
./codelabs/setup.sh --project-id <PROJECT_ID>
setup.sh 指令碼會執行下列動作:
- 啟用必要的 API (Compute、機密運算、Logging、Artifact Registry、Cloud Build)。
- 建構及推送 Docker 映像檔 (使用經過驗證的 TLS 中介軟體包裝 vLLM)。
- 提供具備必要權限的服務帳戶。
- 建立機密 VM (啟用 H100 GPU 和 TDX 的 A3 執行個體)。
- 設定網路和負載平衡 (直通式網路負載平衡器)。
- 將輸出內容 (圖片雜湊和負載平衡器 IP) 儲存至本機檔案。
5. 步驟 1:執行經過認證的用戶端
伺服器現在安全無虞地運作中,請建立經過認證的連線。
python3 -m venv venv
source venv/bin/activate
pip install -r examples/requirements.txt
pip install -e .
./codelabs/run_client.sh <PROJECT_ID>
run_client.sh 指令碼會讀取部署詳細資料,並使用 ConfidentialSDKClient 執行 Python 要求。如果認證失敗,系統會引發 AttestationError,且不會傳送提示。
6. 步驟 2:清除
為避免產生費用,請在完成後清理資源。
./codelabs/cleanup.sh --project-id <PROJECT_ID>
7. 幕後花絮
http.post 期間會發生什麼事?
- TCP/TLS:已建立標準連線。
- 交握攔截:SDK 會在傳送主體前暫停。
- AttestConnection RPC:SDK 會將 Nonce 傳送至伺服器。
- 產生引用:伺服器要求 TEE 硬體引用。
- 驗證:SDK 會驗證報價簽章和政策。
- 繫結:SDK 會驗證管道的「匯出金鑰材料」是否與引號中繫結的會期相符。
- 資料傳輸:只有在所有檢查都通過時,才會傳送主體。
8. 疑難排解
- 驗證失敗:確認政策中的 image_hash 與容器相符。
- 連線遭拒:請確認伺服器可連線,且通訊埠 8000 已開啟。
- 逾時:TEE 報價產生作業可能需要一些時間,請確保逾時時間足夠。
9. 恭喜
您已成功完成提示加密 SDK 程式碼研究室!您已瞭解如何在用戶端與 TEE 型推論伺服器之間建立經過加密驗證的加密管道。
後續步驟
- 探索進階 AttestationPolicy 設定。
- 將 SDK 整合至現有的正式版應用程式。
- 進一步瞭解 Confidential Space 和 TEE 硬體型號。