Secure Key Release avec des conteneurs confidentiels sur Azure Container Instance (ACI)

Le flux SKR (Secure Key Release) avec Azure Key Vault (AKV) avec des offres de conteneur confidentiel peut être implémenté de plusieurs façons. Les conteneurs confidentiels exécutent un invité éclairé exposant l’appareil AMD SEV-SNP via un noyau Linux qui utilise un microprogramme invité avec les correctifs liés à Hyper-V nécessaires que nous appelons « démarrage Linux direct » (Direct Linux Boot, DLB). Cette plateforme n’utilise pas vTPM ni HCL basés sur les machines virtuelles confidentielles avec la prise en charge AMD SEV-SNP. Ce document de concept suppose que vous envisagez d’exécuter les conteneurs dans Azure Container Support en choisissant une référence SKU d’informatique confidentielle

  • Conteneur d’assistance side-car fourni par Azure
  • Implémentation personnalisée avec votre application conteneur

Conteneur d’assistance side-car fourni par Azure

Un projet GitHub open source « conteneurs side-car confidentiels » explique comment générer ce conteneur et les paramètres/variables d’environnement nécessaires pour préparer et exécuter ce conteneur side-car. L’implémentation de conteneur side-car actuelle fournit différentes API REST HTTP que votre conteneur d’application principal peut utiliser pour extraire la clé d’AKV. L’intégration via Microsoft Azure Attestation (MAA) existe déjà. Les étapes de préparation pour exécuter le conteneur SKR side-car sont disponibles en détail ici.

Votre application conteneur d’application principale peut appeler les points de terminaison d’API WEB side-car, comme défini dans l’exemple ci-dessous. Un conteneur side-car s’exécute dans le même groupe de conteneurs et est un point de terminaison local pour votre conteneur d’application. Vous trouverez les détails complets de l’API ici.

La méthode POST key/release attend un code JSON au format suivant :

{	
    "maa_endpoint": "<maa endpoint>", //https://video2.skills-academy.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"
}

En cas de réussite, la réponse de la méthode POST key/release porte un en-tête StatusOK et une charge utile au format suivant :

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

En cas d’erreur, la réponse de la méthode POST key/release porte un en-tête StatusForbidden et une charge utile au format suivant :

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

Implémentation personnalisée avec votre application conteneur

Pour effectuer une application conteneur personnalisée qui étend la capacité d’Azure Key Vault (AKV) – Secure Key Release et Microsoft Azure Attestation (MAA), utilisez le flux de référence de haut niveau ci-dessous. Une approche simple consiste à passer en revue le code d’implémentation side-car actuel dans ce projet GitHub side-car.

Image des opérations mentionnées ci-dessus, que vous devez effectuer.

  1. Étape 1 : configurez AKV avec une clé exportable et attachez la stratégie de mise en production. Plus d’informations ici.
  2. Étape 2 : configurez une identité managée avec Microsoft Entra ID et attachez-la à AKV. Plus d’informations ici.
  3. Étape 3 : déployez votre application conteneur avec les paramètres requis dans ACI en configurant une stratégie d’application de l’informatique confidentielle. Plus d’informations ici.
  4. Étape 4 : dans cette étape, votre application récupère un rapport de matériel RAW AMD SEV-SNP en effectuant un appel de socket Linux IOCTL. Vous n’avez pas besoin d’une bibliothèque d’attestations d’invité pour effectuer cette action. Plus d’informations sur l’implémentation side-car existante.
  5. Étape 5 : récupérez la chaîne de certificats AMD SEV-SNP pour le groupe de conteneurs. Ces certificats sont remis à partir du point de terminaison IMDS de l’hôte Azure. Plus d’informations ici.
  6. Étape 6 : envoyez le rapport matériel SNP RAW et les détails du certificat à MAA pour la vérification et le retour des revendications. Plus d’informations ici.
  7. Étape 7 : envoyez le jeton MAA et le jeton d’identité managée généré par ACI à AKV pour la mise en production de la clé. Plus d’informations ici.

En cas de réussite de la récupération de la clé à partir d’AKV, vous pouvez utiliser la clé pour déchiffrer les jeux de données ou chiffrer les données sortant de l’environnement de conteneurs confidentiels.

Références

ACI avec déploiements de conteneurs confidentiels

Implémentation side-car avec extraction et déchiffrement d’objets blob chiffrés avec la clé AKV SKR

AKV SKR avec des machines virtuelles confidentielles AMD SEV-SNP

Microsoft Azure Attestation (MAA)

Exemples de stratégies SKR