Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 - maak er gratis een aan.
- 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 voor meer informatie Client verifiëren met de Azure Identity-clientbibliotheek.
Aanmelden bij Azure
- Azure CLI
- Azure PowerShell
Voer de
loginopdracht uit.az loginAls de CLI uw standaardbrowser kan openen, gebeurt dat ook en wordt er een Azure-aanmeldingspagina geladen.
Anders opent u een browserpagina op https://aka.ms/devicelogin en voert u de autorisatiecode in die wordt weergegeven in uw terminal.
Meldt u zich in de browser aan met uw accountreferenties.
De pakketten installeren
In een terminalvenster of opdrachtprompt maakt u een geschikte projectmap aan, en vervolgens maakt en activeert u een virtuele Python-omgeving zoals beschreven in Virtuele Python-Omgevingen Gebruiken.
Installeer de Microsoft Entra-identiteitsbibliotheek:
pip install azure-identityInstalleer de Key Vault-sleutelclientbibliotheek:
pip install azure-keyvault-keys
Maak een resourcegroep en een sleutelkluis aan
- Azure CLI
- Azure PowerShell
Gebruik de
az group createopdracht om een resourcegroep te maken:az group create --name <resource-group> --location eastusU kunt 'eastus' wijzigen in een locatie die dichterbij is, als u dat liever heeft.
Gebruik
az keyvault createom de sleutelkluis te maken:az keyvault create --name <vault-name> --resource-group <resource-group> --enable-rbac-authorization true --enable-purge-protection trueVervang
<vault-name>door een naam die uniek is binnen Azure. 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=<vault-name>
Toegang verlenen tot uw sleutelkluis
Als u machtigingen wilt verkrijgen voor uw sleutelkluis via rolgebaseerd toegangsbeheer (RBAC), wijst u een rol toe aan uw gebruikershoofdnaam (UPN) 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 optreden: '(Conflict) sleutel <name> bevindt zich momenteel in een verwijderde maar herstelbare toestand.' Gebruik een andere sleutelnaam.
Codegegevens
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 wachtwoordloze verbindingen met Azure-services in je 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 authenticeert DefaultAzureCredential zich bij de sleutelkluis met behulp van de referenties van de lokale ontwikkelgebruiker die is aangemeld bij de Azure CLI. Wanneer de toepassing naar Azure wordt uitgerold, kan dezelfde code automatisch een beheerde identiteit detecteren en gebruiken die is toegewezen aan een App Service, een virtuele machine, of andere diensten. Voor meer informatie, zie Overzicht van beheerde identiteiten.
In de voorbeeldcode wordt de naam van uw sleutelkluis uitgebreid met behulp van de waarde van de KVUri variabele, in de notatie: https://<vault-name>.vault.azure.net.
credential = DefaultAzureCredential()
client = KeyClient(vault_url=KVUri, credential=credential)
Een sleutel opslaan
Zodra u het clientobject voor de key vault 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 naar 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 get_key methode:
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 begin_delete_key-methode:
poller = client.begin_delete_key(keyName)
deleted_key = poller.result()
De begin_delete_key-methode is asynchroon en retourneert een pollerobject. Door de methode result van de poller aan te roepen, wordt gewacht tot de voltooiing is bereikt.
Controleer of de sleutel is 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 in dit artikel gemaakte Key Vault hergebruiken.
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:
- Azure CLI
- Azure PowerShell
az group delete --resource-group <resource-group>
Volgende stappen
- Overzicht van Azure Key Vault
- Veilige toegang tot een sleutelkluis
- Aanbevolen procedures voor sleutels voor beveiliging
- RBAC-handleiding
- Gids voor Azure Key Vault-ontwikkelaars
- Authenticeren met Key Vault