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

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

Neste tutorial, vai configurar uma aplicação Python para ler informações do Azure Key Vault com identidades geridas para recursos do Azure. Saiba como:

  • Criar um cofre de chaves
  • Armazenar um segredo no Key Vault
  • Criar uma máquina virtual do Linux do Azure
  • Ativar uma identidade gerida para a máquina virtual
  • Conceder as permissões necessárias para a aplicação de consola ler dados de Key Vault
  • Obter um segredo do Key Vault

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

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

Pré-requisitos

Para Windows, Mac e Linux:

  • Git
  • Este tutorial requer que execute a CLI do Azure localmente. Tem de ter a versão 2.0.4 ou posterior da CLI do Azure instalada. Executar az --version para localizar a versão. Se precisar de instalar ou atualizar a CLI, veja Instalar a CLI 2.0 do Azure.

Iniciar sessão no Azure

Para iniciar sessão no Azure com a CLI do Azure, introduza:

az login

Criar um grupo de recursos e um cofre de chaves

Este início rápido utiliza um cofre de chaves do Azure pré-criado. Pode criar um cofre de chaves ao seguir os passos no início rápido da CLI do Azure, Azure PowerShell início rápido ou portal do Azure início rápido.

Em alternativa, pode simplesmente executar a CLI do Azure ou Azure PowerShell comandos abaixo.

Importante

Cada cofre de chaves tem de ter um nome exclusivo. Substitua <your-unique-keyvault-name> pelo nome do cofre de chaves nos exemplos seguintes.

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

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

Preencher o cofre de chaves com um segredo

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

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

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

Criar uma máquina virtual

Crie uma VM denominada myVM com um dos seguintes métodos:

Linux Windows
CLI do Azure CLI do Azure
PowerShell PowerShell
Portal do Azure O portal do Azure

Para criar uma VM do Linux com a CLI do Azure, utilize o comando az vm create . O exemplo seguinte adiciona uma conta de utilizador com o nome azureuser. O --generate-ssh-keys parâmetro é utilizado para gerar automaticamente uma chave SSH e colocá-la na localização da chave predefinida (~/.ssh).

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

Repare no valor de publicIpAddress na saída.

Atribuir uma identidade à VM

Crie uma identidade atribuída pelo sistema para a máquina virtual com o comando az vm identity assign da CLI do Azure:

az vm identity assign --name "myVM" --resource-group "myResourceGroup"

Tenha em atenção a identidade atribuída pelo sistema que é apresentada no seguinte código. O resultado do comando anterior seria:

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

Atribuir permissões à identidade da VM

Agora, pode atribuir as permissões de identidade criadas anteriormente ao seu cofre de chaves ao executar o seguinte comando:

az keyvault set-policy --name "<your-unique-keyvault-name>" --object-id "<systemAssignedIdentity>" --secret-permissions get list

Iniciar sessão na VM

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

Para iniciar sessão numa VM do Linux, pode utilizar o comando ssh com o <publicIpAddress> fornecido no passo Criar uma máquina virtual :

ssh azureuser@<PublicIpAddress>

Instalar bibliotecas python na VM

Na máquina virtual, instale as duas bibliotecas Python que iremos utilizar no nosso script python: azure-keyvault-secrets e azure.identity.

Numa VM do Linux, por exemplo, pode instalá-las com pip3:

pip3 install azure-keyvault-secrets

pip3 install azure.identity

Criar e editar o script python de exemplo

Na máquina virtual, crie um ficheiro Python chamado sample.py. Edite o ficheiro para conter o seguinte código, substituindo <your-unique-keyvault-name> pelo nome do cofre de chaves:

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

key_vault_name = "<your-unique-keyvault-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 a aplicação Python de exemplo

Por fim, execute sample.py. Se tudo tiver corrido bem, deve devolver o valor do seu segredo:

python3 sample.py

The value of secret 'mySecret' in '<your-unique-keyvault-name>' is: 'Success!'

Limpar os recursos

Quando já não forem necessárias, elimine a máquina virtual e o cofre de chaves. Pode ser feito rapidamente ao eliminar o grupo de recursos ao qual pertencem:

az group delete -g myResourceGroup

Passos seguintes

API REST do Azure Key Vault