Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Introdução à biblioteca de clientes de segredo do Azure Key Vault para Python. Siga estas etapas para instalar o pacote e experimentar o código de exemplo para tarefas básicas. Ao usar o Key Vault para armazenar segredos, você evita armazenar segredos no código, o que aumenta a segurança do aplicativo.
Documentação de referência da API | Código-fonte da biblioteca | Pacote (Índice de Pacote do Python)
Pré-requisitos
- Uma assinatura do Azure – crie uma gratuitamente.
- Python 3.7+.
- CLI do Azure ou Azure PowerShell.
Este início rápido assume que você está executando Azure CLI ou Azure PowerShell em uma janela de terminal do Linux.
Configurar o ambiente local
Este início rápido está usando a biblioteca de identidades do Azure com a CLI do Azure ou o Azure PowerShell para autenticar o usuário nos Serviços do Azure. Os desenvolvedores também podem usar o Visual Studio ou o Visual Studio Code para autenticar as chamadas. Para saber mais, confira Autenticar o cliente na biblioteca de clientes da Identidade do Azure.
Entrar no Azure
Execute o comando
az login.az loginSe a CLI puder abrir o navegador padrão, ela o fará e carregará uma página de entrada do Azure.
Caso contrário, abra uma página de navegador em https://aka.ms/devicelogin e insira o código de autorização exibido no seu terminal.
Entre com suas credenciais de conta no navegador.
Instalar os pacotes
Em um terminal ou prompt de comando, crie uma pasta de projeto adequada e depois crie e ative um ambiente virtual do Python conforme descrito em Usar ambientes virtuais do Python.
Instale a biblioteca de identidade do Microsoft Entra:
pip install azure-identityInstale a biblioteca de segredos do Key Vault:
pip install azure-keyvault-secrets
Criar um grupo de recursos e um cofre de chaves
Use o comando
az group createpara criar um grupo de recursos:az group create --name myResourceGroup --location eastusVocê poderá alterar "eastus" para um local mais próximo de você, se preferir.
Use
az keyvault createpara criar o cofre de chaves:az keyvault create --name <your-unique-keyvault-name> --resource-group myResourceGroupSubstitua
<your-unique-keyvault-name>por um nome que seja único em todo o Azure. Normalmente, você usa o nome pessoal ou da empresa junto com outros números e identificadores.
Definir a variável de ambiente KEY_VAULT_NAME
Nosso script usará o valor atribuído à variável de ambiente KEY_VAULT_NAME como o nome do cofre de chaves. Portanto, você deve definir esse valor usando o seguinte comando:
export KEY_VAULT_NAME=<your-unique-keyvault-name>
Permitir acesso ao cofre de chaves
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 Officer" --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).
Criar o código de exemplo
A biblioteca do cliente de segredos do Azure Key Vault para Python permite gerenciar segredos. O exemplo de código a seguir demonstra como criar um cliente, definir um segredo, recuperar um segredo e excluir um segredo.
Crie um arquivo chamado kv_secrets.py que contenha esse código.
import os
from azure.keyvault.secrets import SecretClient
from azure.identity import DefaultAzureCredential
keyVaultName = os.environ["KEY_VAULT_NAME"]
KVUri = f"https://{keyVaultName}.vault.azure.net"
credential = DefaultAzureCredential()
client = SecretClient(vault_url=KVUri, credential=credential)
secretName = input("Input a name for your secret > ")
secretValue = input("Input a value for your secret > ")
print(f"Creating a secret in {keyVaultName} called '{secretName}' with the value '{secretValue}' ...")
client.set_secret(secretName, secretValue)
print(" done.")
print(f"Retrieving your secret from {keyVaultName}.")
retrieved_secret = client.get_secret(secretName)
print(f"Your secret is '{retrieved_secret.value}'.")
print(f"Deleting your secret from {keyVaultName} ...")
poller = client.begin_delete_secret(secretName)
deleted_secret = poller.result()
print(" done.")
Executar o código
Verifique se o código na seção anterior está em um arquivo chamado kv_secrets.py. Execute o código com o seguinte comando:
python kv_secrets.py
- Se você encontrar erros de permissões, verifique se executou o
az keyvault set-policyouSet-AzKeyVaultAccessPolicycomando. - Executar novamente o código com o mesmo nome de segredo pode produzir o erro "O <segredo> (conflito) está em um estado excluído, mas recuperável". Use um nome de segredo diferente.
Detalhes do código
Autenticar e criar um cliente
As solicitações do aplicativo para a maioria dos serviços do Azure precisam ser autorizadas. O uso da classe DefaultAzureCredential fornecida pela biblioteca de clientes da Identidade do Azure é a abordagem recomendada para implementar conexões sem senha com os serviços do Azure no código.
DefaultAzureCredential dá suporte a vários métodos de autenticação e determina qual método deve ser usado em tempo de execução. Essa abordagem permite que seu aplicativo use diferentes métodos de autenticação em ambientes diferentes (local versus produção) sem implementar código específico do ambiente.
Neste guia de início rápido, DefaultAzureCredential se autenticará no cofre de chaves usando as credenciais do usuário de desenvolvimento local conectado à CLI do Azure. Quando o aplicativo é implantado no Azure, o mesmo DefaultAzureCredential código pode descobrir e usar automaticamente uma identidade gerenciada atribuída a um Serviço de Aplicativo, Máquina Virtual ou outros serviços. Para obter mais informações, confira Visão geral da Identidade Gerenciada.
No código de exemplo, o nome do seu cofre de chaves é expandido usando o valor da variável KVUri, no formato: "https://<your-key-vault-name>.vault.azure.net".
credential = DefaultAzureCredential()
client = SecretClient(vault_url=KVUri, credential=credential)
Salvar um segredo
Depois de obter o objeto de cliente para o cofre de chaves, você pode armazenar um segredo usando o método set_secret:
client.set_secret(secretName, secretValue)
Chamar set_secret gera uma solicitação à API REST do Azure para o cofre de chaves.
Quando o Azure lida com a solicitação, ele autentica a identidade do chamador (a entidade de serviço) usando o objeto de credencial que você forneceu ao cliente.
Recuperar um segredo
Para ler um segredo do Key Vault, use o método get_secret:
retrieved_secret = client.get_secret(secretName)
O valor do segredo está contido em retrieved_secret.value.
Também é possível recuperar um segredo com o comando az keyvault secret show da CLI do Azure ou com o cmdlet Get-AzKeyVaultSecret do Azure PowerShell.
Excluir um segredo
Para excluir um segredo, use o método begin_delete_secret:
poller = client.begin_delete_secret(secretName)
deleted_secret = poller.result()
O método begin_delete_secret é assíncrono e retorna um objeto poller. Chamar o método result do instrumento de sondagem aguarda sua conclusão.
É possível verificar se o segredo foi removido com o comando az keyvault secret show da CLI do Azure ou com o cmdlet Get-AzKeyVaultSecret do Azure PowerShell.
Depois de excluído, um segredo permanece em um estado excluído, mas recuperável, por algum tempo. Se você executar o código novamente, use um nome de segredo diferente.
Limpar os recursos
Se você também quiser experimentar certificados e chaves, pode reutilizar o Key Vault criado neste artigo.
Caso contrário, quando tiver concluído os recursos criados neste artigo, use o seguinte comando para excluir o grupo de recursos e todos os recursos que ele contém:
az group delete --resource-group myResourceGroup
Próximas etapas
- Visão geral do Azure Key Vault
- Guia do desenvolvedor do Azure Key Vault
- Visão geral da segurança do Key Vault
- Autenticar com o Key Vault