Quickstart: Azure Key Vault-certificaatclientbibliotheek voor Python

Ga aan de slag met de Azure Key Vault-clientbibliotheek met certificaten 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, voorkomt u dat certificaten in uw code worden opgeslagen en is uw app dus beter beveiligd.

API-referentiedocumentatie | Broncode van de bibliotheek | Pakket (Python Package Index)

Vereisten

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

  1. 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.

  2. Meldt u zich in de browser aan met uw accountreferenties.

De pakketten installeren

  1. 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

  2. Installeer de Microsoft Entra-identiteitsbibliotheek:

    pip install azure.identity
    
  3. Installeer de Key Vault-clientbibliotheek met certificaten:

    pip install azure-keyvault-certificates
    

Een resourcegroep en sleutelkluis maken

  1. 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.

  2. 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 uw toepassingsmachtigingen wilt verlenen aan uw sleutelkluis via op rollen gebaseerd toegangsbeheer (RBAC), wijst u een rol toe met behulp van de Azure CLI-opdracht az role assignment create.

az role assignment create --role "Key Vault Secrets User" --assignee "<app-id>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"

Vervang <app-id>, <subscription-id>, <resource-group-name> en <your-unique-keyvault-name> door uw werkelijke waarden. <app-id> is de toepassings-id (client) van uw geregistreerde toepassing in Azure AD.

De voorbeeldcode maken

Met de Azure Key Vault-clientbibliotheek met certifcaten voor Python kunt u certificaten beheren. In de onderstaande codevoorbeelden ziet u hoe u een client maakt en een certificaat instelt, ophaalt en verwijdert.

Maak een bestand met de naam kv_certificates.py dat 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 in een bestand met de naam kv_certificates.py staat. Voer de code vervolgens uit met de volgende opdracht:

python kv_certificates.py
  • Als er machtigingsfouten optreden, controleert u of u de az keyvault set-policy opdracht hebt Set-AzKeyVaultAccessPolicyuitgevoerd.
  • Als u de code opnieuw uitvoert met dezelfde sleutelnaam, kan de fout '(Conflict) Certificate name is currently in a deleted but recoverable state' ((Conflict) Certificate <name> is currently in a deleted but recoverable state. 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 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

Zodra u het clientobject voor de sleutelkluis hebt verkregen, kunt u een certificaat maken met behulp van de begin_create_certificate-methode:

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 behulp van de CertificatePolicy.get_default-methode.

Wanneer een begin_create_certificate-methode wordt aangeroepen, wordt er een asynchrone aanroep bij de Azure REST-API voor de sleutelkluis gegenereerd. De asynchrone aanroep retourneert een poller-object. Roep de result-methode van de poller aan als u op het resultaat van de bewerking wilt wachten.

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

Gebruik de get_certificate-methode voor het lezen van een certificaat uit Key Vault:

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

Gebruik de begin_delete_certificate-methode om een certificaat te verwijderen:

poller = client.begin_delete_certificate(certificateName)
deleted_certificate = poller.result()

De methode begin_delete_certificate 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 het certificaat is verwijderd met de Azure CLI-opdracht az keyvault certificate show of de Azure PowerShell-cmdlet Get-AzKeyVaultCertificate.

Zodra een certificaat is verwijderd, heeft dit nog een tijdje de status Verwijderd maar herstelbaar. Gebruik een andere certificaatnaam als u de code nogmaals uitvoert.

Resources opschonen

Als u ook met geheimen en sleutels 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

Volgende stappen