Condividi tramite


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'insieme di credenziali delle chiavi dell'hub di Azure Stack. L'uso di una password del vault delle chiavi è più sicuro rispetto alla trasmissione di una password in testo normale.

Panoramica

È possibile archiviare valori come una password come segreto in un key vault di Azure Stack Hub. 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

I passaggi seguenti descrivono il processo necessario per creare una macchina virtuale recuperando la password archiviata in un insieme di credenziali delle chiavi:

  1. Creare un segreto di Key Vault.
  2. Aggiornare il file azuredeploy.parameters.json.
  3. 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 di Key Vault

Lo script seguente crea un Key Vault e archivia una password nel Key Vault come segreto. Usare il parametro -EnabledForDeployment quando si crea l'insieme di chiavi. Questo parametro garantisce che il Key Vault faccia riferimento ai 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 Distribuire VM Windows con password nel Key Vault. Scaricare la cartella 101-vm-secure-password nel computer di sviluppo. Questa cartella contiene i file azuredeploy.json e azuredeploy.parameters.json necessari nei passaggi successivi.

Modificare il file azuredeploy.parameters.json in base ai valori dell'ambiente. I parametri di particolare interesse sono il nome della cassaforte, il gruppo di risorse della cassaforte 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 file azuredeploy.parameters.json con l'URI di KeyVault, il nome del segreto e il nome utente amministrativo della macchina virtuale in base al proprio 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 di modelli

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:

Risultato della distribuzione

Passaggi successivi