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