1. ภาพรวม
Codelab นี้จะแนะนำวิธีใช้ Prompt Encryption SDK เพื่อสื่อสารกับโมเดลที่ให้บริการในสภาพแวดล้อมการดำเนินการที่เชื่อถือได้ (TEE) บน Google Cloud อย่างปลอดภัย
สิ่งที่คุณจะได้เรียนรู้
- สร้างช่องทางที่เข้ารหัสและได้รับการยืนยันด้วยการเข้ารหัสระหว่างไคลเอ็นต์และเซิร์ฟเวอร์การอนุมานระยะไกล
- การยืนยันตัวตนของเซิร์ฟเวอร์ (แฮชซอฟต์แวร์ รุ่นฮาร์ดแวร์ การกำหนดค่าการเปิดตัว) โดยใช้ TLS ที่รับรอง
- รับประกันอธิปไตยด้านข้อมูลด้วยการเข้ารหัสพรอมต์จนกว่าจะถึงพื้นที่ปลอดภัยที่ได้รับการยืนยัน
- การใช้ Prompt Encryption SDK เพื่อโต้ตอบกับ vLLM ที่ทำงานใน Confidential Space
สิ่งที่คุณต้องมี
- โปรเจ็กต์ Google Cloud ที่เปิดใช้การเรียกเก็บเงิน
- ติดตั้งและตรวจสอบสิทธิ์ Google Cloud SDK (gcloud) แล้ว
- สภาพแวดล้อม Python 3.10 ขึ้นไป
- โทเค็น Hugging Face สำหรับดาวน์โหลดโมเดล Gemma
- คุ้นเคยกับไฟร์วอลล์ VPC และโควต้าที่อยู่ IP ภายนอก
- การสร้าง SDK ในเครื่องต้องคอมไพล์ส่วนขยาย C ของ _ekm.c ขั้นตอนนี้จะล้มเหลวหากไม่ได้ติดตั้งส่วนหัว C ของ Python ติดตั้ง python3-dev เพื่อแก้ไขปัญหานี้ (เช่น sudo apt-get install python3-dev สำหรับ Debian/Ubuntu)
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 มาตรฐาน
- เซิร์ฟเวอร์: อินสแตนซ์ vLLM ที่ให้บริการโมเดลโอเพนซอร์ส (เช่น Gemma) ภายในพื้นที่ลับ (TDX/SEV-SNP)
- SDK: ไลบรารี Python ของ prompt_encryption_sdk
4. ขั้นตอนที่ 0: การตั้งค่าเซิร์ฟเวอร์
เราต้องมีเซิร์ฟเวอร์ที่ทำงานใน Confidential Space ก่อนที่ไคลเอ็นต์จะยืนยันอะไรได้ สคริปต์ Bash ที่ระบุจะจัดการการจัดสรร
./codelabs/setup.sh --project-id <PROJECT_ID>
สคริปต์ setup.sh จะดำเนินการต่อไปนี้
- เปิดใช้ API ที่จำเป็น (Compute, Confidential Computing, Logging, Artifact Registry, Cloud Build)
- สร้างและพุชอิมเมจ Docker (รวม vLLM กับมิดเดิลแวร์ TLS ที่รับรอง)
- จัดสรรบัญชีบริการที่มีสิทธิ์ที่จำเป็น
- สร้าง Confidential VM (อินสแตนซ์ A3 ที่เปิดใช้ GPU H100 และ TDX)
- กำหนดค่าเครือข่ายและการจัดสรรภาระงาน (ตัวจัดสรรภาระงานเครือข่ายการปล่อยผ่านสัญญาณ)
- บันทึกเอาต์พุต (แฮชรูปภาพและ 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 จะอ่านรายละเอียดการติดตั้งใช้งานและเรียกใช้คำขอ Python โดยใช้ ConfidentialSDKClient หากการรับรองไม่สำเร็จ ระบบจะแสดง AttestationError และจะไม่ส่งพรอมต์
6. ขั้นตอนที่ 2: ล้างข้อมูล
โปรดล้างข้อมูลทรัพยากรเมื่อเสร็จสิ้นเพื่อไม่ให้มีการเรียกเก็บเงิน
./codelabs/cleanup.sh --project-id <PROJECT_ID>
7. เบื้องหลังการทำงาน
จะเกิดอะไรขึ้นระหว่าง http.post
- TCP/TLS: สร้างการเชื่อมต่อมาตรฐาน
- การสกัดกั้นแฮนด์เชค: SDK จะหยุดชั่วคราวก่อนส่งเนื้อหา
- RPC AttestConnection: SDK จะส่ง Nonce ไปยังเซิร์ฟเวอร์
- การสร้างใบเสนอราคา: เซิร์ฟเวอร์ขอใบเสนอราคาฮาร์ดแวร์ TEE
- การตรวจสอบ: SDK จะตรวจสอบลายเซ็นของใบเสนอราคาและนโยบาย
- เชื่อมโยง: SDK จะยืนยันว่า "วัสดุการคีย์ที่ส่งออก" ของช่องตรงกับเซสชันที่เชื่อมโยงในคำพูด
- การส่งข้อมูล: ระบบจะส่งเนื้อหาเมื่อผ่านการตรวจสอบทั้งหมดเท่านั้น
8. การแก้ปัญหา
- การรับรองไม่สำเร็จ: ตรวจสอบว่า image_hash ในนโยบายตรงกับคอนเทนเนอร์
- ปฏิเสธการเชื่อมต่อ: ตรวจสอบว่าเข้าถึงเซิร์ฟเวอร์ได้และพอร์ต 8000 เปิดอยู่
- หมดเวลา: การสร้างใบเสนอราคา TEE อาจใช้เวลาสักพัก โปรดตรวจสอบว่าระยะหมดเวลาเพียงพอ
9. ขอแสดงความยินดี
คุณทำ Codelab ของ SDK การเข้ารหัสพรอมต์เสร็จเรียบร้อยแล้ว คุณได้เรียนรู้วิธีสร้างช่องที่เข้ารหัสและได้รับการยืนยันด้วยการเข้ารหัสระหว่างไคลเอ็นต์กับเซิร์ฟเวอร์การอนุมานที่ใช้ TEE
ขั้นตอนต่อไปคืออะไร
- ดูการกำหนดค่า AttestationPolicy ขั้นสูง
- ผสานรวม SDK กับแอปพลิเคชันเวอร์ชันที่ใช้งานจริงที่มีอยู่
- ดูข้อมูลเพิ่มเติมเกี่ยวกับ Confidential Space และรุ่นฮาร์ดแวร์ TEE