Bezpieczne wydanie klucza z kontenerami poufnymi w usłudze Azure Container Instance (ACI)

Przepływ bezpiecznego wydania klucza (SKR) za pomocą usługi Azure Key Vault (AKV) z poufnymi ofertami kontenerów może implementować na kilka sposobów. Kontenery poufne uruchamiają gościa obsługujące wykładanie urządzenia AMD SEV-SNP za pośrednictwem jądra systemu Linux, które używa w oprogramowaniu układowym gościa z niezbędnymi poprawkami związanymi z funkcją Hyper-V, które nazywamy bezpośrednim rozruchem systemu Linux (DLB). Ta platforma nie korzysta z maszyn wirtualnych vTPM i HCL opartych na poufnych maszynach wirtualnych z obsługą protokołu AMD SEV-SNP. W tym dokumencie koncepcyjnym założono, że planujesz uruchamiać kontenery w usłudze Azure Container Support, wybierając jednostkę SKU poufnego przetwarzania

  • Kontener pomocnika samochodu bocznego dostarczony przez platformę Azure
  • Implementacja niestandardowa z aplikacją kontenera

Kontener pomocnika side-car dostarczony przez platformę Azure

Projekt GitHub typu open source "poufne samochody boczne" zawiera szczegółowe informacje o tym, jak utworzyć ten kontener i jakie parametry/zmienne środowiskowe są wymagane do przygotowania i uruchomienia tego kontenera samochodu bocznego. Bieżąca implementacja samochodu bocznego udostępnia różne interfejsy API REST PROTOKOŁU HTTP, których może użyć podstawowy kontener aplikacji do pobrania klucza z usługi AKV. Integracja za pośrednictwem usługi Microsoft Azure Attestation(MAA) jest już wbudowana. Kroki przygotowania do uruchomienia kontenera SKR samochodu bocznego można znaleźć tutaj.

Główna aplikacja kontenera aplikacji może wywoływać punkty końcowe internetowego interfejsu API samochodu bocznego zgodnie z definicją w poniższym przykładzie. Samochody boczne działają w tej samej grupie kontenerów i jest lokalnym punktem końcowym kontenera aplikacji. Szczegółowe informacje o interfejsie API można znaleźć tutaj

Metoda key/release POST oczekuje formatu JSON następującego formatu:

{	
    "maa_endpoint": "<maa endpoint>", //https://learn.microsoft.com/en-us/azure/attestation/quickstart-portal#attestation-provider
    "akv_endpoint": "<akv endpoint>", //AKV URI
    "kid": "<key identifier>" //key name,
    "access_token": "optional aad token if the command will run in a resource without proper managed identity assigned"
}

Po powodzeniu key/release odpowiedź metody POST zawiera StatusOK nagłówek i ładunek w następującym formacie:

{
    "key": "<key in JSON Web Key format>"
}

Po błędzie key/release odpowiedź metody POST zawiera StatusForbidden nagłówek i ładunek w następującym formacie:

{
    "error": "<error message>"
}

Implementacja niestandardowa z aplikacją kontenera

Aby wykonać niestandardową aplikację kontenera, która rozszerza możliwości usługi Azure Key Vault (AKV) — bezpieczne wydanie klucza i zaświadczanie platformy Microsoft Azure (MAA), użyj poniższego jako przepływu odwołania wysokiego poziomu. Łatwe podejście polega na przejrzeniu bieżącego kodu implementacji samochodu bocznego w tym projekcie GitHub samochodu bocznego.

Image of the aforementioned operations, which you should be performing.

  1. Krok 1. Konfigurowanie usługi AKV przy użyciu klucza możliwego do wyeksportowania i dołączanie zasad wydania. Więcej tutaj
  2. Krok 2. Konfigurowanie tożsamości zarządzanej przy użyciu identyfikatora Entra firmy Microsoft i dołączanie go do usługi AKV. Więcej tutaj
  3. Krok 3. Wdróż aplikację kontenera z wymaganymi parametrami w usłudze ACI, konfigurując zasady wymuszania poufnego przetwarzania. Więcej tutaj
  4. Krok 4. W tym kroku aplikacja pobierze raport sprzętowy RAW AMD SEV-SNP, wykonując wywołanie IOCTL Linux Socket. Do wykonania tej akcji nie jest potrzebna biblioteka zaświadczania gościa. Więcej informacji na temat istniejącej implementacji samochodu bocznego
  5. Krok 5. Pobieranie łańcucha certyfikatów AMD SEV-SNP dla grupy kontenerów. Te certyfikaty są dostarczane z punktu końcowego USŁUGI IMDS hosta platformy Azure. Więcej tutaj
  6. Krok 6. Wysyłanie raportu sprzętowego SNP RAW i szczegółów certyfikatu do usługi MAA w celu weryfikacji i zwrotu oświadczeń. Więcej tutaj
  7. Krok 7. Wysyłanie tokenu MAA i tokenu tożsamości zarządzanej wygenerowanego przez usługę ACI do usługi AKV na potrzeby wydania klucza. Więcej tutaj

Po pomyślnym pobraniu klucza z usługi AKV można użyć klucza do odszyfrowywania zestawów danych lub zaszyfrowania danych wychodzących ze środowiska poufnego kontenera.

Odwołania

Usługa ACI z wdrożeniami kontenerów poufnych

Implementacja samochodu bocznego z zaszyfrowanym pobieraniem i odszyfrowywaniem obiektów blob za pomocą klucza SKR AKV

AKV SKR z poufnej maszyny wirtualnej AMD SEV-SNP

Zaświadczenie platformy Microsoft Azure (MAA)

Przykłady zasad SKR