1. סקירה כללית
בשיעור Codelab הזה נסביר איך להשתמש ב-Prompt Encryption SDK כדי לתקשר בצורה מאובטחת עם מודל שמופעל בסביבת ביצוע מהימנה (TEE) ב-Google Cloud.
מה תלמדו
- יצירת ערוץ מוצפן ומאומת קריפטוגרפית בין לקוח לבין שרת הסקה מרוחק.
- אימות הזהות של השרת (גיבוב תוכנה, דגם חומרה, הגדרת הפעלה) באמצעות TLS מאומת.
- שמירה על ריבונות הנתונים באמצעות הצפנת ההנחיות עד שהן מגיעות למתחם המאובטח המאומת.
- שימוש ב-Prompt Encryption SDK כדי ליצור אינטראקציה עם vLLM שפועל ב-Confidential Space.
הדרישות
- פרויקט ב-Google Cloud עם חיוב מופעל.
- ה-SDK של Google Cloud (gcloud) מותקן ומאומת.
- סביבת Python 3.10 ואילך.
- טוקן של Hugging Face להורדה של מודלים של Gemma.
- היכרות עם חומות אש של VPC ומכסת כתובות IP חיצוניות.
- כדי ליצור את ה-SDK באופן מקומי, צריך לקמפל את התוסף _ekm.c C. השלב הזה ייכשל אם כותרות Python C לא מותקנות. כדי לפתור את הבעיה, צריך להתקין את 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 מקומית או מכונה וירטואלית רגילה.
- שרת: מופע vLLM שמפרסם מודל בקוד פתוח (לדוגמה, Gemma) בתוך Confidential Space (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 מושהה לפני שליחת הגוף.
- AttestConnection RPC: ערכת ה-SDK שולחת ערך חד-פעמי לשרת.
- יצירת הצעת מחיר: השרת שולח בקשה להצעת מחיר לחומרה של סביבת TEE.
- אימות: ה-SDK מאמת את חתימת הקידוד ואת המדיניות.
- קישור: ערכת ה-SDK מאמתת ש'חומר המפתח המיוצא' של הערוץ תואם לקישור של הסשן בהצעת המחיר.
- העברת נתונים: הגוף נשלח רק אם כל הבדיקות עוברות.
8. פתרון בעיות
- האימות נכשל: צריך לוודא שערך הגיבוב (hash) של התמונה במדיניות זהה לערך הגיבוב של הקונטיינר.
- החיבור נדחה: מוודאים שאפשר להגיע לשרת ושיציאה 8000 פתוחה.
- פסק זמן: יצירת הצעת מחיר של TEE יכולה לקחת זמן, לכן חשוב לוודא שהזמן הקצוב לתפוגה מספיק.
9. מזל טוב
סיימתם בהצלחה את ה-Codelab בנושא ערכת ה-SDK להצפנת הנחיות. למדתם איך ליצור ערוץ מוצפן ומאומת קריפטוגרפית בין הלקוח לבין שרת הסקת מסקנות שמבוסס על TEE.
מה השלב הבא?
- כדאי לעיין בהגדרות מתקדמות של AttestationPolicy.
- משלבים את ה-SDK עם אפליקציות קיימות בסביבת הייצור.
- מידע נוסף על Confidential Space ועל מודלים של חומרה מסוג TEE