1. نظرة عامة
يرشدك هذا الدرس التطبيقي حول الترميز إلى كيفية استخدام حزمة تطوير البرامج (SDK) لتشفير الطلبات من أجل التواصل بأمان مع نموذج يتم عرضه في بيئة تنفيذ موثوقة (TEE) على Google Cloud.
أهداف الدورة التعليمية
- إنشاء قناة مشفّرة تم التحقّق منها باستخدام التشفير بين عميل وخادم استنتاج بعيد
- التحقّق من هوية الخادم (تجزئة البرامج ونموذج الأجهزة وإعدادات التشغيل) باستخدام بروتوكول أمان طبقة النقل (TLS) الذي تم إثباته
- ضمان سيادة البيانات من خلال إبقاء الطلبات مشفّرة إلى أن تصل إلى المنطقة الآمنة التي تم التحقّق منها
- استخدام حزمة تطوير البرامج (SDK) لتشفير الطلبات من أجل التفاعل مع vLLM الذي يتم تشغيله على Confidential Space
المتطلبات
- مشروع على Google Cloud تم تفعيل الفوترة فيه
- حزمة Google Cloud SDK (gcloud) مثبَّتة ومصادَق عليها
- بيئة Python 3.10 أو إصدار أحدث
- رمز مميّز من Hugging Face لتنزيل نماذج Gemma
- الإلمام بجدران حماية شبكة السحابة الخاصة الافتراضية (VPC) وحصة عناوين IP الخارجية
- يتطلب إنشاء حزمة تطوير البرامج (SDK) محليًا تجميع إضافة _ekm.c للغة C. تفشل هذه الخطوة إذا لم يتم تثبيت عناوين C في Python. ثبِّت python3-dev لحلّ هذه المشكلة (مثلاً، sudo apt-get install python3-dev لنظامَي Debian/Ubuntu).
2. إعداد موارد السحابة
قبل البدء، تأكَّد من تفعيل واجهات برمجة التطبيقات المطلوبة وضبط بيئتك.
1. تفعيل واجهات برمجة التطبيقات المطلوبة:
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 ما يلي:
- تفعيل واجهات برمجة التطبيقات المطلوبة (Compute وConfidential Computing وLogging وArtifact Registry وCloud Build)
- إنشاء صورة Docker ونشرها (تغليف vLLM باستخدام برمجية وسيطة لبروتوكول أمان طبقة النقل (TLS) الذي تم إثباته)
- توفير حساب خدمة بالأذونات اللازمة
- إنشاء جهاز افتراضي سري (مثيل A3 مع وحدة معالجة الرسومات 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): تُرسِل حزمة تطوير البرامج (SDK) قيمة عشوائية إلى الخادم.
- إنشاء الاقتباس: يطلب الخادم اقتباسًا من أجهزة بيئة التنفيذ الموثوقة (TEE).
- التحقّق من الصحة: تتحقّق حزمة تطوير البرامج (SDK) من توقيع الاقتباس والسياسة.
- الربط: تتحقّق حزمة تطوير البرامج (SDK) من أنّ "مادة وضع المفاتيح المُصدَّرة" للقناة تطابق الجلسة المرتبطة في الاقتباس.
- نقل البيانات: لا يتم إرسال النص الأساسي إلا إذا اجتازت جميع عمليات التحقّق.
8. تحديد المشاكل وحلّها
- تعذّر الإثبات: تأكَّد من أنّ image_hash في السياسة يطابق الحاوية.
- تم رفض الاتصال: تأكَّد من إمكانية الوصول إلى الخادم وفتح المنفذ 8000.
- انتهاء المهلة: قد يستغرق إنشاء اقتباس بيئة التنفيذ الموثوقة (TEE) بعض الوقت، لذا تأكَّد من أنّ المهلات كافية.
9. تهانينا
لقد أكملت بنجاح الدرس التطبيقي حول الترميز لحزمة تطوير البرامج (SDK) لتشفير الطلبات. لقد تعلّمت كيفية إنشاء قناة مشفّرة تم التحقّق منها باستخدام التشفير بين عميلك وخادم استنتاج مستند إلى بيئة تنفيذ موثوقة (TEE).
ما هي الخطوات التالية؟
- استكشاف الإعدادات المتقدّمة لـ AttestationPolicy
- دمج حزمة تطوير البرامج (SDK) مع تطبيقات الإنتاج الحالية
- مزيد من المعلومات عن Confidential Space ونماذج أجهزة بيئة التنفيذ الموثوقة (TEE)