Tutoriel : Intégrer Azure Key Vault à votre déploiement de modèle ARM
Article
Découvrez comment récupérer les secrets d’un coffre de clés Azure et les passer en tant que paramètres quand vous déployez un modèle Azure Resource Manager (modèle ARM). La valeur du paramètre n’est jamais exposée, car vous référencez uniquement son ID de coffre de clés. Vous pouvez référencer le secret du coffre de clés à l’aide d’un ID statique ou d’un ID dynamique. Ce tutoriel utilise un ID statique. Avec l’approche d’ID statique, vous référencez le coffre de clés dans le fichier de paramètres de modèle, et non dans le fichier de modèle. Pour plus d’informations sur les deux approches, consultez Utiliser Azure Key Vault pour transmettre une valeur de paramètre sécurisée pendant le déploiement.
Dans le tutoriel Définir l’ordre de déploiement des ressources, vous créez une machine virtuelle. Vous devez fournir le nom d’utilisateur et le mot de passe de l’administrateur de la machine virtuelle. Au lieu de fournir le mot de passe, vous pouvez le stocker au préalable dans le coffre de clés Azure Key Vault. Il vous suffit ensuite de personnaliser le modèle pour récupérer le mot de passe à partir du coffre de clés au cours du déploiement.
Ce tutoriel décrit les tâches suivantes :
Préparer un coffre de clés
Ouvrir un modèle de démarrage rapide
Modifier le fichier de paramètres
Déployer le modèle
Valider le déploiement
Nettoyer les ressources
Si vous ne disposez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
Pour une sécurité optimale, utilisez un mot de passe généré pour le compte administrateur de la machine virtuelle. Vous pouvez utiliser Azure Cloud Shell pour exécuter la commande suivante dans PowerShell ou Bash :
shell
openssl rand -base64 32
Pour plus d’informations, exécutez man openssl rand pour ouvrir la page manuelle.
Dans cette section, vous créez un coffre de clés auquel vous ajoutez un secret pour pouvoir le récupérer quand vous déployez votre modèle. Il existe de nombreuses façons de créer un coffre de clés. Dans ce tutoriel, vous utilisez Azure PowerShell pour déployer un modèle ARM. Ce modèle effectue deux opérations :
Crée un coffre de clés avec activation de la propriété enabledForTemplateDeployment. Cette propriété doit avoir la valeur true pour que le processus de déploiement de modèle puisse accéder aux secrets définis dans le coffre de clés.
Ajoute un secret au coffre de clés. Le secret stocke le mot de passe d’administrateur de la machine virtuelle.
Notes
Si, en tant qu’utilisateur déployant le modèle de machine virtuelle, vous n’êtes ni le propriétaire ni un contributeur du coffre de clés, son propriétaire ou un contributeur doit vous accorder l’accès à l’autorisation Microsoft.KeyVault/vaults/deploy/action pour le coffre de clés. Pour plus d’informations, consultez l’article Utiliser Azure Key Vault pour transmettre une valeur de paramètre sécurisée pendant le déploiement.
Pour exécuter le script Azure PowerShell suivant, sélectionnez Essayer afin d’ouvrir Cloud Shell. Pour coller le script, cliquez avec le bouton droit dans volet de l’interpréteur de commandes, puis sélectionnez Coller.
Azure PowerShell
$projectName = Read-Host -Prompt"Enter a project name that is used for generating resource names"$location = Read-Host -Prompt"Enter the location (i.e. centralus)"$upn = Read-Host -Prompt"Enter your user principal name (email address) used to sign in to Azure"$secretValue = Read-Host -Prompt"Enter the virtual machine administrator password" -AsSecureString$resourceGroupName = "${projectName}rg"$keyVaultName = $projectName$adUserId = (Get-AzADUser -UserPrincipalName$upn).Id
$templateUri = "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/tutorials-use-key-vault/CreateKeyVault.json"New-AzResourceGroup -Name$resourceGroupName -Location$locationNew-AzResourceGroupDeployment -ResourceGroupName$resourceGroupName -TemplateUri$templateUri -keyVaultName$keyVaultName -adUserId$adUserId -secretValue$secretValueWrite-Host"Press [ENTER] to continue ..."
Le nom par défaut du secret est vmAdminPassword. Il est codé en dur dans le modèle.
Pour permettre au modèle de récupérer le secret, vous devez activer une stratégie d’accès appelée Activer l’accès à Azure Resource Manager pour le déploiement de modèles pour le coffre de clés. Cette stratégie est activée dans le modèle. Pour plus d’informations sur la stratégie d’accès, consultez Déployer des coffres de clés et des secrets.
Le modèle contient une seule valeur de sortie appelée keyVaultId. Vous utiliserez cet ID avec le nom du secret pour récupérer la valeur du secret plus loin dans le tutoriel. Le format d’ID de ressource est le suivant :
Quand vous copiez et collez l’ID, il peut figurer sur plusieurs lignes. Fusionnez les lignes et supprimez les espaces supplémentaires.
Pour valider le déploiement, exécutez la commande PowerShell suivante dans le même volet de l’interpréteur de commandes afin de récupérer le secret en texte clair. La commande fonctionne uniquement dans la même session d’interpréteur de commandes, car elle utilise la variable $keyVaultName définie dans le script PowerShell précédent.
Vous avez préparé un coffre de clés et un secret. Les sections suivantes expliquent comment personnaliser un modèle existant pour récupérer le secret durant le déploiement.
Ouvrir un modèle de démarrage rapide
Le référentiel Modèles de démarrage rapide Azure contient les modèles ARM. Au lieu de créer un modèle à partir de zéro, vous pouvez chercher un exemple de modèle et le personnaliser. Le modèle utilisé dans ce tutoriel se nomme Déployer une machine virtuelle Windows simple.
Dans Visual Studio Code, sélectionnez Fichier>Ouvrir un fichier.
Dans la zone Nom de fichier, collez l’URL suivante :
En utilisant la méthode d’ID statique, aucune modification du fichier de modèle n’est nécessaire. La récupération de la valeur du secret s’effectue en configurant le fichier de paramètres de modèle.
Dans Visual Studio Code, ouvrez azuredeploy.parameters.json, s’il n’est pas déjà ouvert.
Mettez à jour le paramètre adminPassword comme suit :
Remplacez la valeur de id par l’ID de ressource du coffre de clés que vous avez créé au cours de la procédure précédente. Le secretName est codé en dur en tant que vmAdminPassword. Consultez Préparer un coffre de clés.
Utilisez les valeurs suivantes :
adminUsername : nom du compte administrateur de la machine virtuelle.
dnsLabelPrefix : Nommez la valeur dnsLabelPrefix.
Pour des exemples de noms, consultez l’image précédente.
Choisissez votre environnement préféré en sélectionnant PowerShell ou Bash (pour CLI) en haut à gauche. Il est nécessaire de redémarrer l’interpréteur de commandes lors d’un tel changement.
Sélectionnez Charger/Télécharger des fichiers, puis Charger. Chargez azuredeploy.json et azuredeploy.parameters.json dans Cloud Shell. Après avoir chargé le fichier, vous pouvez utiliser la commande ls et la commande cat pour vérifier que le chargement a été correctement effectué.
Exécutez le script PowerShell suivant pour déployer le modèle.
Azure PowerShell
$projectName = Read-Host -Prompt"Enter the same project name that is used for creating the key vault"$location = Read-Host -Prompt"Enter the same location that is used for creating the key vault (i.e. centralus)"$resourceGroupName = "${projectName}rg"New-AzResourceGroupDeployment `
-ResourceGroupName$resourceGroupName `
-TemplateFile"$HOME/azuredeploy.json" `
-TemplateParameterFile"$HOME/azuredeploy.parameters.json"Write-Host"Press [ENTER] to continue ..."
Quand vous déployez le modèle, utilisez le même groupe de ressources que celui que vous avez utilisé dans le coffre de clés. Cette approche facilite le nettoyage des ressources, car vous devez supprimer uniquement un seul groupe de ressources au lieu de deux.
Valider le déploiement
Une fois que vous avez réussi le déploiement de la machine virtuelle, testez les informations d’identification de connexion à l’aide du mot de passe stocké dans le coffre de clés.
Sélectionnez Groupes de ressources><NomDeVotreGroupeDeRessources>>MachineVirtuelleWindowsSimple.
Sélectionnez Se connecter tout en haut.
Sélectionnez Télécharger le fichier RDP, puis suivez les instructions pour vous connecter à la machine virtuelle à l’aide du mot de passe stocké dans le coffre de clés.
Nettoyer les ressources
Une fois que vous n’avez plus besoin de vos ressources Azure, nettoyez les ressources que vous avez déployées en supprimant le groupe de ressources.
Azure PowerShell
$projectName = Read-Host -Prompt"Enter the same project name that is used for creating the key vault"$resourceGroupName = "${projectName}rg"Remove-AzResourceGroup -Name$resourceGroupNameWrite-Host"Press [ENTER] to continue ..."
Étapes suivantes
Dans ce tutoriel, vous avez récupéré un secret dans votre coffre de clés Azure. Vous avez ensuite utilisé le secret dans votre déploiement de modèle. Pour découvrir comment utiliser les extensions de machine virtuelle afin d’exécuter les tâches post-déploiement, consultez :