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.
Azure Key Vault consente di proteggere chiavi, segreti e certificati, ad esempio chiavi API e stringhe di connessione del database.
In questa esercitazione si configura un'applicazione Python per leggere le informazioni da Azure Key Vault usando le identità gestite per le risorse di Azure. Scopri come:
- Creare un insieme di credenziali delle chiavi
- Archiviare un segreto in Key Vault
- Creare una macchina virtuale Linux Azure
- Abilitare un'identità gestita per la macchina virtuale
- Concedere le autorizzazioni necessarie per l'applicazione console per leggere i dati da Key Vault
- Recuperare un segreto da Key Vault
Prima di iniziare, leggere Key Vault concetti di base.
Se non si ha una sottoscrizione Azure, creare un account free.
Prerequisiti
Per Windows, Mac e Linux:
- Git
- Per questa esercitazione è necessario eseguire il interfaccia della riga di comando di Azure in locale. È necessario avere una versione recente del interfaccia della riga di comando di Azure installato. Eseguire
az --versionper trovare la versione. Se è necessario installare o aggiornare l'interfaccia della riga di comando, vedere Installare interfaccia della riga di comando di Azure.
Accedere a Azure
Per accedere a Azure usando il interfaccia della riga di comando di Azure, immettere:
az login
Creare un gruppo di risorse e un insieme di credenziali delle chiavi
Questa guida introduttiva usa un insieme di credenziali chiave di Azure precreato. È possibile creare un insieme di credenziali delle chiavi seguendo i passaggi di queste guide introduttive:
- interfaccia della riga di comando di Azure guida introduttiva
- Avvio rapido di Azure PowerShell
- Avvio rapido Azure portal
In alternativa, è possibile eseguire questi comandi interfaccia della riga di comando di Azure o Azure PowerShell.
Importante
Ogni insieme di credenziali delle chiavi deve avere un nome univoco. Sostituire <vault-name> con il nome del Key Vault negli esempi seguenti.
az group create --name "myResourceGroup" -l "EastUS"
az keyvault create --name "<vault-name>" -g "myResourceGroup" --enable-rbac-authorization true
Popolare l'insieme di credenziali delle chiavi con un segreto
Creare un segreto denominato mySecret, con un valore Success!. Un segreto potrebbe essere una password, un stringa di connessione SQL o qualsiasi altra informazione che è necessario mantenere sia sicura che disponibile per l'applicazione.
Per aggiungere un segreto al tuo Key Vault appena creato, usa il seguente comando:
az keyvault secret set --vault-name "<vault-name>" --name "mySecret" --value "Success!"
Creare una macchina virtuale
Creare una VM denominata myVM usando uno dei metodi seguenti:
| Linux | Windows |
|---|---|
| interfaccia della riga di comando di Azure | interfaccia della riga di comando di Azure |
| PowerShell | PowerShell |
| portale Azure | Il portale di Azure |
Per creare una macchina virtuale Linux usando il interfaccia della riga di comando di Azure, usare il comando az vm create. L'esempio seguente aggiunge un account utente denominato azureuser. Il parametro --generate-ssh-keys viene usato per generare automaticamente una chiave SSH e inserito nella posizione predefinita della chiave (~/.ssh).
az vm create \
--resource-group <resource-group> \
--name myVM \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys
Prendere nota del valore di publicIpAddress nell'output.
Assegnare un'identità alla macchina virtuale
Creare un'identità assegnata dal sistema per la macchina virtuale usando il comando interfaccia della riga di comando di Azure az vm identity assign:
az vm identity assign --name "myVM" --resource-group "<resource-group>"
Annotare l'identità assegnata dal sistema che viene visualizzata nel codice seguente. L'output del comando precedente sarà:
{
"systemAssignedIdentity": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"userAssignedIdentities": {}
}
Assegnare autorizzazioni per l'identità della macchina virtuale
Per ottenere le autorizzazioni per l'archivio chiavi tramite Role-Based Controllo di accesso (RBAC), è necessario assegnare un ruolo al "User Principal Name" (UPN) usando il comando interfaccia della riga di comando di 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>"
Sostituire <upn>, <subscription-id>e <vault-name> con i valori effettivi. Se è stato usato un nome di gruppo di risorse diverso, sostituire anche "myResourceGroup". L'UPN in genere sarà nel formato di un indirizzo e-mail (ad esempio, username@domain.com).
Accedere alla macchina virtuale
Per accedere alla macchina virtuale, seguire le istruzioni riportate in Connect e accedere a una macchina virtuale Azure che esegue Linux o Connettersi e accedere a una macchina virtuale Azure che esegue Windows.
Per accedere a una macchina virtuale Linux, è possibile usare il comando ssh con il <public-ip-address> specificato nel passaggio Creare una macchina virtuale :
ssh azureuser@<public-ip-address>
Installare le librerie Python sulla macchina virtuale
Nella macchina virtuale installare le due librerie di Python che verranno usati nello script di Python: azure-keyvault-secrets e azure-identity.
In una macchina virtuale Linux, ad esempio, è possibile installarle usando pip3:
pip3 install azure-keyvault-secrets
pip3 install azure-identity
Creare e modificare lo script di esempio Python
Nella macchina virtuale creare un file di Python denominato sample.py. Modifica il file affinché contenga il codice seguente, sostituendo <vault-name> con il nome del tuo Key Vault.
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}'")
Eseguire l'app di esempio Python
Infine, eseguire sample.py. Se tutto è andato bene, dovrebbe restituire il valore del tuo segreto:
python3 sample.py
The value of secret 'mySecret' in '<vault-name>' is: 'Success!'
Pulire le risorse
Quando non servono più, è possibile eliminare la macchina virtuale e l'insieme di credenziali delle chiavi. È possibile eseguire rapidamente eliminando il gruppo di risorse a cui appartengono:
az group delete -g "myResourceGroup"
Passaggi successivi
API REST Azure Key Vault