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