Schnellstart: Azure Key Vault-Zertifikatclientbibliothek für Python

Enthält Informationen zu den ersten Schritten mit der Azure Key Vault-Zertifikatclientbibliothek für Python. Führen Sie die nachfolgenden Schritte aus, um das Paket zu installieren und den Beispielcode für grundlegende Aufgaben zu testen. Wenn Sie Key Vault zum Speichern von Zertifikaten verwenden, vermeiden Sie das Speichern von Zertifikaten im Code, was die Sicherheit Ihrer App erhöht.

API-Referenzdokumentation | Quellcode der Bibliothek | Paket (Python-Paketindex)

Voraussetzungen

In diesem Schnellstart wird davon ausgegangen, dass Sie die Azure CLI oder Azure PowerShell in einem Linux-Terminalfenster ausführen.

Einrichten Ihrer lokalen Umgebung

In diesem Schnellstart wird die Azure Identity-Bibliothek mit der Azure-Befehlszeilenschnittstelle oder Azure PowerShell verwendet, um Benutzer*innen bei Azure-Diensten zu authentifizieren. Entwickler können auch Visual Studio oder Visual Studio Code verwenden, um ihre Aufrufe zu authentifizieren. Weitere Informationen finden Sie unter Authentifizieren des Clients mit der Azure Identity-Clientbibliothek.

Anmelden bei Azure

  1. Führen Sie den Befehl login aus.

    az login
    

    Die CLI öffnet Ihren Standardbrowser, sofern sie dazu in der Lage ist, und lädt eine Azure-Anmeldeseite.

    Öffnen Sie andernfalls die Browserseite https://aka.ms/devicelogin, und geben Sie den in Ihrem Terminal angezeigten Autorisierungscode ein.

  2. Melden Sie sich im Browser mit Ihren Anmeldeinformationen an.

Installieren der Pakete

  1. Erstellen Sie in einem Terminal oder an einer Eingabeaufforderung einen geeigneten Projektordner, und erstellen und aktivieren Sie dann eine virtuelle Python-Umgebung, wie unter Verwenden von virtuellen Python-Umgebungen beschrieben.

  2. Installieren Sie die Microsoft Entra Identity-Bibliothek:

    pip install azure.identity
    
  3. Installieren Sie die Key Vault-Zertifikatclientbibliothek:

    pip install azure-keyvault-certificates
    

Erstellen einer Ressourcengruppe und eines Schlüsseltresors

  1. Verwenden Sie den Befehl az group create, um eine Ressourcengruppe zu erstellen:

    az group create --name myResourceGroup --location eastus
    

    Falls gewünscht, können Sie „eastus“ in eine Region ändern, die näher an Ihrem Standort liegt.

  2. Verwenden Sie az keyvault create, um den Schlüsseltresor zu erstellen:

    az keyvault create --name <your-unique-keyvault-name> --resource-group myResourceGroup
    

    Ersetzen Sie <your-unique-keyvault-name> durch einen Namen, der innerhalb von Azure eindeutig ist. In der Regel verwenden Sie Ihren persönlichen oder Firmennamen zusammen mit Ziffern und anderen Bezeichnern.

Festlegen der Umgebungsvariablen KEY_VAULT_NAME

Unser Skript verwendet den der Umgebungsvariablen KEY_VAULT_NAME zugewiesenen Wert als Namen des Schlüsseltresors. Sie müssen diesen Wert daher mit dem folgenden Befehl festlegen:

export KEY_VAULT_NAME=<your-unique-keyvault-name>

Gewähren des Zugriffs auf Ihren Schlüsseltresor

Um Ihrem Benutzerprinzipalnamen (User Principal Name, UPN) über die rollenbasierte Zugriffssteuerung (Role-Based Access Control, RBAC) Berechtigungen für Ihren Schlüsseltresor zu gewähren, weisen Sie ihm mithilfe des Azure CLI-Befehls az role assignment create eine Rolle zu.

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

Ersetzen Sie <upn>, <subscription-id>, <resource-group-name> und <your-unique-keyvault-name> durch Ihre tatsächlichen Werte. Ihr Benutzerprinzipalname (UPN) hat in der Regel das Format einer E-Mail-Adresse (z. B. username@domain.com).

Erstellen des Beispielcodes

Mit der Azure Key Vault-Zertifikatclientbibliothek für Python können Sie Zertifikate verwalten. Im folgenden Codebeispiel wird veranschaulicht, wie Sie einen Client erstellen und ein Zertifikat festlegen, abrufen und löschen.

Erstellen Sie eine Datei mit dem Namen kv_certificates.py, die diesen Code enthält.

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.")

Ausführen des Codes

Stellen Sie sicher, dass sich der Code aus dem vorherigen Abschnitt in einer Datei namens kv_certificates.py befindet. Führen Sie den Code dann mithilfe des folgenden Befehls aus:

