Compartilhar via


Tutorial: Usar o Azure Key Vault com uma máquina virtual no .NET

O Azure Key Vault ajuda a proteger segredos como chaves de API, as cadeias de conexão de banco de dados que você precisa para acessar seus aplicativos, serviços e recursos de TI.

Neste tutorial, você aprenderá como fazer um aplicativo de console ler as informações no Azure Key Vault. O aplicativo usará a identidade gerenciada da máquina virtual para se autenticar no Key Vault.

Este tutorial mostra como:

  • Crie um grupo de recursos.
  • Crie um cofre de chaves.
  • Adicione um segredo ao cofre de chaves.
  • Recuperar um segredo do cofre de chaves.
  • Crie uma máquina virtual do Azure.
  • Habilitar uma identidade gerenciada para a Máquina Virtual.
  • Atribuir permissões à identidade da VM.

Antes de começar, leia Conceitos básicos do Key Vault.

Caso não tenha uma assinatura do Azure, crie uma conta gratuita.

Pré-requisitos

Para Windows, Mac e Linux:

Criar recursos e atribuir permissões

Antes de começar a codificar, você precisará criar alguns recursos, colocar um segredo no cofre de chaves e atribuir permissões.

Entrar no Azure

Para entrar no Azure usando o seguinte comando:

az login

Criar um grupo de recursos e um cofre de chaves

Este início rápido usa um cofre de chaves do Azure pré-criado. Você pode criar um cofre de chaves seguindo as etapas nestes guias de início rápido:

Como alternativa, você pode executar esses comandos da CLI do Azure ou do Azure PowerShell.

Importante

Cada cofre de chaves deve ter um nome exclusivo. Substitua <seu-nome-exclusivo-do-cofre-de-chaves> pelo nome do seu cofre de chaves nos exemplos a seguir.

az group create --name "myResourceGroup" -l "EastUS"

az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization

Preencher seu cofre de chaves com um segredo

Vamos criar um segredo chamado mySecret, com um valor de Êxito! . Um segredo pode ser uma senha, uma cadeia de conexão SQL ou qualquer outra informação que você precise manter em segurança e disponível para o aplicativo.

Para adicionar um segredo ao cofre de chaves recém-criado, use o seguinte comando:

az keyvault secret set --vault-name "<your-unique-keyvault-name>" --name "mySecret" --value "Success!"

Criar uma máquina virtual

Crie uma máquina virtual do Windows ou Linux usando um dos seguintes métodos:

Windows Linux
Azure CLI Azure CLI
PowerShell PowerShell
Portal do Azure Portal do Azure

Atribuir uma identidade à VM

Crie uma identidade atribuída pelo sistema para a máquina virtual com o seguinte exemplo:

az vm identity assign --name <NameOfYourVirtualMachine> --resource-group <YourResourceGroupName>

Observe a identidade atribuída pelo sistema que é exibida no código a seguir. A saída do comando anterior seria:

{
  "systemAssignedIdentity": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "userAssignedIdentities": {}
}

Atribuir permissões à identidade da VM

Para obter permissões para o cofre de chaves por meio do RBAC (controle de acesso baseado em função), atribua uma função ao seu UPN (nome principal do usuário) usando o comando da CLI do Azure az role assignment create.

az role assignment create --role "Key Vault Secrets User" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"

Substituir <upn>, <subscription-id>, <resource-group-name> e <your-unique-keyvault-name> pelos seus valores reais. Seu UPN normalmente estará no formato de um endereço de email (por exemplo, username@domain.com).

Entrar na máquina virtual

Para entrar na máquina virtual, siga as instruções em Conectar-se e entrar em uma máquina virtual do Azure do Windows ou Conectar-se e fazer logon em uma máquina virtual do Azure do Linux.

Configurar o aplicativo de console

Criar um aplicativo de console e instalar os pacotes necessários usando o comando dotnet.

Instalar o .NET Core

Para instalar o .NET Core, acesse a página Downloads do .NET.

Criar e executar um aplicativo .NET de exemplo

Abra um prompt de comando.

Você pode exibir "Olá, Mundo" no console executando os comandos a seguir:

dotnet new console -n keyvault-console-app
cd keyvault-console-app
dotnet run

Instalar o pacote

Na janela do console, instale a biblioteca de clientes dos Segredos do Azure Key Vault para .NET:

dotnet add package Azure.Security.KeyVault.Secrets

Para este tutorial rápido, você precisará instalar o seguinte pacote de identidade para autenticação no Azure Key Vault:

dotnet add package Azure.Identity

Editar o aplicativo de console

Abra o arquivo Program.cs e adicione esses pacotes:

using System;
using Azure.Core;
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;

Adicione essas linhas, atualizando o URI para refletir o vaultUri do cofre de chaves. O código abaixo está usando 'DefaultAzureCredential()' para autenticação no cofre de chaves, que está usando o token da identidade gerenciada do aplicativo para autenticar. Ele também está usando a retirada exponencial para novas repetições, caso o cofre de chaves esteja sendo limitado.

  class Program
    {
        static void Main(string[] args)
        {
            string secretName = "mySecret";
            string keyVaultName = "<your-key-vault-name>";
            var kvUri = "https://<your-key-vault-name>.vault.azure.net";
            SecretClientOptions options = new SecretClientOptions()
            {
                Retry =
                {
                    Delay= TimeSpan.FromSeconds(2),
                    MaxDelay = TimeSpan.FromSeconds(16),
                    MaxRetries = 5,
                    Mode = RetryMode.Exponential
                 }
            };

            var client = new SecretClient(new Uri(kvUri), new DefaultAzureCredential(),options);

            Console.Write("Input the value of your secret > ");
            string secretValue = Console.ReadLine();

            Console.Write("Creating a secret in " + keyVaultName + " called '" + secretName + "' with the value '" + secretValue + "' ...");

            client.SetSecret(secretName, secretValue);

            Console.WriteLine(" done.");

            Console.WriteLine("Forgetting your secret.");
            secretValue = "";
            Console.WriteLine("Your secret is '" + secretValue + "'.");

            Console.WriteLine("Retrieving your secret from " + keyVaultName + ".");

            KeyVaultSecret secret = client.GetSecret(secretName);

            Console.WriteLine("Your secret is '" + secret.Value + "'.");

            Console.Write("Deleting your secret from " + keyVaultName + " ...");

            client.StartDeleteSecret(secretName);

            System.Threading.Thread.Sleep(5000);
            Console.WriteLine(" done.");

        }
    }

Limpar os recursos

Quando eles não forem mais necessários, exclua a máquina virtual e o cofre de chaves.

Próximas etapas