Secure Key Release mit vertraulichen Containern in Azure Container Instance (ACI)

Secure Key Release (SKR)-Fluss mit Azure Key Vault (AKV) mit vertraulichen Containerangeboten kann auf verschiedene Arten implementiert werden. Vertrauliche Container führen einen optimierten Gast aus, der AMD SEV-SNP-Gerät über einen Linux-Kernel verfügbar macht, der eine In-Gast-Firmware mit erforderlichen Hyper-V-bezogenen Patches verwendet, die wir als Direct Linux Boot (DLB) bezeichnen. Diese Plattform verwendet vTPM und HCL nicht basierend auf vertraulichen VMs mit AMD SEV-SNP-Unterstützung. In diesem Konzeptdokument wird davon ausgegangen, dass Sie die Container in der Azure-Containerunterstützung für die Auswahl einer vertraulichen Computer-SKU ausführen möchten.

  • Side-Car-Hilfscontainer, der von Azure bereitgestellt wird
  • Benutzerdefinierte Implementierung mit Ihrer Containeranwendung

Side-Car-Hilfscontainer, der von Azure bereitgestellt wird

Ein open sourced GitHub-Projekt "vertrauliche Side-Cars" enthält Informationen zum Erstellen dieses Containers und welche Parameter/Umgebungsvariablen erforderlich sind, damit Sie diesen Querwagencontainer vorbereiten und ausführen können. Die aktuelle Side Car-Implementierung stellt verschiedene HTTP-REST-APIs bereit, die Ihr primärer Anwendungscontainer verwenden kann, um den Schlüssel von AKV abzurufen. Die Integration über den Microsoft Azure Attestation(MAA) ist bereits integriert. Die Vorbereitungsschritte zum Ausführen des Querwagen-SKR-Containers finden Sie hier im Detail.

Ihre Standard Anwendungscontaineranwendung kann die Seitenwagen-WEB-API-Endpunkte aufrufen, wie im folgenden Beispiel definiert. Side-Cars werden innerhalb derselben Containergruppe ausgeführt und sind ein lokaler Endpunkt für Ihren Anwendungscontainer. Vollständige Details zur API finden Sie hier.

Die key/release POST-Methode erwartet einen JSON-Code des folgenden Formats:

{	
    "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"
}

Bei Erfolg trägt die key/release POST-Methodenantwort eine StatusOK Kopfzeile und eine Nutzlast des folgenden Formats:

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

Bei Einem Fehler trägt die key/release POST-Methodenantwort eine StatusForbidden Kopfzeile und eine Nutzlast des folgenden Formats:

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

Benutzerdefinierte Implementierung mit Ihrer Containeranwendung

Um eine benutzerdefinierte Containeranwendung auszuführen, die die Funktion von Azure Key Vault (AKV) erweitert – Secure Key Release und Microsoft Azure Attestation (MAA) erweitert, verwenden Sie den folgenden als allgemeinen Referenzfluss. Ein einfacher Ansatz besteht darin, den aktuellen Code für die Side-Car-Implementierung in diesem GitHub-Projekt für Seitenwagen zu überprüfen.

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

  1. Schritt 1: Einrichten von AKV mit exportierbarem Schlüssel und Anfügen der Releaserichtlinie. Mehr hier
  2. Schritt 2: Einrichten einer verwalteten Identität mit Microsoft Entra-ID und Anfügen dieser an AKV. Mehr hier
  3. Schritt 3: Bereitstellen Ihrer Containeranwendung mit erforderlichen Parametern innerhalb von ACI durch Einrichten einer richtlinie für die Erzwingung vertraulicher Computer. Mehr hier
  4. Schritt 4: In diesem Schritt ruft Ihre Anwendung einen RAW AMD SEV-SNP-Hardwarebericht ab, indem Sie einen IOCTL Linux Socket-Aufruf ausführen. Sie benötigen keine Gastnachweisbibliothek, um diese Aktion auszuführen. Mehr auf bestehender Side-Car-Implementierung
  5. Schritt 5: Abrufen der AMD SEV-SNP-Zertifikatkette für die Containergruppe. Diese Zertifikate werden vom Azure-Host-IMDS-Endpunkt bereitgestellt. Mehr hier
  6. Schritt 6: Senden Sie den SNP RAW-Hardwarebericht und Zertifikatdetails zur Überprüfung und Rückgabe von Ansprüchen an MAA. Mehr hier
  7. Schritt 7: Senden Sie das MAA-Token und das von ACI an AKV generierte verwaltete Identitätstoken für die Schlüsselfreigabe. Mehr hier

Bei Erfolg des Schlüsselabrufs von AKV können Sie den Schlüssel zum Entschlüsseln der Datensätze verwenden oder die Daten verschlüsseln, die aus der vertraulichen Containerumgebung gehen.

References

ACI mit vertraulichen Containerbereitstellungen

Side-Car-Implementierung mit verschlüsseltem Blob-Abruf und Entschlüsselung mit dem SKR AKV-Schlüssel

AKV SKR mit dem AMD SEV-SNP vertraulicher VM

Microsoft Azure-Nachweis (MAA)

Beispiele für SKR-Richtlinien