Tutorial: Verwenden von Azure Key Vault mit einem virtuellen Windows in Python

Azure Key Vault unterstützt Sie beim Schützen von Schlüsseln, Geheimnissen und Zertifikaten wie API-Schlüsseln und Datenbank-Verbindungszeichenfolgen.

In diesem Tutorial richten Sie eine Python-Anwendung ein, die unter Verwendung von verwalteten Identitäten für Azure-Ressourcen Informationen aus Azure Key Vault liest. Folgendes wird vermittelt:

  • Erstellen eines Schlüsseltresors
  • Speichern eines Geheimnisses in Key Vault
  • Erstellen eines virtuellen Azure Linux-Computers
  • Aktivieren einer verwalteten Identität für den virtuellen Computer
  • Erteilen der erforderlichen Berechtigungen zum Lesen von Daten aus Key Vault für die Konsolenanwendung
  • Abrufen eines Geheimnisses aus Key Vault

Machen Sie sich zunächst mit den grundlegenden Konzepten von Key Vault vertraut.

Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen.

Voraussetzungen

Für Windows, Mac und Linux:

  • Git-Client
  • Für dieses Tutorial ist es erforderlich, dass Sie die Azure CLI lokal ausführen. Hierfür muss Azure CLI Version 2.0.4 oder höher installiert sein. Führen Sie az --version aus, um die Version zu ermitteln. Informationen zur Installation und Aktualisierung der CLI finden Sie bei Bedarf unter Installieren von Azure CLI 2.0.

Anmelden an Azure

Geben Sie Folgendes ein, um sich mithilfe der Azure-Befehlszeilenschnittstelle bei Azure anzumelden:

az login

Erstellen einer Ressourcengruppe und eines Schlüsseltresors

In dieser Schnellstartanleitung wird eine vorab erstellte Azure Key Vault-Instanz verwendet. Eine Anleitung zum Erstellen eines Schlüsseltresors finden Sie unter Schnellstart: Festlegen eines Geheimnisses und Abrufen des Geheimnisses aus Azure Key Vault mithilfe der Azure CLI, Schnellstart: Festlegen eines Geheimnisses und Abrufen des Geheimnisses aus Azure Key Vault mithilfe von PowerShell oder Schnellstart: Festlegen eines Geheimnisses und Abrufen des Geheimnisses aus Azure Key Vault mithilfe des Azure-Portals.

Alternativ können Sie diese Azure CLI- oder Azure PowerShell-Befehle ausführen.

Wichtig

Jeder Schlüsseltresor muss einen eindeutigen Namen haben. Ersetzen Sie in den folgenden Beispielen <your-unique-keyvault-name> durch den Namen Ihres Schlüsseltresors.

az group create --name "myResourceGroup" -l "EastUS"

az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization

Einfügen eines Geheimnisses in Ihren Schlüsseltresor

Erstellen Sie ein Geheimnis mit dem Namen mySecret und dem Wert Success! . Bei einem Geheimnis kann es sich beispielsweise um ein Kennwort, eine SQL-Verbindungszeichenfolge oder um beliebige andere Informationen handeln, die sowohl sicher aufbewahrt werden als auch für Ihre Anwendung verfügbar sein müssen.

Fügen Sie Ihrem neu erstellten Schlüsseltresor mit dem folgenden Befehl ein Geheimnis hinzu:

az keyvault secret set --vault-name "<your-unique-keyvault-name>" --name "mySecret" --value "Success!"

Erstellen eines virtuellen Computers

Erstellen Sie mit einer der folgenden Methoden einen virtuellen Computer namens myVM:

Linux Windows
Azure-Befehlszeilenschnittstelle Azure-Befehlszeilenschnittstelle
PowerShell PowerShell
Azure portal Azure-Portal

