1. Przegląd
To ćwiczenie prowadzi Cię przez proces używania pakietu Prompt Encryption SDK do bezpiecznej komunikacji z modelem udostępnianym w zaufanym środowisku wykonawczym (TEE) w Google Cloud.
Czego się nauczysz
- Ustanawianie zweryfikowanego kryptograficznie i zaszyfrowanego kanału między klientem a zdalnym serwerem wnioskowania.
- Weryfikowanie tożsamości serwera (skrót oprogramowania, model sprzętu, konfiguracja uruchamiania) za pomocą potwierdzonego protokołu TLS.
- Zapewnianie suwerenności danych przez utrzymywanie zaszyfrowanych promptów do momentu dotarcia do zweryfikowanego enklawy.
- Używanie pakietu Prompt Encryption SDK do interakcji z vLLM działającym w Poufnej przestrzeni.
Czego potrzebujesz
- Projekt Google Cloud z włączonymi płatnościami.
- Zainstalowany i uwierzytelniony pakiet Google Cloud SDK (gcloud).
- Środowisko Python 3.10+.
- Token Hugging Face do pobierania modeli Gemma.
- Znajomość zapór sieciowych VPC i limitu zewnętrznych adresów IP.
- Lokalne tworzenie pakietu SDK wymaga skompilowania rozszerzenia C _ekm.c. Ten krok nie powiedzie się, jeśli nie są zainstalowane nagłówki C Pythona. Aby rozwiązać ten problem, zainstaluj pakiet python3-dev (np. sudo apt-get install python3-dev w przypadku systemów Debian/Ubuntu).
2. Konfigurowanie zasobów w chmurze
Zanim zaczniesz, upewnij się, że masz włączone wymagane interfejsy API i skonfigurowane środowisko.
1. Włącz wymagane interfejsy API:
gcloud services enable compute.googleapis.com \
confidentialcomputing.googleapis.com \
logging.googleapis.com \
artifactregistry.googleapis.com \
cloudbuild.googleapis.com
2. Skonfiguruj Dockera:
gcloud auth configure-docker gcr.io
3. Ustaw token Hugging Face:
export HF_TOKEN="your_token"
4. Sklonuj repozytorium:
git clone https://github.com/google/prompt-encryption-sdk && cd prompt-encryption-sdk
3. Scenariusz
Będziemy używać:
- Klient: lokalne środowisko Python lub standardowa maszyna wirtualna.
- Serwer: instancja vLLM udostępniająca model open source (np. Gemma) w Poufnej przestrzeni (TDX/SEV-SNP).
- Pakiet SDK: biblioteka Python prompt_encryption_sdk.
4. Krok 0. Konfiguracja serwera
Zanim klient będzie mógł cokolwiek zweryfikować, potrzebujemy serwera działającego w Poufnej przestrzeni. Udostępniony skrypt bash obsługuje udostępnianie.
./codelabs/setup.sh --project-id <PROJECT_ID>
Skrypt setup.sh wykonuje te czynności:
- Włącza wymagane interfejsy API (Compute, Confidential Computing, Logging, Artifact Registry, Cloud Build).
- Tworzy i przesyła obraz Dockera (zawierający vLLM z oprogramowaniem pośredniczącym Attested TLS).
- Udostępnia konto usługi z niezbędnymi uprawnieniami.
- Tworzy poufną maszynę wirtualną (instancja A3 z GPU H100 i włączoną funkcją TDX).
- Konfiguruje sieć i równoważenie obciążenia (przekazujący sieciowy system równoważenia obciążenia).
- Zapisuje dane wyjściowe (skrót obrazu i adres IP systemu równoważenia obciążenia) w plikach lokalnych.
5. Krok 1. Uruchomienie potwierdzonego klienta
Gdy serwer działa bezpiecznie, nawiąż potwierdzone połączenie.
python3 -m venv venv
source venv/bin/activate
pip install -r examples/requirements.txt
pip install -e .
./codelabs/run_client.sh <PROJECT_ID>
Skrypt run_client.sh odczytuje szczegóły wdrożenia i wykonuje żądanie Python przy użyciu ConfidentialSDKClient. Jeśli potwierdzenie się nie powiedzie, zostanie zgłoszony błąd AttestationError, a prompt nie zostanie wysłany.
6. Krok 2. Czyszczenie
Aby uniknąć opłat, po zakończeniu usuń zasoby.
./codelabs/cleanup.sh --project-id <PROJECT_ID>
7. Dla zaawansowanych
Co się dzieje podczas http.post?
- TCP/TLS: nawiązywane jest standardowe połączenie.
- Przechwytywanie uzgadniania: pakiet SDK wstrzymuje się przed wysłaniem treści.
- RPC AttestConnection: pakiet SDK wysyła do serwera nonce.
- Generowanie cytatu: serwer wysyła żądanie cytatu sprzętu TEE.
- Weryfikacja: pakiet SDK weryfikuje podpis cytatu i zasadę.
- Powiązanie: pakiet SDK sprawdza, czy „eksportowany materiał klucza” kanału pasuje do sesji powiązanej w cytacie.
- Przesyłanie danych: treść jest wysyłana tylko wtedy, gdy wszystkie kontrole się powiodą.
8. Rozwiązywanie problemów
- Nie udało się potwierdzić: sprawdź, czy image_hash w zasadzie pasuje do kontenera.
- Odmowa połączenia: upewnij się, że serwer jest osiągalny, a port 8000 jest otwarty.
- Przekroczenie limitu czasu: generowanie cytatu TEE może trochę potrwać. Upewnij się, że limity czasu są wystarczające.
9. Gratulacje
Udało Ci się ukończyć ćwiczenie z pakietu Prompt Encryption SDK. Dowiedziałeś się, jak ustanowić zweryfikowany kryptograficznie i zaszyfrowany kanał między klientem a serwerem wnioskowania opartym na TEE.
Co dalej?
- Poznaj zaawansowane konfiguracje AttestationPolicy.
- Zintegruj pakiet SDK z dotychczasowymi aplikacjami produkcyjnymi.
- Dowiedz się więcej o Poufnej przestrzeni i modelach sprzętu TEE.