1. 概览
此 Codelab 将引导您使用提示加密 SDK 与 Google Cloud 上可信执行环境 (TEE) 中提供的模型进行安全通信。
学习内容
- 在客户端与远程推理服务器之间建立经过加密验证的加密通道。
- 使用经过认证的 TLS 验证服务器的身份(软件哈希、硬件型号、启动配置)。
- 通过在提示到达经过验证的飞地之前对其进行加密,确保数据主权。
- 使用提示加密 SDK 与在 Confidential Space 上运行的 vLLM 进行交互。
所需条件
- 启用了结算功能的 Google Cloud 项目。
- 已安装并验证 Google Cloud SDK (gcloud)。
- Python 3.10 及更高版本的环境。
- 用于下载 Gemma 模型的 Hugging Face 令牌。
- 熟悉 VPC 防火墙和外部 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 环境或标准虚拟机。
- 服务器:在 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)。
- 预配具有必要权限的服务账号。
- 创建机密虚拟机(启用了 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 向服务器发送一个随机数。
- 报价生成:服务器请求 TEE 硬件报价。
- 验证:SDK 验证引用签名和政策。
- 绑定:SDK 验证渠道的“导出密钥材料”是否与引用中绑定的会话一致。
- 数据传输:仅当所有检查都通过时,才会发送正文。
8. 问题排查
- 证明失败:验证政策中的 image_hash 是否与容器匹配。
- 连接遭拒:确保服务器可访问,并且端口 8000 已开放。
- 超时:TEE 报价生成可能需要一些时间;请确保超时时间足够长。
9. 恭喜
您已成功完成 Prompt Encryption SDK Codelab!您已了解如何在客户端与基于 TEE 的推理服务器之间建立经过加密验证的加密通道。
接下来怎么做?
- 探索高级 AttestationPolicy 配置。
- 将 SDK 与您现有的正式版应用集成。
- 详细了解 Confidential Space 和 TEE 硬件模型。