Schnellstart: Konfigurieren von Durable Functions mit verwalteter Identität

In dieser Schnellstartanleitung wird gezeigt, wie Sie eine Durable Functions-App mithilfe des standardanbieters Azure Storage konfigurieren, um identitätsbasierte Verbindungen zu verwenden, damit Ihre App auf sein Speicherkonto zugreifen kann, ohne geheime Schlüssel zu verwalten. Eine verwaltete Identität von Microsoft Entra ID wird von der Azure-Plattform verwaltet – Sie müssen keine geheimen Schlüssel bereitstellen oder aktualisieren.

In diesem Artikel:

Hinweis

Verwaltete Identität wird in Versionen 2.7.0 und höher der Durable Functions Erweiterung unterstützt.

Wenn Sie nicht über ein Azure-Konto verfügen, erstellen Sie ein kostenloses Konto , bevor Sie beginnen.

Voraussetzungen

Für die Durchführung dieses Schnellstarts benötigen Sie Folgendes:

  • Ein vorhandenes Durable Functions Projekt, das im Azure Portal oder einem lokalen Durable Functions Projekt erstellt wurde, das für Azure bereitgestellt wird.
  • Vertrautheit beim Ausführen einer Durable Functions App in Azure.

Wenn Sie kein vorhandenes Durable Functions Projekt in Azure bereitgestellt haben, empfehlen wir, mit einer der folgenden Schnellstarts zu beginnen:

Einrichtung der lokalen Entwicklung

Sie haben zwei Optionen für die lokale Entwicklung. Verwenden Sie Azurite für schnelle lokale Tests ohne Azure Anmeldeinformationen. Wenn Sie identitätsbasierte Verbindungen mit einem echten Azure Storage Konto testen müssen, verwenden Sie stattdessen Ihre Entwickleranmeldeinformationen.

Option 1: Verwenden des Azure Storage Emulators

Bei der lokalen Entwicklung wird empfohlen, Azurite zu verwenden, den lokalen Emulator von Azure Storage. Konfigurieren Sie Ihre App für den Emulator, indem Sie "AzureWebJobsStorage": "UseDevelopmentStorage=true" in der Datei „local.settings.json“ angeben.

Option 2: Identitätsbasierte Verbindungen für die lokale Entwicklung

Streng genommen ist eine verwaltete Identität nur für Apps verfügbar, wenn sie auf Azure ausgeführt werden. Sie können jedoch weiterhin eine lokal ausgeführte App für die Verwendung einer identitätsbasierten Verbindung konfigurieren, indem Sie Ihre Entwickleranmeldeinformationen verwenden, um sich bei Azure Ressourcen zu authentifizieren. Wenn sie dann auf Azure bereitgestellt wird, verwendet die App stattdessen Ihre verwaltete Identitätskonfiguration.

Bei Verwendung von Entwickleranmeldeinformationen versucht die Verbindung, ein Token von den folgenden Speicherorten in dieser Reihenfolge abzurufen:

  1. Lokaler Cache, der von Microsoft-Anwendungen gemeinsam genutzt wird
  2. Der aktuelle Benutzerkontext in Visual Studio
  3. Der aktuelle Benutzerkontext in Visual Studio Code
  4. Der aktuelle Benutzerkontext im Azure CLI

Wenn keine dieser Optionen erfolgreich ist, wird eine Fehlermeldung angezeigt, die angibt, dass die App kein Authentifizierungstoken abrufen kann. Vergewissern Sie sich, dass Sie bei einem der aufgeführten Tools mit einem Konto angemeldet sind, das Zugriff auf Ihr Azure Storage-Konto hat.

Konfigurieren der Laufzeit zur Verwendung der lokalen Entwickleridentität.

  1. Geben Sie den Namen Ihres Azure Storage Kontos in local.settings.jsonan, z. B.:

    {
       "IsEncrypted": false,
       "Values": {
          "AzureWebJobsStorage__accountName": "<<your Azure Storage account name>>",
          "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"
       }
    }
    
  2. Navigieren Sie im Azure-Portal zu Ihrer Azure Storage-Kontoressource.

  3. Wählen Sie die Registerkarte Access Control (IAM) und dann Rollen zuweisen aus.

  4. Weisen Sie jede der folgenden Rollen sich selbst zu. Wählen Sie für jede Rolle "+ Mitglieder auswählen" aus, und suchen Sie nach der E-Mail, die Sie verwenden, um sich bei Visual Studio, Visual Studio Code oder dem Azure CLI anzumelden.

    • Beitragender zu Speicher-Warteschlangendaten
    • Storage Blob-Datenmitwirkender
    • Storage Table Data-Beitragender

    Hinweis

    Dies sind die gleichen drei Rollen, die für Ihre verwaltete Identität erforderlich sind, wenn sie für Azure bereitgestellt werden. Siehe Zuweisen von Zugriffsrollen zur verwalteten Identität.

    Bildschirmfoto zum Zuweisen von Rollen für den Mitwirkenden für Speicherdaten zu einem Benutzer auf der Zugriffskontroll-Seite im Azure-Portal.

Identitätsbasierte Verbindungen für apps, die für Azure bereitgestellt werden

Aktivieren einer verwalteten Identitätsressource

