Partilhar via


Tutorial: Integrar o Azure Key Vault em sua implantação de modelo ARM

Saiba como recuperar segredos de um cofre de chaves do Azure e passar os segredos como parâmetros ao implantar um modelo do Azure Resource Manager (modelo ARM). O valor do parâmetro nunca é exposto, porque você faz referência apenas ao ID do cofre da chave. Você pode fazer referência ao segredo do cofre de chaves usando uma ID estática ou uma ID dinâmica. Este tutorial usa uma ID estática. Com a abordagem de ID estático, você faz referência ao cofre de chaves no arquivo de parâmetros de modelo, não no arquivo de modelo. Para obter mais informações sobre ambas as abordagens, consulte Usar o Cofre da Chave do Azure para passar o valor do parâmetro seguro durante a implantação.

No tutorial Definir ordem de implantação de recursos, você cria uma máquina virtual (VM). Você precisa fornecer o nome de usuário e a senha do administrador da VM. Em vez de fornecer a senha, você pode pré-armazenar a senha em um cofre de chaves do Azure e, em seguida, personalizar o modelo para recuperar a senha do cofre de chaves durante a implantação.

Diagrama exibindo a integração de um modelo do Gerenciador de Recursos com um cofre de chaves

Este tutorial abrange as seguintes tarefas:

  • Preparar um cofre de chaves
  • Abrir um modelo de início rápido
  • Editar o ficheiro de parâmetros
  • Implementar o modelo
  • Validar a implementação
  • Clean up resources (Limpar recursos)

Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.

Para obter um módulo do Learn que usa um valor seguro de um cofre de chaves, consulte Gerenciar implantações complexas na nuvem usando recursos avançados de modelo ARM.

Pré-requisitos

Para concluir este artigo, precisa de:

Preparar um cofre de chaves

Nesta seção, você cria um cofre de chaves e adiciona um segredo a ele, para que possa recuperá-lo quando implantar seu modelo. Há muitas maneiras de criar um cofre de chaves. Neste tutorial, você usa o Azure PowerShell para implantar um modelo ARM. Este modelo faz duas coisas:

  • Cria um cofre de chaves com a enabledForTemplateDeployment propriedade ativada. Essa propriedade deve ser true antes que o processo de implantação do modelo possa acessar os segredos definidos no cofre de chaves.
  • Adiciona um segredo ao cofre de chaves. O segredo armazena a senha de administrador da VM.

Nota

Como o usuário que está implantando o modelo de máquina virtual, se você não for o Proprietário ou um Colaborador do cofre de chaves, o Proprietário ou um Colaborador deverá conceder acesso à Microsoft.KeyVault/vaults/deploy/action permissão para o cofre de chaves. Para obter mais informações, consulte Usar o Cofre da Chave do Azure para passar um valor de parâmetro seguro durante a implantação.

Para executar o seguinte script do Azure PowerShell, selecione Experimentar para abrir o Cloud Shell. Para colar o script, clique com o botão direito do mouse no painel do shell e selecione Colar.

$projectName = Read-Host -Prompt "Enter a project name that is used for generating resource names"
$location = Read-Host -Prompt "Enter the location (i.e. centralus)"
$upn = Read-Host -Prompt "Enter your user principal name (email address) used to sign in to Azure"
$secretValue = Read-Host -Prompt "Enter the virtual machine administrator password" -AsSecureString

$resourceGroupName = "${projectName}rg"
$keyVaultName = $projectName
$adUserId = (Get-AzADUser -UserPrincipalName $upn).Id
$templateUri = "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/tutorials-use-key-vault/CreateKeyVault.json"

New-AzResourceGroup -Name $resourceGroupName -Location $location
New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateUri $templateUri -keyVaultName $keyVaultName -adUserId $adUserId -secretValue $secretValue

Write-Host "Press [ENTER] to continue ..."

Importante

  • O nome do grupo de recursos é o nome do projeto, mas com rg anexado a ele. Para facilitar a limpeza dos recursos criados neste tutorial, use o mesmo nome de projeto e o mesmo nome de grupo de recursos ao implantar o próximo modelo.
  • O nome padrão para o segredo é vmAdminPassword. É codificado no modelo.
  • Para habilitar o modelo para recuperar o segredo, você deve habilitar uma política de acesso chamada Habilitar acesso ao Gerenciador de Recursos do Azure para implantação de modelo para o cofre de chaves. Esta política está habilitada no modelo. Para obter mais informações sobre a política de acesso, consulte Implantar cofres de chaves e segredos.

O modelo tem um valor de saída, chamado keyVaultId. Você usará esse ID junto com o nome secreto para recuperar o valor secreto mais adiante no tutorial. O formato de ID do recurso é:

/subscriptions/<SubscriptionID>/resourceGroups/mykeyvaultdeploymentrg/providers/Microsoft.KeyVault/vaults/<KeyVaultName>

Quando você copia e cola o ID, ele pode ser dividido em várias linhas. Mescle as linhas e corte os espaços extras.

Para validar a implantação, execute o seguinte comando do PowerShell no mesmo painel do shell para recuperar o segredo em texto não criptografado. O comando funciona apenas na mesma sessão de shell, porque usa a variável $keyVaultName, que é definida no script PowerShell anterior.

