Wdróż maszynę wirtualną Azure Stack Hub przy użyciu hasła przechowywanego w Key VaultDeploy an Azure Stack Hub VM using a password stored in Key Vault

W tym artykule opisano Wdrażanie maszyny wirtualnej z systemem Windows Server przy użyciu hasła przechowywanego w Key Vault centrum Azure Stack.This article steps through deploying a Windows Server virtual machine (VM) using a password stored in Azure Stack Hub Key Vault. Korzystanie z hasła magazynu kluczy jest bezpieczniejsze niż przekazywanie hasła w postaci zwykłego tekstu.Using a key vault password is more secure than passing a plain text password.

OmówienieOverview

W magazynie kluczy Azure Stack Hub można przechowywać wartości, takie jak hasło jako wpis tajny.You can store values such as a password as a secret in an Azure Stack Hub key vault. Po utworzeniu wpisu tajnego można odwoływać się do niego w szablonach Azure Resource Manager.After you create a secret, you can reference it in Azure Resource Manager templates. Korzystanie z kluczy tajnych w Menedżer zasobów zapewnia następujące korzyści:Using secrets with Resource Manager provides the following benefits:

  • Nie trzeba wprowadzać wpisów tajnych ręcznie przy każdym wdrożeniu zasobu.You don't have to manually enter secret each time you deploy a resource.
  • Można określić, którzy użytkownicy lub jednostki usługi mogą uzyskać dostęp do klucza tajnego.You can specify which users or service principals can access a secret.

Wymagania wstępnePrerequisites

Poniższe kroki opisują proces wymagany do utworzenia maszyny wirtualnej przez pobranie hasła przechowywanego w Key Vault:The following steps describe the process required to create a VM by retrieving the password stored in a Key Vault:

  1. Utwórz klucz tajny Key Vault.Create a Key Vault secret.
  2. Zaktualizuj azuredeploy.parameters.json plik.Update the azuredeploy.parameters.json file.
  3. Wdrażanie szablonu.Deploy the template.

Uwaga

W przypadku połączenia za pośrednictwem sieci VPN można użyć tych kroków z Azure Stack Development Kit (ASDK) lub z klienta zewnętrznego.You can use these steps from the Azure Stack Development Kit (ASDK), or from an external client if you're connected through VPN.

Utwórz klucz tajny Key VaultCreate a Key Vault secret

Poniższy skrypt tworzy magazyn kluczy i zapisuje hasło w magazynie kluczy jako wpis tajny.The following script creates a key vault and stores a password in the key vault as a secret. Użyj -EnabledForDeployment parametru podczas tworzenia magazynu kluczy.Use the -EnabledForDeployment parameter when you're creating the key vault. Ten parametr gwarantuje, że magazyn kluczy może być przywoływany z szablonów Azure Resource Manager.This parameter makes sure that the key vault can be referenced from Azure Resource Manager templates.


$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

Po uruchomieniu poprzedniego skryptu dane wyjściowe zawierają tajny identyfikator URI (Uniform Resource Identifier).When you run the previous script, the output includes the secret URI (Uniform Resource Identifier). Zanotuj ten identyfikator URI.Make a note of this URI. Musisz odwołać się do niego w szablonie wdrożenia maszyny wirtualnej z systemem Windows przy użyciu hasła .You have to reference it in the Deploy Windows VM with password in key vault template. Pobierz folder 101-VM-Secure-Password na komputer deweloperski.Download the 101-vm-secure-password folder onto your development computer. Ten folder zawiera azuredeploy.json pliki i azuredeploy.parameters.json , które będą potrzebne w następnych krokach.This folder contains the azuredeploy.json and azuredeploy.parameters.json files, which you'll need in the next steps.

Zmodyfikuj azuredeploy.parameters.json plik zgodnie z wartościami środowiskowymi.Modify the azuredeploy.parameters.json file according to your environment values. Parametrami szczególnymi jest nazwa magazynu, Grupa zasobów magazynu i identyfikator URI wpisu tajnego (zgodnie z wygenerowanym przez poprzedni skrypt).The parameters of special interest are the vault name, the vault resource group, and the secret URI (as generated by the previous script). Poniżej znajduje się przykład pliku parametrów.The file below is an example of a parameter file.

Aktualizowanie azuredeploy.parameters.jsw plikuUpdate the azuredeploy.parameters.json file

Zaktualizuj azuredeploy.parameters.json plik za pomocą identyfikatora URI magazynu kluczy, secretname, adminUsername wartości maszyny wirtualnej zgodnie z danym środowiskiem.Update the azuredeploy.parameters.json file with the KeyVault URI, secretName, adminUsername of the VM values as per your environment. Poniższy plik JSON przedstawia przykład pliku parametrów szablonu:The following JSON file shows an example of the template parameters file:

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

Wdrażanie na podstawie szablonuTemplate deployment

Teraz Wdróż szablon przy użyciu następującego skryptu programu PowerShell:Now deploy the template by using the following 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>"

Po pomyślnym wdrożeniu szablonu wynikiem są następujące dane wyjściowe:When the template is deployed successfully, it results in the following output:

Dane wyjściowe wdrożenia

Następne krokiNext steps