Verwenden Sie zum Erstellen eines virtuellen Linux-Computers mithilfe der Azure CLI den Befehl az vm create. Im folgenden Beispiel wird ein Benutzerkonto mit dem Namen azureuser hinzugefügt. Der Parameter --generate-ssh-keys wird genutzt, um automatisch einen SSH-Schlüssel zu generieren und am Speicherort für den Standardschlüssel abzulegen ( ~/.ssh).

az vm create \
  --resource-group myResourceGroup \
  --name myVM \
  --image Ubuntu2204 \
  --admin-username azureuser \
  --generate-ssh-keys

Beachten Sie den Wert von publicIpAddress in der Ausgabe.

Zuweisen einer Identität zum virtuellen Computer

Erstellen Sie für den virtuellen Computer mit dem Azure CLI-Befehl az vm identity assign eine systemseitig zugewiesene Identität:

az vm identity assign --name "myVM" --resource-group "myResourceGroup"

Beachten Sie die systemseitig zugewiesene Identität, die im folgenden Code angezeigt wird. Die Ausgabe des obigen Befehls lautet etwa wie folgt:

{
  "systemAssignedIdentity": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "userAssignedIdentities": {}
}

Zuweisen von Berechtigungen für die VM-Identität

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

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

Ersetzen Sie <app-id>, <subscription-id>, <resource-group-name> und <your-unique-keyvault-name> durch Ihre tatsächlichen Werte. <app-id> ist die Anwendungs-ID (Client-ID) Ihrer registrierten Anwendung in Microsoft Entra.

Anmelden am virtuellen Computer

Befolgen Sie zum Anmelden beim virtuellen Computer die Anleitung unter Vorschau: Anmelden bei einem virtuellen Linux-Computer in Azure mit der Azure Active Directory-Authentifizierung bzw. Herstellen einer Verbindung mit einem virtuellen Azure-Computer unter Windows und Anmelden auf diesem Computer.

Für die Anmeldung bei einem virtuellen Linux-Computer können Sie den ssh-Befehl mit dem im Schritt Erstellen eines virtuellen Computers erhaltenen Wert für <publicIpAddress> verwenden:

ssh azureuser@<PublicIpAddress>

Installieren der Python-Bibliothek auf dem virtuellen Computer

Installieren Sie auf dem virtuellen Computer die beiden Python-Bibliotheken, die im Python-Skript verwendet werden: azure-keyvault-secrets und azure.identity.

Auf einem virtuellen Linux-Computer können Sie diese beispielsweise mithilfe von pip3 installieren:

pip3 install azure-keyvault-secrets

pip3 install azure.identity

Erstellen und Bearbeiten des Python-Beispielskripts

Erstellen Sie auf dem virtuellen Computer eine Python-Datei mit dem Namen sample.py. Bearbeiten Sie die Datei so, dass sie den folgenden Code enthält. Ersetzen Sie dabei <your-unique-keyvault-name> durch den Namen Ihres Schlüsseltresors:

from azure.keyvault.secrets import SecretClient
from azure.identity import DefaultAzureCredential

key_vault_name = "<your-unique-keyvault-name>"
key_vault_uri = f"https://{key_vault_name}.vault.azure.net"
secret_name = "mySecret"

credential = DefaultAzureCredential()
client = SecretClient(vault_url=key_vault_uri, credential=credential)
retrieved_secret = client.get_secret(secret_name)

print(f"The value of secret '{secret_name}' in '{key_vault_name}' is: '{retrieved_secret.value}'")

Ausführen der Python-Beispiel-App

Führen Sie abschließend sample.py aus. Hat alles richtig funktioniert, sollte der Wert Ihres Geheimnisses zurückgeben werden:

python3 sample.py

The value of secret 'mySecret' in '<your-unique-keyvault-name>' is: 'Success!'

Bereinigen von Ressourcen

Löschen Sie die VM und Ihren Schlüsseltresor, wenn diese nicht mehr benötigt werden. Das geht ganz schnell, indem Sie einfach die Ressourcengruppe löschen, zu der diese Elemente gehören:

az group delete -g myResourceGroup

Nächste Schritte

Azure Key Vault-REST-API