Sichere Schlüsselfreigabe mit vertraulichen Containern in Azure Container Instance (ACI)
Der Flow mit sicherer Schlüsselfreigabe (Secure Key Release, SKR) und Azure Key Vault (AKV) mit vertraulichen Containerangeboten kann auf verschiedene Arten implementiert werden. Vertrauliche Container führen einen Gast mit einem AMD SEV-SNP-Gerät über einen Linux-Kernel aus, der eine gastinterne Firmware mit den erforderlichen Hyper-V-Patches nutzt, die als Direct Linux Boot (DLB) bezeichnet wird. Diese Plattform verwendet weder vTPM noch eine HCL auf vertraulichen VMs mit AMD SEV-SNP-Unterstützung. In diesem Konzeptdokument wird davon ausgegangen, dass Sie die Container mit Azure Container Instances-Unterstützung und einer Confidential Computing-SKU ausführen möchten.
- Von Azure bereitgestellter Sidecar-Hilfscontainer
- Benutzerdefinierte Implementierung mit eigener Containeranwendung
Von Azure bereitgestellter Sidecar-Hilfscontainer
Im Open-Source-Projekt „vertrauliche Sidecars“ auf GitHub finden Sie Informationen zum Erstellen dieses Containers und zu den erforderlichen Parametern/Umgebungsvariablen für die Vorbereitung und Ausführung dieses Sidecar-Containers. Die aktuelle Sidecar-Implementierung stellt verschiedene HTTP-REST-APIs bereit, mit denen Ihr primärer Anwendungscontainer den Schlüssel aus AKV abrufen kann. Die Integration mit Microsoft Azure Attestation (MAA) ist bereits eingerichtet. Die ausführlichen Vorbereitungsschritte zum Ausführen des Sidecar-SKR-Containers finden Sie hier.
Ihre Hauptcontaineranwendung kann die Sidecar-Web-API-Endpunkte wie im folgenden Beispiel definiert aufrufen. Sidecars werden innerhalb derselben Containergruppe ausgeführt. Sie stellen einen lokalen Endpunkt für Ihren Anwendungscontainer dar. Sämtliche Details zur API finden Sie hier.
Die key/release
-POST-Methode erwartet JSON-Code im folgenden Format:
{
"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 einer erfolgreichen Ausführung enthält die Antwort der key/release
-POST-Methode einen StatusOK
-Header und Nutzdaten im folgenden Format:
{
"key": "<key in JSON Web Key format>"
}
Bei einem Fehler enthält die Antwort der key/release
-POST-Methode einen StatusForbidden
-Header und Nutzdaten im folgenden Format:
{
"error": "<error message>"
}
Benutzerdefinierte Implementierung mit eigener Containeranwendung
Nutzen Sie den folgenden allgemeinen Referenzflow, um eine benutzerdefinierte Containeranwendung auszuführen, die die Funktionalität von Azure Key Vault (AKV), sicherer Schlüsselfreigabe (Secure Key Release, SKR) und Microsoft Azure Attestation (MAA) erweitert. Für einen einfachen Einstieg können Sie sich den aktuellen Code für die Sidecar-Implementierung in diesem GitHub-Sidecar-Projekt ansehen.
- Schritt 1: Richten Sie AKV mit exportierbarem Schlüssel ein, und fügen Sie die Releaserichtlinie an. Weitere Informationen finden Sie hier.
- Schritt 2: Richten Sie eine verwaltete Identität mit Microsoft Entra ID ein, und fügen Sie diese an AKV an. Weitere Informationen finden Sie hier.
- Schritt 3: Stellen Sie Ihre Containeranwendung mit den erforderlichen Parametern in ACI durch Einrichten einer Richtlinie für die Erzwingung von Confidential Computing bereit. Weitere Informationen finden Sie hier.
- Schritt 4: In diesem Schritt sollte Ihre Anwendung über einen IOCTL-Linux-Socketaufruf einen unformatierten AMD SEV-SNP-Hardwarebericht abrufen. Sie benötigen für diese Aktion keine Gastnachweisbibliothek. Weitere Informationen zur bestehenden Sidecar-Implementierung
- Schritt 5: Rufen Sie die AMD SEV-SNP-Zertifikatkette für die Containergruppe ab. Diese Zertifikate werden vom IMDS-Endpunkt des Azure-Hosts bereitgestellt. Weitere Informationen finden Sie hier.
- Schritt 6: Senden Sie den unformatierten SNP-Hardwarebericht und die Zertifikatdetails zur Überprüfung und zur Rückgabe von Ansprüchen an MAA. Weitere Informationen finden Sie hier.
- Schritt 7: Senden Sie das MAA-Token und das von ACI generierte Token für die verwaltete Identität für die Schlüsselfreigabe an AKV. Weitere Informationen finden Sie hier.
Bei einem erfolgen Schlüsselabruf von AKV können Sie den Schlüssel verwenden, um die Datensätze zu entschlüsseln oder die aus der vertraulichen Containerumgebung ausgehenden Daten zu verschlüsseln.
References
ACI mit Bereitstellung vertraulicher Container
Sidecar-Implementierung mit verschlüsseltem Blobabruf und Entschlüsselung mit dem SKR-AKV-Schlüssel
AKV SKR mit AMD SEV-SNP-basierten vertraulichen VMs