Freigeben über


Authentifizieren von von Azure gehosteten Python-Apps für Azure-Ressourcen mithilfe einer vom System zugewiesenen verwalteten Identität

Der empfohlene Ansatz zum Authentifizieren einer von Azure gehosteten App für andere Azure-Ressourcen besteht darin, eine verwaltete Identitätzu verwenden. Dieser Ansatz wird für die meisten Azure-Dienste unterstützt, einschließlich Apps in Azure App Service, Azure Container Apps und Azure Virtual Machines. Erfahren Sie mehr über verschiedene Authentifizierungstechniken und Ansätze auf der Authentifizierungsübersicht Seite. In den folgenden Abschnitten erfahren Sie:

  • Grundlegende Konzepte für verwaltete Identitäten
  • So erstellen Sie eine vom System zugewiesene verwaltete Identität für Ihre App
  • Zuweisen von Rollen zur vom System zugewiesenen verwalteten Identität
  • So authentifizieren Sie sich mithilfe der vom System zugewiesenen verwalteten Identität aus Ihrem App-Code

Grundlegende Konzepte für verwaltete Identitäten

Mit einer verwalteten Identität kann Ihre App sicher eine Verbindung mit anderen Azure-Ressourcen herstellen, ohne geheime Schlüssel oder andere geheime Anwendungsschlüssel zu verwenden. Intern verfolgt Azure die Identität und zu welchen Ressourcen es berechtigt ist, eine Verbindung herzustellen. Azure verwendet diese Informationen, um Automatisch Microsoft Entra-Token für die App abzurufen, damit sie eine Verbindung mit anderen Azure-Ressourcen herstellen kann.

Es gibt zwei Arten von verwalteten Identitäten, die Sie beim Konfigurieren Ihrer gehosteten App berücksichtigen sollten:

  • Vom System zugewiesene verwaltete Identitäten werden direkt auf einer Azure-Ressource aktiviert und sind an den Lebenszyklus gebunden. Wenn die Ressource gelöscht wird, löscht Azure die Identität automatisch für Sie. Vom System zugewiesene Identitäten bieten einen minimalistischen Ansatz für die Verwendung verwalteter Identitäten.
  • Vom Benutzer zugewiesene verwaltete Identitäten werden als eigenständige Azure-Ressourcen erstellt und bieten mehr Flexibilität und Funktionen. Sie eignen sich ideal für Lösungen mit mehreren Azure-Ressourcen, die dieselbe Identität und Berechtigungen gemeinsam nutzen müssen. Wenn beispielsweise mehrere virtuelle Computer auf denselben Satz von Azure-Ressourcen zugreifen müssen, bietet eine vom Benutzer zugewiesene verwaltete Identität wiederverwendbarkeit und optimierte Verwaltung.

Tipp

Erfahren Sie mehr über das Auswählen und Verwalten von vom System zugewiesenen und vom Benutzer zugewiesenen verwalteten Identitäten im Empfehlungsartikel zu bewährten Methoden für verwaltete Identitäten .

In den folgenden Abschnitten werden die Schritte zum Aktivieren und Verwenden einer vom System zugewiesenen verwalteten Identität für eine von Azure gehostete App beschrieben. Wenn Sie eine vom Benutzer zugewiesene verwaltete Identität verwenden müssen, besuchen Sie den Artikel über vom Benutzer zugewiesene verwaltete Identitäten , um weitere Informationen zu erhalten.

Aktivieren einer vom System zugewiesenen verwalteten Identität in der Azure-Hostingressource

Um mit der Verwendung einer vom System zugewiesenen verwalteten Identität mit Ihrer App zu beginnen, aktivieren Sie die Identität in der Azure-Ressource, die Ihre App hosten, z. B. einen Azure App-Dienst, eine Azure-Container-App oder einen virtuellen Azure-Computer.

Sie können eine vom System zugewiesene verwaltete Identität für eine Azure-Ressource entweder über das Azure-Portal oder die Azure CLI aktivieren.

  1. Navigieren Sie im Azure-Portal zu der Ressource, die Ihren Anwendungscode hostt, z. B. eine Azure App Service- oder Azure-Container-App-Instanz.

  2. Blenden Sie auf der Seite Übersicht der Ressource Einstellungen ein, und wählen Sie im Navigationsbereich Identität.

  3. Schalten Sie auf der Seite "Identität " den Statusschieberegler auf "Ein".

  4. Wählen Sie "Speichern" aus, um Ihre Änderungen anzuwenden.

    Screenshot, der zeigt, wie eine vom System zugewiesene verwaltete Identität in einer Container-App aktiviert wird.

Zuweisen einer Rolle zur verwalteten Identität

Ermitteln Sie als Nächstes, welche Rollen Ihre App benötigt, und weisen Sie diese Rollen der verwalteten Identität zu. Sie können einer verwalteten Identität rollen in den folgenden Bereichen zuweisen:

  • Ressource: Die zugewiesenen Rollen gelten nur für diese bestimmte Ressource.
  • Ressourcengruppe: Die zugewiesenen Rollen gelten für alle Ressourcen, die in der Ressourcengruppe enthalten sind.
  • Abonnement-: Die zugewiesenen Rollen gelten für alle Im Abonnement enthaltenen Ressourcen.

