Delen via


Quickstart: Azure Key Vault-certificaatclientbibliotheek voor Python

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

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 login opdracht 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. 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

  2. Installeer de Microsoft Entra-identiteitsbibliotheek:

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

    pip install azure-keyvault-certificates
    

Maak een resourcegroep en een sleutelkluis aan

  1. Gebruik de az group create opdracht om een resourcegroep te maken:

    az group create --name myResourceGroup --location eastus
    

    U kunt 'eastus' desgewenst wijzigen in een locatie die zich in de buurt van u bevindt.

  2. Gebruik az keyvault create om de sleutelkluis aan 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. 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-policy of Set-AzKeyVaultAccessPolicy hebt 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

Volgende stappen