Tutoriel : préparer un déploiement pour un conteneur confidentiel sur Azure Container Instances
Dans Azure Container Instances, vous pouvez utiliser des conteneurs confidentiels sur la plateforme serverless pour exécuter des applications de conteneur dans un environnement d’exécution de confiance (TEE) basé sur le matériel et attesté. Cette capacité peut aider à protéger les données en cours d'utilisation et fournit un cryptage en mémoire via la pagination imbriquée sécurisée (Secure Nested Paging).
Dans ce tutoriel, vous allez apprendre à :
- Créez un modèle Azure Resource Manager (modèle ARM) pour un groupe de conteneurs confidentiel.
- Générer une stratégie d’application de l’informatique confidentielle (CCE).
- Déployer le groupe de conteneurs confidentiels sur Azure.
Prérequis
Pour suivre ce didacticiel, vous devez satisfaire aux exigences suivantes :
Azure CLI : vous devez disposer d’Azure CLI version 2.44.1 ou ultérieure sur votre ordinateur local. Pour déterminer votre version, exécutez
az --version
. Si vous devez effectuer une installation ou une mise à niveau, consultez Installer Azure CLI.Extension confcom Azure CLI : vous devez avoir installé l’extension confcom Azure CLI version 0.30+ pour générer des stratégies d’application de l’informatique confidentielle.
az extension add -n confcom
Docker : vous avez besoin de Docker installé localement. Docker fournit des packages qui configurent l’environnement Docker sur macOS, Windows et Linux.
ce tutoriel présuppose une compréhension de base des concepts Docker essentiels, tels que les conteneurs, les images conteneur et les commandes
docker
de base. Pour apprendre les principes de base de Docker et des conteneurs, consultez la vue d’ensemble de Docker.
Important
Étant donné qu’Azure Cloud Shell n’inclut pas le démon Docker, vous devez installer Azure CLI et le moteur Docker sur votre ordinateur local pour suivre ce didacticiel. Vous ne pouvez pas utiliser Azure Cloud Shell pour ce didacticiel.
Créer un modèle ARM pour un groupe de conteneurs Container Instances
Dans ce tutoriel, vous allez déployer une application Hello World qui génère un rapport d’attestation matérielle. Commencez par créer un modèle ARM avec une ressource de groupe de conteneurs pour définir les propriétés de cette application. Vous utilisez ensuite ce modèle ARM avec les outils confcom Azure CLI pour générer une stratégie de CCE pour l’attestation.
Ce tutoriel utilise ce modèle ARM comme exemple. Pour afficher le code source de cette application, consultez Azure Confidential Container Instances Confidential Hello World.
Le modèle d’exemple ajoute deux propriétés à la définition de ressource Container Instances pour rendre le groupe de conteneurs confidentiel :
sku
: vous permet de choisir entre des déploiements de groupes de conteneurs confidentiels et standard. Si vous n’ajoutez pas cette propriété à la ressource, le groupe de conteneurs est un déploiement standard.confidentialComputeProperties
: vous permet de transmettre une stratégie CCE personnalisée pour l’attestation de votre groupe de conteneurs. Si vous n'ajoutez pas cet objet à la ressource, les composants logiciels exécutés dans le groupe de conteneurs ne seront pas validés.
Remarque
Le paramètre ccePolicy
sous confidentialComputeProperties
est vide. Vous le remplirez ultérieurement lorsque vous générez la stratégie plus loin dans le tutoriel.
Utilisez votre éditeur de texte préféré pour enregistrer ce modèle ARM sur votre ordinateur local sous le nom template.json.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"name": {
"type": "string",
"defaultValue": "helloworld",
"metadata": {
"description": "Name for the container group"
}
},
"location": {
"type": "string",
"defaultValue": "North Europe",
"metadata": {
"description": "Location for all resources."
}
},
"image": {
"type": "string",
"defaultValue": "mcr.microsoft.com/acc/samples/aci/helloworld:2.8",
"metadata": {
"description": "Container image to deploy. Should be of the form repoName/imagename:tag for images stored in public Docker Hub, or a fully qualified URI for other registries. Images from private registries require additional registry credentials."
}
},
"port": {
"type": "int",
"defaultValue": 80,
"metadata": {
"description": "Port to open on the container and the public IP address."
}
},
"cpuCores": {
"type": "int",
"defaultValue": 1,
"metadata": {
"description": "The number of CPU cores to allocate to the container."
}
},
"memoryInGb": {
"type": "int",
"defaultValue": 1,
"metadata": {
"description": "The amount of memory to allocate to the container in gigabytes."
}
},
"restartPolicy": {
"type": "string",
"defaultValue": "Never",
"allowedValues": [
"Always",
"Never",
"OnFailure"
],
"metadata": {
"description": "The behavior of Azure runtime if container has stopped."
}
}
},
"resources": [
{
"type": "Microsoft.ContainerInstance/containerGroups",
"apiVersion": "2023-05-01",
"name": "[parameters('name')]",
"location": "[parameters('location')]",
"properties": {
"confidentialComputeProperties": {
"ccePolicy": ""
},
"containers": [
{
"name": "[parameters('name')]",
"properties": {
"image": "[parameters('image')]",
"ports": [
{
"port": "[parameters('port')]",
"protocol": "TCP"
}
],
"resources": {
"requests": {
"cpu": "[parameters('cpuCores')]",
"memoryInGB": "[parameters('memoryInGb')]"
}
}
}
}
],
"sku": "Confidential",
"osType": "Linux",
"restartPolicy": "[parameters('restartPolicy')]",
"ipAddress": {
"type": "Public",
"ports": [
{
"port": "[parameters('port')]",
"protocol": "TCP"
}
]
}
}
}
],
"outputs": {
"containerIPv4Address": {
"type": "string",
"value": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups', parameters('name'))).ipAddress.ip]"
}
}
}
Créer une stratégie CCE personnalisée
Avec le modèle ARM que vous avez conçu et l’extension confcom Azure CLI, vous pouvez générer une stratégie CCE personnalisée. La stratégie CCE est utilisée pour l’attestation. L’outil prend le modèle ARM comme entrée pour générer la stratégie. La stratégie applique les images conteneurs, les variables d’environnement, les montages et les commandes spécifiques, qui peuvent ensuite être validés au démarrage du groupe de conteneurs. Si vous souhaitez en savoir plus sur l’extension confcom Azure CLI, veuillez la documentation sur GitHub.
Pour générer la stratégie CCE, exécutez la commande suivante en utilisant le modèle ARM comme entrée :
az confcom acipolicygen -a .\template.json
Une fois cette commande terminée, une chaîne Base64 générée en tant que sortie apparaît automatiquement dans la propriété
ccePolicy
du modèle ARM.
Déployer le modèle
Dans les étapes suivantes, vous utilisez le Portail Microsoft Azure pour déployer un modèle. Vous pouvez également utiliser Azure PowerShell, Azure CLI ou l’API REST. Pour en savoir plus sur les autres méthodes de déploiement, consultez Déployer des modèles.
Sélectionnez le bouton Déployer sur Azure pour vous connecter à Azure, puis commencer un déploiement d’instances de conteneur.
Sélectionnez Générer votre propre modèle dans l’éditeur.
Le modèle JSON qui apparaît est en grande partie vide.
Sélectionnez Charger le fichier et charger le fichier template.json que vous avez modifié en ajoutant la stratégie CCE dans les étapes précédentes.
Cliquez sur Enregistrer.
Sélectionnez ou entrez les valeurs suivantes :
- Abonnement: Sélectionnez un abonnement Azure.
- Groupe de ressources : Sélectionnez Créer, entrez un nom unique pour le groupe de ressources, puis sélectionnez OK.
- Nom : acceptez le nom généré pour l’instance, ou entrez un nom.
- Emplacement : sélectionnez un emplacement pour le groupe de ressources. Choisissez une région où les conteneurs confidentiels sont pris en charge. Exemple : Europe Nord.
- Image : acceptez le nom d’image par défaut. Cet échantillon d’image Linux affiche une attestation matérielle.
Acceptez les valeurs par défaut pour les propriétés restantes, puis sélectionnez Vérifier + créer.
Passez en revue les conditions générales. Si vous acceptez, sélectionnez J’accepte les termes et conditions mentionnés ci-dessus.
Attendez que la notification Déploiement réussi s’affiche. Il confirme que vous avez créé l'instance avec succès.
Vérifier les ressources déployées
Dans les étapes suivantes, vous utilisez le Portail Microsoft Azure pour examiner les propriétés de l'instance de conteneur. Vous pouvez également utiliser un outil tel qu’Azure CLI.
Dans le portail, recherchez Instances de conteneur, puis sélectionnez l’instance de conteneur que vous avez créée.
Dans la page Vue d’ensemble, notez l’état de l’instance et son adresse IP.
Lorsque l’état de l’instance est En cours d’exécution, accédez à l’adresse IP dans votre navigateur.
La présence du rapport d’attestation sous le logo Azure Container Instances confirme que le conteneur s’exécute sur du matériel qui prend en charge un TEE.
Si vous effectuez un déploiement sur du matériel qui ne prend pas en charge de TEE (par exemple en choisissant une région où la référence Confidential Container Instances n’est pas disponible), aucun rapport d’attestation n’apparaît.
Contenu connexe
Maintenant que vous avez déployé un groupe de conteneurs confidentiels sur des instances de conteneur, vous pouvez en savoir plus sur la manière dont les politiques sont appliquées :