Prompt Encryption SDK Codelab'i

1. Genel Bakış

Bu codelab, Google Cloud'da Trusted Execution Environment (TEE) içinde sunulan bir modelle güvenli bir şekilde iletişim kurmak için istem şifreleme SDK'sını kullanma konusunda size yol gösterir.

Neler öğreneceksiniz?

  • İstemci ile uzak çıkarım sunucusu arasında kriptografik olarak doğrulanmış ve şifrelenmiş bir kanal oluşturma.
  • Onaylı TLS kullanarak sunucunun kimliğini (yazılım karması, donanım modeli, başlatma yapılandırması) doğrulama.
  • İstemler doğrulanmış güvenli bölgeye ulaşana kadar şifrelenmiş olarak tutularak veri egemenliği sağlanır.
  • Gizli Alan'da çalışan vLLM ile etkileşim kurmak için istem şifreleme SDK'sını kullanma.

İhtiyacınız olanlar

  • Faturalandırmanın etkin olduğu bir Google Cloud projesi.
  • Google Cloud SDK (gcloud) yüklenmiş ve kimliği doğrulanmış olmalıdır.
  • Python 3.10 veya sonraki sürümlerin ortamı.
  • Gemma modellerini indirmek için Hugging Face jetonu.
  • VPC güvenlik duvarları ve harici IP adresi kotası hakkında bilgi sahibi olma
  • SDK'yı yerel olarak oluşturmak için _ekm.c C uzantısının derlenmesi gerekir. Python C üstbilgileri yüklenmemişse bu adım başarısız olur. Bu sorunu çözmek için python3-dev'i yükleyin (ör. Debian/Ubuntu için sudo apt-get install python3-dev).

2. Bulut Kaynaklarını Ayarlama

Başlamadan önce gerekli API'leri etkinleştirdiğinizden ve ortamınızı yapılandırdığınızdan emin olun.

1. Gerekli API'leri etkinleştirin:

gcloud services enable compute.googleapis.com \
    confidentialcomputing.googleapis.com \
    logging.googleapis.com \
    artifactregistry.googleapis.com \
    cloudbuild.googleapis.com

2. Docker'ı yapılandırın:

gcloud auth configure-docker gcr.io

3. Hugging Face jetonunu ayarlama:

export HF_TOKEN="your_token"

4. Depoyu klonlayın:

git clone https://github.com/google/prompt-encryption-sdk && cd prompt-encryption-sdk

3. Senaryo

Kullanacağımız araçlar:

  • İstemci: Yerel Python ortamınız veya standart bir sanal makine.
  • Sunucu: Bir Confidential Space (TDX/SEV-SNP) içinde açık kaynaklı bir modele (ör. Gemma) hizmet veren bir vLLM örneği.
  • SDK: prompt_encryption_sdk Python kitaplığı.

4. 0. adım: Sunucu kurulumu

İstemci herhangi bir şeyi doğrulayabilmeden önce Confidential Space'te çalışan bir sunucuya ihtiyacımız vardır. Temel hazırlık, sağlanan bir bash komut dosyası tarafından yapılır.

./codelabs/setup.sh --project-id <PROJECT_ID>

setup.sh komut dosyası aşağıdakileri yapar:

  1. Gerekli API'leri (Compute, Gizli Bilişim, Günlük Kaydı, Artifact Registry, Cloud Build) etkinleştirir.
  2. Docker görüntüsünü oluşturur ve gönderir (vLLM'yi onaylı TLS ara yazılımıyla sarmalayarak).
  3. Gerekli izinlere sahip bir hizmet hesabı sağlar.
  4. Gizli Sanal Makine'yi (H100 GPU ve TDX etkinleştirilmiş A3 örneği) oluşturur.
  5. Ağ ve yük dengeleme (geçişli ağ yük dengeleyici) yapılandırılır.
  6. Çıkışları (resim karması ve yük dengeleyici IP'si) yerel dosyalara kaydeder.

5. 1. adım: Onaylı istemciyi çalıştırın

Sunucu güvenli bir şekilde çalıştıktan sonra onaylı bir bağlantı oluşturun.

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 komut dosyası, dağıtım ayrıntılarını okur ve ConfidentialSDKClient'ı kullanarak bir Python isteği yürütür. Onaylama başarısız olursa AttestationError oluşturulur ve istem hiçbir zaman gönderilmez.

6. 2. adım: Temizleme

Ücret ödememek için işiniz bittiğinde kaynakları temizleyin.

./codelabs/cleanup.sh --project-id <PROJECT_ID>

7. Perde Arkası

http.post sırasında ne olur?

  1. TCP/TLS: Standart bağlantı kuruldu.
  2. El sıkışma yakalama: SDK, gövdeyi göndermeden önce duraklıyor.
  3. AttestConnection RPC: SDK, sunucuya bir nonce gönderir.
  4. Teklif Oluşturma: Sunucu, TEE donanım teklifi ister.
  5. Doğrulama: SDK, teklif imzasını ve politikayı doğrular.
  6. Bağlama: SDK, kanalın "Dışa Aktarılan Anahtarlama Materyali"nin teklifteki oturumla eşleştiğini doğrular.
  7. Veri İletimi: Gövde yalnızca tüm kontroller başarılı olursa gönderilir.

8. Sorun giderme

  • Attestation Failed: Politikadaki image_hash değerinin kapsayıcıyla eşleştiğini doğrulayın.
  • Bağlantı reddedildi: Sunucuya ulaşılabildiğinden ve 8000 numaralı bağlantı noktasının açık olduğundan emin olun.
  • Zaman aşımı: TEE teklifi oluşturma işlemi zaman alabilir. Zaman aşımlarının yeterli olduğundan emin olun.

9. Tebrikler

Prompt Encryption SDK codelab'ini başarıyla tamamladınız. İstemciniz ile TEE tabanlı bir çıkarım sunucusu arasında kriptografik olarak doğrulanmış ve şifrelenmiş bir kanal oluşturmayı öğrendiniz.

Sırada ne var?

  • Gelişmiş AttestationPolicy yapılandırmalarını keşfedin.
  • SDK'yı mevcut üretim uygulamalarınıza entegre edin.
  • Confidential Space ve TEE donanım modelleri hakkında daha fazla bilgi edinin.

Daha fazla bilgi