Aktivieren Sie zunächst eine verwaltete Identität für Ihre Anwendung. Ihre Funktions-App muss entweder über eine vom System zugewiesene verwaltete Identität oder eine von der benutzenden Person zugewiesene verwaltete Identität verfügen. Um eine verwaltete Identität für Ihre Funktions-App zu aktivieren und mehr über die Unterschiede zwischen den beiden Arten von Identitäten zu erfahren, lesen Sie die Übersicht über verwaltete Identitäten.

Zuweisen von Zugriffsrollen zur verwalteten Identität

Navigieren Sie im Azure-Portal zur Azure Storage-Ressource Ihrer App und weisen Sie drei rollenbasierte Zugriffssteuerungen (RBAC) Ihrer verwalteten Identitätsressource zu.

  • Beitragender zu Speicher-Warteschlangendaten
  • Storage Blob-Datenmitwirkender
  • Storage Table Data-Beitragender

Um Ihre Identitätsressource zu finden, wählen Sie zunächst für „Zuweisen des Zugriffs auf“ die Option Verwaltete Identität und dann + Mitglieder auswählen aus

Screenshot zum Zuweisen von Speicherzugriffsrollen zu einer verwalteten Identität im Azure portal.

Hinzufügen der Verwalteten Identitätskonfiguration zu Ihrer App

Bevor Sie die verwaltete Identität Ihrer App verwenden können, müssen Sie einige Änderungen an den App-Einstellungen vornehmen:

  1. Wählen Sie im Azure-Portal im Ressourcenmenü der Funktions-App unter EinstellungenUmgebungsvariablen aus.

  2. Suchen Sie in der Liste der Einstellungen nach AzureWebJobsStorage, und wählen Sie das Symbol Löschen aus. Screenshot der Umgebungsvariablen

  3. Fügen Sie eine Einstellung hinzu, um Ihr Azure Speicherkonto mit der Anwendung zu verknüpfen.

    Verwenden Sie je nach der Cloud, in der Ihre Anwendung läuft, eine der folgenden Methoden:

    • Azure cloud: Wenn Ihre App in global Azure ausgeführt wird, fügen Sie die Einstellung AzureWebJobsStorage__accountName hinzu, die einen Azure Speicherkontonamen identifiziert. Beispielwert: mystorageaccount123

    • Non-Azure cloud: Wenn Ihre Anwendung in einer Cloud außerhalb Azure ausgeführt wird, müssen Sie die folgenden drei Einstellungen hinzufügen, um bestimmte Dienst-URIs (oder endpoints) des Speicherkontos anstelle eines Kontonamens bereitzustellen.

      • Einstellungsname: AzureWebJobsStorage__blobServiceUri

        Beispielwert: https://mystorageaccount123.blob.core.windows.net/

      • Einstellungsname: AzureWebJobsStorage__queueServiceUri

        Beispielwert: https://mystorageaccount123.queue.core.windows.net/

      • Einstellungsname: AzureWebJobsStorage__tableServiceUri

        Beispielwert: https://mystorageaccount123.table.core.windows.net/

    Sie können die Werte für diese URI-Variablen in den Speicherkontoinformationen auf der Registerkarte Endpunkte abrufen.

    Screenshot der Registerkarte

    Hinweis

    Wenn Sie Azure Government oder eine andere Cloud verwenden, die von globalen Azure getrennt ist, müssen Sie die Option verwenden, die bestimmte Dienst-URIs anstelle des Namen des Speicherkontos bereitstellt. Weitere Informationen zur Verwendung von Azure Storage mit Azure Government finden Sie unter Entwickeln mit der Speicher-API in Azure Government.

  4. Beenden Sie die Konfiguration der verwalteten Identität (denken Sie daran, nach den getätigten Einstellungsänderungen auf „Übernehmen“ zu klicken):

    • Wenn Sie eine vom System zugewiesene Identität verwenden, nehmen Sie keine anderen Änderungen vor.

    • Wenn Sie eine benutzerseitig zugewiesene Identität verwenden, fügen Sie Ihrer App-Konfiguration die folgenden Einstellungen hinzu:

      • AzureWebJobsStorage__credential, geben Sie managedidentity ein

      • AzureWebJobsStorage__clientId, rufen Sie diesen GUID-Wert aus Ihrer Ressource der verwalteten Identität ab

    Screenshot der vom Benutzer zugewiesenen verwalteten Identitätsressource mit dem Client-ID-Wert.

    Hinweis

    Durable Functions unterstützt nichtmanagedIdentityResourceId, wenn eine vom Benutzer zugewiesene Identität verwendet wird. Verwenden Sie stattdessen clientId.

Überprüfen Ihrer Konfiguration

So bestätigen Sie, dass Ihre verwaltete Identitätskonfiguration funktioniert:

  1. Navigieren Sie im Azure-Portal zu Ihrer Function-App, und lösen Sie die Durable Functions-Orchestrierung aus (z. B. mithilfe einer HTTP-Triggerfunktion).
  2. Überprüfen Sie, ob die Orchestrierung erfolgreich abgeschlossen ist, indem Sie den Statusendpunkt abfragen oder die Registerkarte "Monitor" überprüfen.
  3. Wenn Authentifizierungsfehler angezeigt werden, überprüfen Sie folgendes:
    • Alle drei Rollen für „Speicherdaten-Mitwirkende“ werden der korrekten Identität zugewiesen.
    • Die Einstellung der AzureWebJobsStorage-Verbindungszeichenfolge wird entfernt.
    • Die AzureWebJobsStorage__accountName Einstellungen (oder Dienst-URI) sind korrekt.

Nächste Schritte