Een Azure Stack Hub-VM implementeren met behulp van een wachtwoord dat is opgeslagen in Key Vault

In dit artikel wordt stapsgewijs uitgelegd hoe u een Windows Virtuele machine (VM) implementeert met behulp van een wachtwoord dat is opgeslagen in Azure Stack Hub Key Vault. Het gebruik van een sleutelkluiswachtwoord is veiliger dan het doorgeven van een wachtwoord voor tekst zonder opmaak.

Overzicht

U kunt waarden zoals een wachtwoord opslaan als een geheim in een Azure Stack Hub-sleutelkluis. Nadat u een geheim hebt gemaakt, kunt u ernaar verwijzen in Azure Resource Manager-sjablonen. Het gebruik van geheimen met Resource Manager biedt de volgende voordelen:

  • U hoeft geen geheim handmatig in te voeren telkens wanneer u een resource implementeert.
  • U kunt opgeven welke gebruikers of service-principals toegang hebben tot een geheim.

Vereisten

In de volgende stappen wordt het proces beschreven dat is vereist voor het maken van een virtuele machine door het wachtwoord op te halen dat is opgeslagen in een Key Vault:

  1. Maak een Key Vault geheim.
  2. Werk het azuredeploy.parameters.json bestand bij.
  3. De sjabloon implementeren.

Notitie

U kunt deze stappen van de Azure Stack Development Kit (ASDK) of van een externe client gebruiken als u via VPN bent verbonden.

Een Key Vault geheim maken

Met het volgende script maakt u een sleutelkluis en slaat u een wachtwoord op in de sleutelkluis als geheim. Gebruik de -EnabledForDeployment parameter wanneer u de sleutelkluis maakt. Deze parameter zorgt ervoor dat de sleutelkluis kan worden verwezen vanuit Azure Resource Manager-sjablonen.


$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

Wanneer u het vorige script uitvoert, bevat de uitvoer de geheime URI (Uniform Resource Identifier). Noteer deze URI. U moet ernaar verwijzen in de vm Implementeren Windows met een wachtwoord in de sleutelkluissjabloon. Download de map 101-vm-secure-password op uw ontwikkelcomputer. Deze map bevat de azuredeploy.json bestanden en azuredeploy.parameters.json de bestanden die u nodig hebt in de volgende stappen.

Wijzig het azuredeploy.parameters.json bestand op basis van uw omgevingswaarden. De parameters van speciaal belang zijn de kluisnaam, de kluisresourcegroep en de geheime URI (zoals gegenereerd door het vorige script). Het onderstaande bestand is een voorbeeld van een parameterbestand.

Het bestand azuredeploy.parameters.json bijwerken

Werk het azuredeploy.parameters.json bestand bij met de KeyVault-URI, secretName, adminUsername van de VM-waarden volgens uw omgeving. In het volgende JSON-bestand ziet u een voorbeeld van het sjabloonparametersbestand:

{
    "$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"
        }
    }
}

Sjabloonimplementatie

Implementeer nu de sjabloon met behulp van het volgende PowerShell-script:

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>"

Wanneer de sjabloon is geïmplementeerd, resulteert dit in de volgende uitvoer:

Deployment output

Volgende stappen