Implantar uma VM do Azure Stack Hub usando uma senha armazenada no Key Vault

Este artigo percorre a implantação de uma VM (máquina virtual) do Windows Server usando uma senha armazenada no Azure Stack Hub Key Vault. Usar uma senha do cofre de chaves é mais seguro do que passar uma senha de texto sem formatação.

Visão geral

Você pode armazenar valores como uma senha como um segredo em um cofre de chaves do Azure Stack Hub. Depois de criar um segredo, você pode referenciá-lo em modelos de Resource Manager do Azure. O uso de segredos com Resource Manager oferece os seguintes benefícios:

  • Você não precisa inserir manualmente o segredo sempre que implantar um recurso.
  • Você pode especificar quais usuários ou entidades de serviço podem acessar um segredo.

Pré-requisitos

As etapas a seguir descrevem o processo necessário para criar uma VM recuperando a senha armazenada em um Key Vault:

  1. Crie um segredo Key Vault.
  2. Atualize o arquivo azuredeploy.parameters.json.
  3. Implante o modelo.

Observação

Você pode usar essas etapas do ASDK (Azure Stack Development Kit) ou de um cliente externo se estiver conectado por meio de VPN.

Criar um segredo Key Vault

O script a seguir cria um cofre de chaves e armazena uma senha no cofre de chaves como um segredo. Use o -EnabledForDeployment parâmetro ao criar o cofre de chaves. Esse parâmetro garante que o cofre de chaves possa ser referenciado nos modelos de Resource Manager do Azure.


$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 você executa o script anterior, a saída inclui o URI do segredo (Uniform Resource Identifier). Anote esse URI. Você precisa referenciá-la no modelo Implantar VM do Windows com senha no cofre de chaves. Baixe a pasta 101-vm-secure-password no computador de desenvolvimento. Essa pasta contém os azuredeploy.json arquivos e azuredeploy.parameters.json , que você precisará nas próximas etapas.

Modifique o azuredeploy.parameters.json arquivo de acordo com os valores de ambiente. Os parâmetros de interesse especial são o nome do cofre, o grupo de recursos do cofre e o URI do segredo (conforme gerado pelo script anterior). O arquivo abaixo é um exemplo de um arquivo de parâmetro.

Atualizar o arquivo azuredeploy.parameters.json

Atualize o azuredeploy.parameters.json arquivo com o URI do KeyVault, secretName, adminUsername dos valores da VM de acordo com seu ambiente. O arquivo JSON a seguir mostra um exemplo do arquivo de parâmetros de modelo:

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

Implantação de modelo

Agora, implante o modelo usando o seguinte script do PowerShell:

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 o modelo é implantado com êxito, ele resulta na seguinte saída:

Saída de implantação

Próximas etapas