Implementar um Azure Stack Hub VM usando uma palavra-passe armazenada no Cofre de Chaves

Este artigo passa pela implementação de uma máquina virtual do Windows Server (VM) utilizando uma palavra-passe armazenada no Cofre da Chave Azure Stack Hub. Usar uma palavra-passe do cofre é mais seguro do que passar uma senha de texto simples.

Descrição Geral

Pode armazenar valores como uma palavra-passe como um segredo num cofre de chaves Azure Stack Hub. Depois de criar um segredo, pode fazê-lo referenciar nos modelos do Azure Resource Manager. A utilização de segredos com o Gestor de Recursos fornece os seguintes benefícios:

  • Não tens de entrar manualmente em segredo cada vez que implementas um recurso.
  • Pode especificar quais os utilizadores ou diretores de serviço que podem aceder a um segredo.

Pré-requisitos

Os seguintes passos descrevem o processo necessário para criar um VM recuperando a palavra-passe armazenada num Cofre de Chaves:

  1. Criar um segredo do Cofre da Chave.
  2. Atualize o azuredeploy.parameters.json ficheiro.
  3. Implemente o modelo.

Nota

Pode utilizar estes passos a partir do Kit de Desenvolvimento da Pilha de Azure (ASDK), ou de um cliente externo se estiver conectado através da VPN.

Criar um segredo do Cofre de Chaves

O seguinte script cria um cofre chave e armazena uma senha no cofre de chaves como um segredo. Usa o -EnabledForDeployment parâmetro quando estiveres a criar o cofre das chaves. Este parâmetro garante que o cofre da chave pode ser referenciado a partir de modelos do Gestor de Recursos 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 executar o script anterior, a saída inclui o URI secreto (Identificador de Recursos Uniformes). Tome nota deste URI. Tem de o fazer referência no VM de Windows com palavra-passe no modelo do cofre de chaves. Descarregue a pasta de senha de 101 vm-secure-secure no seu computador de desenvolvimento. Esta pasta contém os azuredeploy.json ficheiros e azuredeploy.parameters.json ficheiros, que necessitará nos próximos passos.

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

Atualizar o ficheiro azuredeploy.parameters.json

Atualize o azuredeploy.parameters.json ficheiro com o KeyVault URI, nome secreto, adminUsername dos valores VM de acordo com o seu ambiente. O seguinte ficheiro JSON mostra um exemplo do ficheiro de parâmetros do 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"
        }
    }
}

Implementação de modelos

Agora implemente o modelo utilizando o seguinte script 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 é implementado com sucesso, resulta na seguinte saída:

Saída de implantação

Passos seguintes