Das folgende Beispiel zeigt, wie Rollen im Ressourcengruppenbereich zugewiesen werden, da viele Apps alle zugehörigen Azure-Ressourcen mithilfe einer einzelnen Ressourcengruppe verwalten.

  1. Navigieren Sie zur Seite "Übersicht" der Ressourcengruppe, die die App mit der vom System zugewiesenen verwalteten Identität enthält.

  2. Wählen Sie im Navigationsbereich links Zugriffssteuerung (IAM).

  3. Wählen Sie auf der Seite Zugriffssteuerung (IAM) im oberen Menü + Hinzufügen. Wählen Sie dann Rollenzuweisung hinzufügen, um zur Seite Rollenzuweisung hinzufügen zu navigieren.

    Screenshot, der zeigt, wie Sie auf die Seite

  4. Die Seite Rollenzuweisung hinzufügen stellt einen mehrstufigen Workflow zum Zuweisen von Rollen für Identitäten auf Registerkarten bereit. Verwenden Sie auf der ersten Registerkarte Rolle das Suchfeld oben, um die Rolle zu suchen, die Sie der Identität zuweisen möchten.

  5. Wählen Sie die Rolle in den Ergebnissen. Wählen Sie dann Weiter, um zur Registerkarte Mitglieder zu gelangen.

  6. Wählen Sie für die Option Zuweisen des Zugriffs auf die Option Verwaltete Identitätaus.

  7. Wählen Sie für die Option Mitglieder+ Mitglieder auswählen, um den Bereich Verwaltete Identitäten auswählen zu öffnen.

  8. Verwenden Sie im Bereich "Verwaltete Identitäten auswählen" die Dropdownlisten "Abonnement" und "Verwaltete Identität", um die Suchergebnisse für Ihre Identitäten zu filtern. Verwenden Sie das Suchfeld "Auswählen ", um die Systemidentität zu finden, die Sie für die Azure-Ressource aktiviert haben, die Ihre App hosten soll.

    Screenshot des Prozesses der verwalteten Identitätszuweisung.

  9. Wählen Sie die Identität und dann unten im Bereich Auswählen, um fortzufahren.

  10. Wählen Sie unten auf der Seite Überprüfen und zuweisen.

  11. Wählen Sie auf der letzten Registerkarte Überprüfen und zuweisen die Option Überprüfen und zuweisen, um den Workflow abzuschließen.

Authentifizieren von Azure-Diensten aus Ihrer App

Die Azure Identity-Bibliothek stellt verschiedene Berechtigungsnachweise bereit – Implementierungen, die TokenCredential zur Unterstützung verschiedener Szenarien und Microsoft Entra-Authentifizierungsflüsse angepasst sind. Da verwaltete Identität bei der lokalen Ausführung nicht verfügbar ist, zeigen die folgenden Schritte, welche Anmeldeinformationen in welchem Szenario verwendet werden sollen:

  • Lokale Entwicklungsumgebung: Verwenden Sie während der lokalen Entwicklung nur eine Klasse namens DefaultAzureCredential für eine meinungsvermerkte, vorkonfigurierte Kette von Anmeldeinformationen. DefaultAzureCredential ermittelt Benutzeranmeldeinformationen aus Ihren lokalen Tools oder IDE, z. B. azure CLI oder Visual Studio Code. Außerdem bietet es Flexibilität und Komfort für Wiederholungen, Wartezeiten für Antworten und Unterstützung für mehrere Authentifizierungsoptionen. Besuchen Sie den Artikel Authentifizierung bei Azure-Diensten während der lokalen Entwicklung, um mehr zu erfahren.
  • In Azure gehostete Apps: Wenn Ihre App in Azure ausgeführt wird, verwenden Sie ManagedIdentityCredential , um die für Ihre App konfigurierte verwaltete Identität sicher zu ermitteln. Wenn Sie diesen genauen Anmeldedatentyp angeben, wird verhindert, dass andere verfügbare Anmeldedaten versehentlich verwendet werden.

Implementieren des Codes

Fügen Sie das Azure-Identity-Paket zu Ihrer Anwendung hinzu, indem Sie zum Anwendungsprojektverzeichnis navigieren und den folgenden Befehl ausführen:

pip install azure-identity

Auf Azure-Dienste wird mithilfe spezieller Clientklassen aus den verschiedenen Azure SDK-Clientbibliotheken zugegriffen. Im folgenden Codebeispiel wird veranschaulicht, wie Eine Anmeldeinformationsinstanz erstellt und mit einem Azure SDK-Dienstclient verwendet wird. Führen Sie im Anwendungscode die folgenden Schritte aus, um sich mithilfe einer verwalteten Identität zu authentifizieren:

  1. Importieren Sie die ManagedIdentityCredential-Klasse aus dem azure.identity-Modul.
  2. Erstellen eines ManagedIdentityCredential-Objekts
  3. Übergeben Sie das ManagedIdentityCredential Objekt an den Azure SDK-Clientkonstruktor.

Das folgende Beispiel veranschaulicht die Authentifizierung einer BlobServiceClient vom System zugewiesenen verwalteten Identität:

from azure.identity import ManagedIdentityCredential
from azure.storage.blob import BlobServiceClient

# Authenticate using system-assigned managed identity
credential = ManagedIdentityCredential()

blob_service_client = BlobServiceClient(
    account_url="https://<account-name>.blob.core.windows.net",
    credential=credential
)

Bei der lokalen Entwicklung können Sie verwenden DefaultAzureCredential , welche Anmeldeinformationen aus lokalen Entwicklertools ermittelt. Nach der Bereitstellung in Azure wechseln Sie für Produktionsszenarien zu ManagedIdentityCredential.

import os
from azure.identity import DefaultAzureCredential, ManagedIdentityCredential
from azure.storage.blob import BlobServiceClient

# Use ManagedIdentityCredential in Azure, DefaultAzureCredential locally
if os.getenv("WEBSITE_HOSTNAME"):
    credential = ManagedIdentityCredential()
else:
    credential = DefaultAzureCredential()

blob_service_client = BlobServiceClient(
    account_url="https://<account-name>.blob.core.windows.net",
    credential=credential
)