Quickstart: Clientbibliotheek voor Azure Key Vault-sleutels voor Python
Aan de slag met de Azure Key Vault-clientbibliotheek voor Python. Volg deze stappen om het pakket te installeren en voorbeeldcode voor basistaken uit te proberen. Door Key Vault te gebruiken om cryptografische sleutels op te slaan, voorkomt u dat dergelijke sleutels in uw code worden opgeslagen en is uw app dus beter beveiligd.
API-referentiedocumentatie | Broncode van de bibliotheek | Pakket (Python Package Index)
Vereisten
- Een Azure-abonnement (u kunt een gratis abonnement maken).
- Python 3.7+
- Azure-CLI
In deze quickstart wordt ervan uitgegaan dat u Azure CLI of Azure PowerShell uitvoert in een Linux-terminalvenster.
Uw lokale omgeving instellen
Deze quickstart maakt gebruik van de Azure Identity-bibliotheek met Azure CLI of Azure PowerShell om de gebruiker te verifiëren bij Azure-services. Ontwikkelaars kunnen ook Visual Studio of Visual Studio Code gebruiken om hun aanroepen te verifiëren. Zie De client verifiëren met de Azure Identity-clientbibliotheek voor meer informatie.
Aanmelden bij Azure
Voer de opdracht
login
uit.az login
Als de CLI uw standaardbrowser kan openen, gebeurt dat ook en wordt er een Azure-aanmeldingspagina geladen.
Als dat niet het geval is, opent u een browserpagina op https://aka.ms/devicelogin en voert u de autorisatiecode in die wordt weergegeven in de terminal.
Meldt u zich in de browser aan met uw accountreferenties.
De pakketten installeren
In een terminal- of opdrachtprompt maakt u een geschikte projectmap en maakt en activeert u een virtuele Python-omgeving, zoals wordt beschreven in Virtuele Python-omgevingen gebruiken.
Installeer de Microsoft Entra-identiteitsbibliotheek:
pip install azure-identity
Installeer de Key Vault-clientbibliotheek:
pip install azure-keyvault-keys
Een resourcegroep en sleutelkluis maken
Gebruik de opdracht
az group create
om een resourcegroep te maken:az group create --name myResourceGroup --location eastus
Als u liever de 'eastus' wijzigt in een locatie die dichterbij ligt, kan dat ook.
Gebruik
az keyvault create
om de sleutelkluis te maken:az keyvault create --name <your-unique-keyvault-name> --resource-group myResourceGroup
Vervang
<your-unique-keyvault-name>
door een naam die in de volledige Azure-omgeving uniek is. Normaal gesproken gebruikt u uw persoonlijke of bedrijfsnaam samen met andere getallen en id's.
De omgevingsvariabele KEY_VAULT_NAME instellen
Ons script gebruikt de waarde die is toegewezen aan de KEY_VAULT_NAME
omgevingsvariabele als de naam van de sleutelkluis. U moet deze waarde daarom instellen met de volgende opdracht:
export KEY_VAULT_NAME=<your-unique-keyvault-name>
Toegang verlenen tot uw sleutelkluis
Als u machtigingen wilt verkrijgen voor uw sleutelkluis via op rollen gebaseerd toegangsbeheer (RBAC), wijst u een rol toe aan uw UPN (User Principal Name) met behulp van de Azure CLI-opdracht az role assignment create.
az role assignment create --role "Key Vault Crypto Officer" --assignee "<upn>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"
Vervang <upn>, <subscription-id>, <resource-group-name> en <your-unique-keyvault-name> door uw werkelijke waarden. Uw UPN heeft doorgaans de indeling van een e-mailadres (bijvoorbeeld username@domain.com).
De voorbeeldcode maken
Met de Azure Key Vault-clientbibliotheek met sleutels voor Python kunt u cryptografische sleutels beheren. Het volgende codevoorbeeld laat zien hoe u een client maakt, een sleutel instelt, een sleutel ophaalt en een sleutel verwijdert.
Maak een bestand met de naam kv_keys.py dat deze code bevat.
import os
from azure.keyvault.keys import KeyClient
from azure.identity import DefaultAzureCredential
keyVaultName = os.environ["KEY_VAULT_NAME"]
KVUri = "https://" + keyVaultName + ".vault.azure.net"
credential = DefaultAzureCredential()
client = KeyClient(vault_url=KVUri, credential=credential)
keyName = input("Input a name for your key > ")
print(f"Creating a key in {keyVaultName} called '{keyName}' ...")
rsa_key = client.create_rsa_key(keyName, size=2048)
print(" done.")
print(f"Retrieving your key from {keyVaultName}.")
retrieved_key = client.get_key(keyName)
print(f"Key with name '{retrieved_key.name}' was found.")
print(f"Deleting your key from {keyVaultName} ...")
poller = client.begin_delete_key(keyName)
deleted_key = poller.result()
print(" done.")
De code uitvoeren
Zorg ervoor dat de code in de vorige sectie in een bestand met de naam kv_keys.py staat. Voer de code vervolgens uit met de volgende opdracht:
python kv_keys.py
Als u de code opnieuw uitvoert met dezelfde sleutelnaam, kan de fout '(Conflict) Sleutelnaam <> zich momenteel in een verwijderde maar herstelbare status bevinden. Gebruik een andere sleutelnaam.
Codedetails
Een client verifiëren en maken
Toepassingsaanvragen voor de meeste Azure-services moeten worden geautoriseerd. Het gebruik van de DefaultAzureCredential-klasse die wordt geleverd door de Azure Identity-clientbibliotheek is de aanbevolen methode voor het implementeren van verbindingen zonder wachtwoord met Azure-services in uw code. DefaultAzureCredential
ondersteunt meerdere verificatiemethoden en bepaalt welke methode tijdens runtime moet worden gebruikt. Met deze aanpak kan uw app verschillende verificatiemethoden gebruiken in verschillende omgevingen (lokaal versus productie) zonder omgevingsspecifieke code te implementeren.
In deze quickstart DefaultAzureCredential
verifieert u zich bij de sleutelkluis met behulp van de referenties van de lokale ontwikkelgebruiker die is aangemeld bij de Azure CLI. Wanneer de toepassing in Azure wordt geïmplementeerd, kan dezelfde DefaultAzureCredential
code automatisch een beheerde identiteit detecteren en gebruiken die is toegewezen aan een App Service, virtuele machine of andere services. Zie Overzicht van beheerde identiteiten voor meer informatie.
In de voorbeeldcode wordt de naam van uw sleutelkluis uitgebreid met behulp van de waarde van de KVUri
variabele, in de notatie: 'https://< your-key-vault-name.vault.azure.net>'.
credential = DefaultAzureCredential()
client = KeyClient(vault_url=KVUri, credential=credential)
Een sleutel opslaan
Zodra u het clientobject voor de sleutelkluis hebt opgehaald, kunt u een sleutel opslaan met behulp van de methode create_rsa_key:
rsa_key = client.create_rsa_key(keyName, size=2048)
U kunt ook create_key of create_ec_key gebruiken.
Wanneer een create
-methode wordt aangeroepen, wordt er een aanroep bij de Azure REST-API voor de sleutelkluis gegenereerd.
Wanneer Azure de aanvraag afhandelt, wordt de identiteit van de beller (de service-principal) geverifieerd met behulp van het referentieobject dat u aan de client hebt opgegeven.
Een sleutel ophalen
Om een sleutel uit Key Vault te lezen, gebruikt u de methode get_key:
retrieved_key = client.get_key(keyName)
U kunt ook controleren of de sleutel is ingesteld met de Azure CLI-opdracht az keyvault key show of de Azure PowerShell-cmdlet Get-AzKeyVaultKey.
Een sleutel verwijderen
Om een sleutel te verwijderen, gebruikt u de methode begin_delete_key:
poller = client.begin_delete_key(keyName)
deleted_key = poller.result()
De methode begin_delete_key
is asynchroon en retourneert een pollerobject. Wanneer de methode result
van de poller wordt aangeroepen, wordt er gewacht totdat deze voltooid is.
U kunt controleren of de sleutel wordt verwijderd met de Azure CLI-opdracht az keyvault key show of de Azure PowerShell-cmdlet Get-AzKeyVaultKey.
Zodra een sleutel is verwijderd, heeft deze nog een tijdje de status Verwijderd maar herstelbaar. Gebruik een andere sleutelnaam als u de code nogmaals uitvoert.
Resources opschonen
Als u ook met certificaten en geheimen wilt experimenteren, kunt u de Key Vault hergebruiken die in dit artikel is gemaakt.
Anders, wanneer u klaar bent met de resources die in dit artikel zijn gemaakt, gebruikt u de volgende opdracht om de resourcegroep en alle resources daarin te verwijderen:
az group delete --resource-group myResourceGroup