$secret = Get-AzKeyVaultSecret -VaultName $keyVaultName -Name "vmAdminPassword"
$ssPtr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secret.SecretValue)
try {
   $secretValueText = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ssPtr)
} finally {
   [System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ssPtr)
}
Write-Output $secretValueText

Agora você preparou um cofre de chaves e um segredo. As seções a seguir mostram como personalizar um modelo existente para recuperar o segredo durante a implantação.

Abrir um modelo de início rápido

Os Modelos de Início Rápido do Azure são um repositório para modelos ARM. Em vez de criar um modelo do zero, pode encontrar um modelo de exemplo e personalizá-lo. O modelo usado neste tutorial é chamado Implantar uma VM simples do Windows.

  1. No Visual Studio Code, selecione File>Open File.

  2. Na caixa Nome do arquivo , cole o seguinte URL:

    https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json
    
  3. Selecione Abrir para abrir o ficheiro. O cenário é o mesmo usado em Tutorial: Criar modelos ARM com recursos dependentes. O modelo define seis recursos:

    É útil ter alguma compreensão básica do modelo antes de personalizá-lo.

  4. Selecione Guardar Ficheiro>Como e, em seguida, guarde uma cópia do ficheiro no computador local com o nome azuredeploy.json.

  5. Repita os passos 1 a 3 para abrir o seguinte URL e, em seguida, guarde o ficheiro como azuredeploy.parameters.json.

    https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.parameters.json
    

Editar o ficheiro de parâmetros

Usando o método de ID estático, você não precisa fazer nenhuma alteração no arquivo de modelo. A recuperação do valor secreto é feita configurando o arquivo de parâmetro do modelo.

  1. No Visual Studio Code, abra azuredeploy.parameters.json se ainda não estiver aberto.

  2. Atualize o adminPassword parâmetro para:

    "adminPassword": {
      "reference": {
        "keyVault": {
          "id": "/subscriptions/<SubscriptionID>/resourceGroups/mykeyvaultdeploymentrg/providers/Microsoft.KeyVault/vaults/<KeyVaultName>"
        },
        "secretName": "vmAdminPassword"
      }
    },
    

    Importante

    Substitua o valor for id pelo ID do recurso do cofre de chaves que você criou no procedimento anterior. O secretName é codificado como vmAdminPassword. Consulte Preparar um cofre de chaves.

    Integrar o cofre de chaves e o arquivo de parâmetros de implantação de máquina virtual de modelo do Resource Manager

  3. Atualize os seguintes valores:

    • adminUsername: O nome da conta de administrador da máquina virtual.
    • dnsLabelPrefix: Nomeie o dnsLabelPrefix valor.

    Para obter exemplos de nomes, consulte a imagem anterior.

  4. Guarde as alterações.

Implementar o modelo

  1. Faça login no Cloud Shell.

  2. Escolha seu ambiente preferido selecionando PowerShell ou Bash (para CLI) no canto superior esquerdo. É necessário reiniciar o Shell quando mudar.

    Arquivo de carregamento do Cloud Shell do portal do Azure

  3. Selecione Carregar/transferir ficheiros e, em seguida, selecione Carregar. Carregue azuredeploy.json e azuredeploy.parameters.json para o Cloud Shell. Depois de carregar o arquivo, você pode usar o ls comando e o cat comando para verificar se o arquivo foi carregado com êxito.

  4. Execute o seguinte script do PowerShell para implantar o modelo.

    $projectName = Read-Host -Prompt "Enter the same project name that is used for creating the key vault"
    $location = Read-Host -Prompt "Enter the same location that is used for creating the key vault (i.e. centralus)"
    $resourceGroupName = "${projectName}rg"
    
    New-AzResourceGroupDeployment `
        -ResourceGroupName $resourceGroupName `
        -TemplateFile "$HOME/azuredeploy.json" `
        -TemplateParameterFile "$HOME/azuredeploy.parameters.json"
    
    Write-Host "Press [ENTER] to continue ..."
    

    Ao implantar o modelo, use o mesmo grupo de recursos usado no cofre de chaves. Essa abordagem facilita a limpeza dos recursos, pois é necessário excluir apenas um grupo de recursos em vez de dois.

Validar a implementação

Depois de implantar com êxito a máquina virtual, teste as credenciais de entrada usando a senha armazenada no cofre de chaves.

  1. Abra o portal do Azure.

  2. Selecione Grupos><de recursos YourResourceGroupName>>simpleWinVM.

  3. Selecione Conectar na parte superior.

  4. Selecione Baixar arquivo RDP e siga as instruções para entrar na máquina virtual usando a senha armazenada no cofre de chaves.

Clean up resources (Limpar recursos)

Quando não precisar mais dos recursos do Azure, limpe os recursos implantados excluindo o grupo de recursos.

$projectName = Read-Host -Prompt "Enter the same project name that is used for creating the key vault"
$resourceGroupName = "${projectName}rg"

Remove-AzResourceGroup -Name $resourceGroupName

Write-Host "Press [ENTER] to continue ..."

Próximos passos

Neste tutorial, você recuperou um segredo do seu cofre de chaves do Azure. Em seguida, você usou o segredo na implantação do modelo. Para saber como usar extensões de máquina virtual para executar tarefas pós-implantação, consulte: