Déployer une machine virtuelle Azure Stack Hub en utilisant un mot de passe stocké dans Key Vault
Cet article décrit pas à pas le déploiement d’une machine virtuelle Windows Server avec un mot de passe stocké dans un coffre de clés Azure Stack Hub. L’utilisation d’un mot de passe d’un coffre de clés est plus sûre que la transmission d’un mot de passe en texte brut.
Vue d’ensemble
Vous pouvez stocker des valeurs, comme des mots de passe, en tant que secrets dans un coffre de clés Azure Stack Hub. Après avoir créé un secret, vous pouvez le référencer dans des modèles Azure Resource Manager. L’utilisation de secrets avec Resource Manager offre les avantages suivants :
- Vous n’avez pas à entrer manuellement un secret chaque fois que vous déployez une ressource.
- Vous pouvez spécifier quels utilisateurs ou principaux du service peuvent accéder à un secret.
Conditions préalables requises
- Les utilisateurs doivent s’abonner à une offre qui inclut le service Key Vault.
- Installer PowerShell pour Azure Stack Hub.
- Configurer votre environnement PowerShell.
Les étapes suivantes décrivent le processus nécessaire pour créer une machine virtuelle en récupérant le mot de passe stocké dans un coffre de clés :
- Créer un secret Key Vault.
- Mettre à jour le fichier
azuredeploy.parameters.json
. - Déployez le modèle.
Remarque
Vous pouvez utiliser ces étapes à partir du Kit de développement Azure Stack (ASDK), ou à partir d’un client externe si vous êtes connecté via un VPN.
Créer un secret Key Vault
Le script suivant crée un coffre de clés et stocke un mot de passe dans le coffre de clés en tant que secret. Utilisez le paramètre -EnabledForDeployment
quand vous créez le coffre de clés. Il garantit que le coffre de clés peut être référencé à partir de modèles Azure Resource Manager.
$vaultName = "contosovault"
$resourceGroup = "contosovaultrg"
$location = "local"
$secretName = "MySecret"
New-AzResourceGroup `
-Name $resourceGroup `
-Location $location
New-AzKeyVault `
-VaultName $vaultName `
-ResourceGroupName $resourceGroup `
-Location $location
-EnabledForTemplateDeployment
$secretValue = ConvertTo-SecureString -String '<Password for your virtual machine>' -AsPlainText -Force
Set-AzureKeyVaultSecret `
-VaultName $vaultName `
-Name $secretName `
-SecretValue $secretValue
À l’exécution du script précédent, la sortie inclut l’URI (Uniform Resource Identifier) du secret. Notez cet URI. Vous devez le référencer dans le modèle utilisé dans Déployer une machine virtuelle Windows avec un mot de passe dans un coffre de clés. Téléchargez le dossier 101-vm-secure-password sur votre ordinateur de développement. Ce dossier contient les fichiers azuredeploy.json
et azuredeploy.parameters.json
dont vous avez besoin aux étapes suivantes.
Modifiez le fichier azuredeploy.parameters.json
en fonction des valeurs de votre environnement. Les paramètres les plus intéressants sont le nom du coffre, le groupe de ressources du coffre et l’URI du secret (généré par le script précédent). Le fichier ci-dessous est un exemple de fichier de paramètres.
Mettre à jour le fichier azuredeploy.parameters.json
Mettez à jour le fichier azuredeploy.parameters.json
avec les valeurs de la machine virtuelle KeyVaultURI, secretName, adminUsername correspondant à votre environnement. Le fichier JSON suivant est un exemple de fichier de paramètres du modèle :
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"adminUsername": {
"value": "demouser"
},
"adminPassword": {
"reference": {
"keyVault": {
"id": "/subscriptions/xxxxxx/resourceGroups/RgKvPwd/providers/Microsoft.KeyVault/vaults/KvPwd"
},
"secretName": "MySecret"
}
},
"dnsLabelPrefix": {
"value": "mydns123456"
},
"windowsOSVersion": {
"value": "2016-Datacenter"
}
}
}
Déploiement de modèle
Déployez maintenant le modèle avec le script PowerShell suivant :
New-AzResourceGroupDeployment `
-Name KVPwdDeployment `
-ResourceGroupName $resourceGroup `
-TemplateFile "<Fully qualified path to the azuredeploy.json file>" `
-TemplateParameterFile "<Fully qualified path to the azuredeploy.parameters.json file>"
Une fois le modèle déployé, la sortie suivante est générée :