Tutorial: Use o Azure Key Vault com uma máquina virtual em Python

O Azure Key Vault ajuda-o a proteger chaves, segredos e certificados, como chaves API e cadeias de ligação a bases de dados.

Neste tutorial, configuraste uma aplicação Python para ler informação do Azure Key Vault usando uma identidade gerida para recursos do Azure. Você aprende a:

  • Criar um cofre de chaves
  • Guardar 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 que a aplicação de consola leia dados do Key Vault
  • Recuperar um segredo da Key Vault

Antes de começares, lê Key Vault conceitos básicos.

Se não tiver uma subscrição Azure, crie uma conta free.

Pré-requisitos

Para Windows, Mac e Linux:

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

Iniciar sessão no Azure

Inicie sessão no Azure com a CLI do Azure:

az login

Criar um grupo de recursos e um cofre de chaves

Este quickstart utiliza um cofre de chaves Azure pré-criado. Você pode criar um cofre de chaves seguindo as etapas nestes guias rápidos:

Em alternativa, pode executar estes comandos CLI do Azure ou Azure PowerShell.

Importante

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

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

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

Preencha o cofre das chaves com um segredo

Vamos criar um segredo chamado mySecret, com um valor de Sucesso!. Um segredo pode ser uma palavra-passe, uma cadeia de ligação SQL ou qualquer outra informação que precise para manter segura e disponível para a sua aplicação.

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 adiciona uma conta de usuário chamada azureuser. O --generate-ssh-keys parâmetro é usado para gerar automaticamente uma chave SSH e colocá-la no local da 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 gerida atribuída pelo sistema para a VM usando o comando az vm identity assign :

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

Note 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 seu cofre de chaves através de Role-Based Controlo de Acesso (RBAC), atribua uma função ao seu "Nome Principal do Utilizador" (UPN) usando o comando 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> pelos seus valores reais. Se usaste um nome diferente de grupo de recursos, substitui também "myResourceGroup". Seu UPN normalmente estará no formato de um endereço de e-mail (por exemplo, username@domain.com).

Iniciar sessão na VM

Para iniciar sessão na VM, siga as instruções em Connect e inicie sessão numa máquina virtual Azure a correr Linux ou Connect e inicie sessão numa máquina virtual Azure com Windows.

Para iniciar sessão numa VM Linux, use ssh com o <public-ip-address> do passo Criar uma máquina virtual:

ssh azureuser@<public-ip-address>

Instale bibliotecas Python na VM

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

Numa VM Linux, instale-as com pip3:

pip3 install azure-keyvault-secrets azure-identity

Crie e edite o script Python de exemplo

Na VM, crie um ficheiro Python chamado sample.py. Cole o seguinte código no ficheiro, 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}'")

Executa a aplicação Python de exemplo

Execute sample.py. Se tudo estiver configurado corretamente, a aplicação imprime o valor secreto:

python3 sample.py

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

Limpeza de recursos

Quando já não precisares deles, apaga a VM e o cofre de chaves. A forma mais rápida é eliminar o grupo de recursos a que pertencem:

az group delete -g "myResourceGroup"

Próximos passos

Azure Key Vault REST API