Distribuire una macchina virtuale dell'hub di Azure Stack usando una password archiviata in Key Vault
Questo articolo illustra come distribuire una macchina virtuale Windows Server usando una password archiviata nell'hub di Azure Stack Key Vault. L'uso di una password dell'insieme di credenziali delle chiavi è più sicuro rispetto al passaggio di una password di testo normale.
Panoramica
È possibile archiviare valori come password come segreto in un insieme di credenziali delle chiavi dell'hub di Azure Stack. Dopo aver creato un segreto, è possibile farvi riferimento nei modelli di Azure Resource Manager. L'uso dei segreti con Resource Manager offre i vantaggi seguenti:
- Non è necessario immettere manualmente il segreto ogni volta che si distribuisce una risorsa.
- È possibile specificare quali utenti o entità servizio possono accedere a un segreto.
Prerequisiti
- È necessario sottoscrivere un'offerta che includa il servizio Key Vault.
- Installare PowerShell per l'hub di Azure Stack.
- Configurare l'ambiente PowerShell.
I passaggi seguenti descrivono il processo necessario per creare una macchina virtuale recuperando la password archiviata in un Key Vault:
- Creare un segreto Key Vault.
- Aggiornare il file
azuredeploy.parameters.json
. - Distribuire il modello.
Nota
È possibile usare questi passaggi da Azure Stack Development Kit (ASDK) o da un client esterno se si è connessi tramite VPN.
Creare un segreto Key Vault
Lo script seguente crea un insieme di credenziali delle chiavi e archivia una password nell'insieme di credenziali delle chiavi come segreto. Usare il -EnabledForDeployment
parametro durante la creazione dell'insieme di credenziali delle chiavi. Questo parametro assicura che sia possibile fare riferimento all'insieme di credenziali delle chiavi dai modelli di 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
Quando si esegue lo script precedente, l'output include l'URI segreto (Uniform Resource Identifier). Prendere nota di questo URI. È necessario farvi riferimento nel modello Deploy Windows VM with password in Key Vault .You to reference it in the Deploy Windows VM with password in key vault template. Scaricare la cartella 101-vm-secure-password nel computer di sviluppo. Questa cartella contiene i azuredeploy.json
file e azuredeploy.parameters.json
necessari nei passaggi successivi.
Modificare il azuredeploy.parameters.json
file in base ai valori dell'ambiente. I parametri di particolare interesse sono il nome dell'insieme di credenziali, il gruppo di risorse dell'insieme di credenziali e l'URI segreto (come generato dallo script precedente). Il file seguente è un esempio di file di parametri.
Aggiornare il file azuredeploy.parameters.json
Aggiornare il azuredeploy.parameters.json
file con l'URI dell'insieme di credenziali delle chiavi, secretName, adminUsername dei valori della macchina virtuale in base all'ambiente. Il file JSON seguente mostra un esempio del file di parametri del modello:
{
"$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"
}
}
}
Distribuzione del modello
Distribuire ora il modello usando lo script di PowerShell seguente:
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>"
Quando il modello viene distribuito correttamente, viene restituito l'output seguente: