Tutorial: Usar Azure Key Vault com uma máquina virtual no Python

Azure Key Vault ajuda a proteger chaves, segredos e certificados, como chaves de API e cadeias de conexão de banco de dados.

Neste tutorial, você configura um aplicativo Python para ler informações de Azure Key Vault usando uma identidade gerenciada para recursos de Azure. Você aprenderá como:

  • Criar um cofre de chaves
  • Armazenar um segredo no Key Vault
  • Criar uma máquina virtual Azure Linux
  • Habilitar uma identidade gerenciada para a máquina virtual
  • Conceda as permissões necessárias para o aplicativo de console ler dados de Key Vault
  • Recuperar um segredo de Key Vault

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

Se você não tiver uma assinatura da Azure, crie uma conta gratuita.

Pré-requisitos

Para Windows, Mac e Linux:

  • Git
  • Uma versão atual do CLI do Azure. Execute az --version para verificar a versão instalada.

Entrar no Azure

Entre no Azure com o CLI do Azure:

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 CLI do Azure ou Azure PowerShell.

Importante

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

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

az keyvault create --name "<vault-name>" -g "myResourceGroup" --enable-rbac-authorization true

Preencha seu cofre de chaves com um segredo

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

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

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

Criar uma máquina virtual

Crie uma VM chamada myVM usando um dos seguintes métodos:

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

Para criar uma VM linux usando o CLI do Azure, use o comando az vm create. O exemplo a seguir cria uma conta de usuário chamada azureuser. O parâmetro --generate-ssh-keys é usado para gerar automaticamente uma chave SSH e colocá-la no local de chave padrão ( ~/.ssh).

az vm create \
  --resource-group <resource-group> \
  --name myVM \
  --image Ubuntu2204 \
  --admin-username azureuser \
  --generate-ssh-keys

Observe o valor de publicIpAddress na saída.

Atribuir uma identidade à VM

Crie uma identidade gerenciada atribuída pelo sistema para a VM usando o comando az vm identity assign :

az vm identity assign --name "myVM" --resource-group "<resource-group>"

Observe a identidade atribuída pelo sistema na saída:

{
  "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/myResourceGroup/providers/Microsoft.KeyVault/vaults/<vault-name>"

Substitua <upn>, <subscription-id>e <vault-name> com seus valores reais. Se você usou um nome de grupo de recursos diferente, substitua "myResourceGroup" também. Seu UPN normalmente estará no formato de um endereço de email (por exemplo, username@domain.com).

Entrar na VM

Para entrar na VM, siga as instruções em Conectar e entre em uma máquina virtual Azure executando Linux ou Connect e entre em uma máquina virtual Azure executando Windows.

Para fazer login em uma VM Linux, use ssh com o <public-ip-address> da etapa Criar uma máquina virtual:

ssh azureuser@<public-ip-address>

Instalar bibliotecas Python na VM

Na VM, instale as duas bibliotecas de Python que o script de exemplo usa: azure-keyvault-secrets e azure-identity.

Em uma VM do Linux, instale-as com pip3:

pip3 install azure-keyvault-secrets azure-identity

Criar e editar o script de Python de exemplo

Na VM, crie um arquivo de Python chamado sample.py. Cole o seguinte código no arquivo, substituindo <vault-name> pelo nome do cofre de chaves:

from azure.keyvault.secrets import SecretClient
from azure.identity import DefaultAzureCredential

key_vault_name = "<vault-name>"
key_vault_uri = f"https://{key_vault_name}.vault.azure.net"
secret_name = "mySecret"

credential = DefaultAzureCredential()
client = SecretClient(vault_url=key_vault_uri, credential=credential)
retrieved_secret = client.get_secret(secret_name)

print(f"The value of secret '{secret_name}' in '{key_vault_name}' is: '{retrieved_secret.value}'")

Executar o aplicativo de Python de exemplo

Execute sample.py. Se tudo estiver configurado corretamente, o aplicativo imprimirá o valor secreto:

python3 sample.py

The value of secret 'mySecret' in '<vault-name>' is: 'Success!'

Limpar os recursos

Quando você não precisar mais deles, exclua a VM e o cofre de chaves. A maneira mais rápida é excluir o grupo de recursos ao qual pertencem:

az group delete -g "myResourceGroup"

Próximas etapas

Azure Key Vault API REST