Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Introduzione alla libreria client dei segreti di Azure Key Vault per Python. Seguire questi passaggi per installare il pacchetto e provare il codice di esempio per le attività di base. Usando Key Vault per l'archiviazione dei segreti si evita di archiviarli nel codice, aumentando la sicurezza dell'app.
Documentazione di riferimento delle API | Codice sorgente della libreria | Pacchetto (Indice dei pacchetti Python)
Prerequisiti
- Una sottoscrizione di Azure: creare un account gratuitamente.
- Python 3.7+
- Interfaccia della riga di comando di Azure o Azure PowerShell.
Questo avvio rapido presuppone che stai utilizzando Azure CLI o Azure PowerShell in un terminale Linux.
Configurare l'ambiente locale
Questa guida di avvio rapido usa la libreria di identità di Azure con l'interfaccia della riga di comando di Azure o Azure PowerShell per autenticare l'utente nei servizi di Azure. Gli sviluppatori possono anche usare Visual Studio o Visual Studio Code per autenticare le loro chiamate; per altre informazioni, vedere Autenticare il client con la libreria client Azure Identity.
Accedere ad Azure
Eseguire il comando
az login
.az login
Se l'interfaccia della riga di comando può aprire il browser predefinito, eseguirà questa operazione e caricherà una pagina di accesso di Azure.
In caso contrario, aprire una pagina del browser all'indirizzo https://aka.ms/devicelogin e immettere il codice di autorizzazione visualizzato nel terminale.
Accedere con le credenziali dell'account nel browser.
Installare i pacchetti
In un terminale o un prompt dei comandi creare una cartella di progetto appropriata e quindi creare e attivare un ambiente virtuale Python come descritto in Usare ambienti virtuali Python.
Installare la libreria di identità di Microsoft Entra:
pip install azure-identity
Installare la libreria di segreti di Key Vault:
pip install azure-keyvault-secrets
Creare un gruppo di risorse e un archivio chiavi
Usare il comando
az group create
per creare un gruppo di risorse:az group create --name myResourceGroup --location eastus
È possibile sostituire "eastus" con una località più vicina, se si preferisce.
Usare
az keyvault create
per creare l'insieme di credenziali delle chiavi:az keyvault create --name <your-unique-keyvault-name> --resource-group myResourceGroup
Sostituisci
<your-unique-keyvault-name>
con un nome univoco in tutto Azure. In genere si usa il nome personale o dell'azienda insieme ad altri numeri e identificatori.
Impostare la variabile di ambiente KEY_VAULT_NAME
Lo script userà il valore assegnato alla variabile di ambiente KEY_VAULT_NAME
come nome dell'istanza di Key Vault. È quindi necessario impostare questo valore usando il comando seguente:
export KEY_VAULT_NAME=<your-unique-keyvault-name>
Consenti l'accesso al caveau delle chiavi
Per ottenere le autorizzazioni per l’insieme di credenziali delle chiavi tramite il controllo degli accessi in base al ruolo (RBAC), assegnare un ruolo all’UPN (User Principal Name) usando il comando dell’interfaccia della riga di comando di 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>"
Sostituire <upn>, <subscription-id>, <resource-group-name> e <your-unique-keyvault-name> con i valori effettivi. L'UPN in genere sarà nel formato di un indirizzo e-mail (ad esempio, username@domain.com).
Creare il codice di esempio
La libreria client dei segreti di Azure Key Vault per Python consente di gestire i segreti. L'esempio di codice seguente illustra come creare un client e come impostare, recuperare ed eliminare un segreto.
Creare un file denominato kv_secrets.py che contiene questo codice.
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.")
Eseguire il codice
Assicurarsi che il codice della sezione precedente sia incluso in un file denominato kv_secrets.py. Eseguire quindi il codice con il comando seguente:
python kv_secrets.py
- Se si verificano errori relativi alle autorizzazioni, assicurarsi di aver eseguito il
az keyvault set-policy
oSet-AzKeyVaultAccessPolicy
comando. - Se il codice viene eseguito di nuovo con lo stesso nome del segreto si potrebbe verificare un errore con un messaggio analogo a "(Conflitto) Il segreto <nome> si trova attualmente in uno stato eliminato ma recuperabile". Utilizzare un nome di segreto diverso.
Dettagli del codice
Autenticare e creare un client
Le richieste dell'applicazione per la maggior parte dei servizi di Azure devono essere autorizzate. L'uso della classe DefaultAzureCredential fornita dalla Azure Identity client library è l'approccio consigliato per l'implementazione di connessioni passwordless ai servizi di Azure nel codice. DefaultAzureCredential
supporta più metodi di autenticazione e determina quale metodo usare in fase di esecuzione. Questo approccio consente all'app di usare metodi di autenticazione diversi in ambienti diversi (locale e di produzione) senza implementare codice specifico dell'ambiente.
In questo avvio rapido, DefaultAzureCredential
esegue l'autenticazione nell’insieme di credenziali delle chiavi usando le credenziali dell'utente di sviluppo locale connesso all'interfaccia della riga di comando di Azure. Quando l'applicazione viene distribuita in Azure, lo stesso codice DefaultAzureCredential
può individuare e utilizzare automaticamente un'identità gestita assegnata a un servizio app, a una macchina virtuale o ad altri servizi. Per ulteriori informazioni, vedere Panoramica delle identità gestite.
Nel codice di esempio, il nome dell'insieme di credenziali delle chiavi viene espanso usando il valore della variabile KVUri
, nel formato " https://<nome dell'insieme di credenziali delle chiavi>.vault.azure.net".
credential = DefaultAzureCredential()
client = SecretClient(vault_url=KVUri, credential=credential)
Salvare un segreto
Una volta ottenuto l'oggetto client per l'insieme di credenziali delle chiavi, è possibile archiviare un segreto usando il metodo set_secret:
client.set_secret(secretName, secretValue)
La chiamata a set_secret
genera una chiamata all'API REST di Azure per l'insieme di credenziali delle chiavi.
Quando Azure gestisce la richiesta, autentica l'identità del chiamante (il principale del servizio) utilizzando l'oggetto delle credenziali che hai fornito al client.
Recuperare un segreto
Per leggere un segreto da Key Vault, usare il metodo get_secret:
retrieved_secret = client.get_secret(secretName)
Il valore segreto è contenuto in retrieved_secret.value
.
È anche possibile recuperare un segreto con il comando Azure CLI az keyvault secret show o con il cmdlet Azure PowerShell Get-AzKeyVaultSecret.
consente di eliminare un segreto
Per eliminare un segreto, utilizzare il metodo begin_delete_secret:
poller = client.begin_delete_secret(secretName)
deleted_secret = poller.result()
Il begin_delete_secret
metodo è asincrono e restituisce un oggetto poller. La chiamata al metodo result
dell'oggetto poller attende il relativo completamento.
È possibile verificare che il segreto sia stato rimosso con il comando Azure CLI az keyvault secret show o con il cmdlet di Azure PowerShell Get-AzKeyVaultSecret.
Una volta eliminato, un segreto rimane in uno stato eliminato ma recuperabile per un periodo di tempo. Se si esegue di nuovo il codice, usare un nome di segreto diverso.
Pulire le risorse
Se vuoi anche sperimentare con certificati e chiavi, puoi riutilizzare il Key Vault creato in questo articolo.
In caso contrario, dopo aver finito di usare le risorse create nell'articolo, eseguire il comando seguente per eliminare il gruppo di risorse e tutte le risorse contenute al suo interno:
- Interfaccia della riga di comando di Azure
- Azure PowerShell
az group delete --resource-group myResourceGroup
Passaggi successivi
- Panoramica dell'insieme di credenziali delle chiavi di Azure
- Guida per gli sviluppatori per Azure Key Vault
- Panoramica della sicurezza di Key Vault
- Autenticarsi con Key Vault