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.
Ga aan de slag met de Azure Key Vault-certificaatclientbibliotheek voor Python. Volg deze stappen om het pakket te installeren en voorbeeldcode voor basistaken uit te proberen. Door Key Vault te gebruiken om certificaten op te slaan, vermijdt u het opslaan van certificaten in uw code, waardoor de beveiliging van uw app wordt verhoogd.
API-referentiedocumentatie | Bibliotheekbroncode | Pakket (Python Package Index)
Prerequisites
- Een Azure-abonnement: maak er gratis een.
- 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
In deze quickstart wordt de Azure Identity-bibliotheek met Azure CLI of Azure PowerShell gebruikt 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
loginopdracht uit.az loginAls 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
Maak in een terminal of opdrachtprompt een geschikte projectmap en maak en activeer vervolgens een virtuele Python-omgeving, zoals beschreven in virtuele Python-omgevingen gebruiken
Installeer de Microsoft Entra-identiteitsbibliotheek:
pip install azure.identityInstalleer de Key Vault-clientbibliotheek voor certificaten:
pip install azure-keyvault-certificates
Maak een resourcegroep en een sleutelkluis aan
Gebruik de
az group createopdracht om een resourcegroep te maken:az group create --name myResourceGroup --location eastusU kunt 'eastus' desgewenst wijzigen in een locatie die zich in de buurt van u bevindt.
Gebruik
az keyvault createom de sleutelkluis aan te maken:az keyvault create --name <your-unique-keyvault-name> --resource-group myResourceGroupVervang
<your-unique-keyvault-name>door een naam die in de volledige Azure-omgeving uniek is. Doorgaans gebruikt u uw persoonlijke of bedrijfsnaam samen met andere nummers 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>
Verleen toegang tot uw sleutelkluis
Om toegang te krijgen tot uw sleutelkluis via op rollen gebaseerd toegangsbeheer (RBAC), wijst u een rol toe aan uw "User Principal Name" (UPN) met de Azure CLI-opdracht az role assignment create.
az role assignment create --role "Key Vault Certificates 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 meestal de indeling van een e-mailadres (bijvoorbeeld username@domain.com).
De voorbeeldcode maken
Met de Clientbibliotheek voor Azure Key Vault-certificaten voor Python kunt u certificaten beheren. In het volgende codevoorbeeld ziet u hoe u een client maakt, een certificaat instelt, een certificaat ophaalt en een certificaat verwijdert.
Maak een bestand met de naam kv_certificates.py die deze code bevat.
import os
from azure.keyvault.certificates import CertificateClient, CertificatePolicy
from azure.identity import DefaultAzureCredential
keyVaultName = os.environ["KEY_VAULT_NAME"]
KVUri = "https://" + keyVaultName + ".vault.azure.net"
credential = DefaultAzureCredential()
client = CertificateClient(vault_url=KVUri, credential=credential)
certificateName = input("Input a name for your certificate > ")
print(f"Creating a certificate in {keyVaultName} called '{certificateName}' ...")
policy = CertificatePolicy.get_default()
poller = client.begin_create_certificate(certificate_name=certificateName, policy=policy)
certificate = poller.result()
print(" done.")
print(f"Retrieving your certificate from {keyVaultName}.")
retrieved_certificate = client.get_certificate(certificateName)
print(f"Certificate with name '{retrieved_certificate.name}' was found'.")
print(f"Deleting your certificate from {keyVaultName} ...")
poller = client.begin_delete_certificate(certificateName)
deleted_certificate = poller.result()
print(" done.")
De code uitvoeren
Zorg ervoor dat de code in de vorige sectie zich in een bestand bevindt met de naam kv_certificates.py. Voer vervolgens de code uit met de volgende opdracht:
python kv_certificates.py
- Als er autorisatiefouten optreden, controleert u of u de opdracht
az keyvault set-policyofSet-AzKeyVaultAccessPolicyhebt uitgevoerd. - Als u de code opnieuw uitvoert met dezelfde sleutelnaam, kan de fout '(Conflict) Certificate <name> is currently in a deleted but recoverable state.' optreden. Gebruik een andere sleutelnaam.
Code details
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 authenticeert DefaultAzureCredential met de referenties van de lokale ontwikkelgebruiker die is aangemeld bij de Azure CLI om toegang te krijgen tot de Key Vault. 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 naar de sleutelkluis-URI, in de indeling https://\<your-key-vault-name>.vault.azure.net.
credential = DefaultAzureCredential()
client = CertificateClient(vault_url=KVUri, credential=credential)
Een certificaat opslaan
Nadat u het clientobject voor de sleutelkluis hebt verkregen, kunt u een certificaat maken met behulp van de methode begin_create_certificate :
policy = CertificatePolicy.get_default()
poller = client.begin_create_certificate(certificate_name=certificateName, policy=policy)
certificate = poller.result()
Hier vereist het certificaat een beleid dat is verkregen met de methode CertificatePolicy.get_default .
Als u een begin_create_certificate methode aanroept, wordt een asynchrone aanroep naar de Azure REST API voor de sleutelkluis gegenereerd. De asynchrone aanroep retourneert een poller-object. Als u wilt wachten op het resultaat van de bewerking, roept u de result-methode van de poller aan.
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 certificaat ophalen
Als u een certificaat uit Key Vault wilt lezen, gebruikt u de methode get_certificate :
retrieved_certificate = client.get_certificate(certificateName)
U kunt ook controleren of het certificaat is ingesteld met de Azure CLI-opdracht az keyvault certificate show of de Azure PowerShell-cmdlet Get-AzKeyVaultCertificate
Een certificaat verwijderen
Als u een certificaat wilt verwijderen, gebruikt u de methode begin_delete_certificate :
poller = client.begin_delete_certificate(certificateName)
deleted_certificate = poller.result()
De begin_delete_certificate methode is asynchroon en retourneert een poller-object. Het aanroepen van de result-methode van de poller wacht totdat deze is voltooid.
U kunt controleren of het certificaat is verwijderd met de Azure CLI-opdracht az keyvault certificate show of de Azure PowerShell-cmdlet Get-AzKeyVaultCertificate.
Zodra het certificaat is verwijderd, blijft een certificaat gedurende een bepaalde tijd in een verwijderde maar herstelbare status. Als u de code opnieuw uitvoert, gebruikt u een andere certificaatnaam.
De hulpbronnen opschonen
Als u ook wilt experimenteren met geheimen en sleutels, kunt u de Sleutelkluis die in dit artikel is gemaakt, opnieuw gebruiken.
Als u klaar bent met de resources die in dit artikel zijn gemaakt, gebruikt u de volgende opdracht om de resourcegroep en alle bijbehorende resources te verwijderen:
az group delete --resource-group myResourceGroup