python kv_certificates.py
  • Wenn Berechtigungsfehler auftreten, stellen Sie sicher, dass Sie den Befehl ,az keyvault set-policy oder Set-AzKeyVaultAccessPolicy ausgeführt haben.
  • Wenn Sie den Code mit demselben Schlüsselnamen erneut ausführen, kann die Fehlermeldung „Konflikt: Das Zertifikat <Name> befindet sich zurzeit in einem gelöschten, aber wiederherstellbaren Zustand“ angezeigt werden. Verwenden Sie daher einen anderen Schlüsselnamen.

Codedetails

Authentifizieren und Erstellen eines Clients

Anwendungsanforderungen an die meisten Azure-Dienste müssen autorisiert werden. Die Verwendung der von der Azure Identity-Clientbibliothek bereitgestellten Klasse DefaultAzureCredential ist der empfohlene Ansatz zum Implementieren von kennwortlosen Verbindungen mit Azure-Diensten in Ihrem Code. DefaultAzureCredential unterstützt mehrere Authentifizierungsmethoden und bestimmt, welche Methode zur Laufzeit verwendet werden soll. Bei diesem Ansatz kann Ihre App unterschiedliche Authentifizierungsmethoden in verschiedenen Umgebungen (lokal gegenüber Produktion) verwenden, ohne umgebungsspezifischen Code zu implementieren.

In dieser Schnellstartanleitung authentifiziert sich DefaultAzureCredential mit den Anmeldeinformationen des lokalen Entwicklungsbenutzers, der bei der Azure CLI angemeldet ist, beim Schlüsseltresor. Wenn die Anwendung in Azure bereitgestellt wird, kann derselbe DefaultAzureCredential-Code automatisch eine verwaltete Identität ermitteln und verwenden, die App Service, einem virtuellen Computer oder anderen Diensten zugewiesen ist. Weitere Informationen finden Sie in der Übersicht zu verwalteten Identitäten.

Im Beispielcode wird der Name Ihres Schlüsseltresors in einen Schlüsseltresor-URI im Format https://\<your-key-vault-name>.vault.azure.net erweitert.

credential = DefaultAzureCredential()
client = CertificateClient(vault_url=KVUri, credential=credential)

Speichern eines Zertifikats

Nachdem Sie das Clientobjekt für den Schlüsseltresor abgerufen haben, können Sie mithilfe der begin_create_certificate-Methode ein Zertifikat erstellen:

policy = CertificatePolicy.get_default()
poller = client.begin_create_certificate(certificate_name=certificateName, policy=policy)
certificate = poller.result()

Hier ist für das Zertifikat eine Richtlinie erforderlich, die mit der CertificatePolicy.get_default-Methode abgerufen wird.

Beim Aufrufen einer begin_create_certificate-Methode wird ein asynchroner Aufruf der Azure-REST-API für den Schlüsseltresor generiert. Der asynchrone Aufruf gibt ein Pollerobjekt zurück. Um auf das Ergebnis des Vorgangs zu warten, rufen Sie die result-Methode des Pollers auf.

Wenn Azure die Anforderung bearbeitet, authentifiziert Azure die Identität des Aufrufers (Dienstprinzipal) mithilfe des Anmeldeinformationen-Objekts, das Sie für den Client bereitgestellt haben.

Abrufen eines Zertifikats

Um ein Zertifikat aus Key Vault zu lesen, verwenden Sie die get_certificate-Methode:

retrieved_certificate = client.get_certificate(certificateName)

Sie können auch mit dem Azure CLI-Befehl az keyvault certificate show oder dem Azure PowerShell-Cmdlet Get-AzKeyVaultCertificate überprüfen, ob das Zertifikat festgelegt wurde.

Löschen eines Zertifikats

Um ein Zertifikat zu löschen, verwenden Sie die begin_delete_certificate-Methode:

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

Die begin_delete_certificate-Methode ist asynchron und gibt ein Pollerobjekt zurück. Wenn die result-Methode des Pollers aufgerufen wird, wird auf ihren Abschluss gewartet.

Sie können mit dem Azure CLI-Befehl az keyvault certificate show oder dem Azure PowerShell-Cmdlet Get-AzKeyVaultCertificate überprüfen, ob das Zertifikat gelöscht wurde.

Nach dem Löschen verbleibt ein Zertifikat für einen bestimmten Zeitraum in einem gelöschten, aber wiederherstellbaren Zustand. Wenn Sie den Code erneut ausführen, verwenden Sie einen anderen Zertifikatnamen.

Bereinigen von Ressourcen

Wenn Sie auch mit Geheimnissen und Schlüssel experimentieren möchten, können Sie den in diesem Artikel erstellten Key Vault wiederverwenden.

Verwenden Sie andernfalls den folgenden Befehl, um die Ressourcengruppe und alle darin enthaltenen Ressourcen zu löschen, wenn Sie mit die in diesem Artikel erstellten Ressourcen nicht mehr benötigen:

az group delete --resource-group myResourceGroup

Nächste Schritte