Konfigurieren von Durable Functions mit Microsoft Entra ID

Microsoft Entra ID ist ein cloudbasierter Identitäts- und Zugriffsverwaltungsdienst. Durch identitätsbasierte Verbindungen kann Durable Functions autorisierte Anforderungen an mit Microsoft Entra geschützte Ressourcen wie ein Azure Storage-Konto stellen, ohne Geheimnisse manuell verwalten zu müssen. Durable Functions muss sich mithilfe des Azure-Standardspeicheranbieters bei einem Azure Storage-Konto authentifizieren. In diesem Artikel erfahren Sie, wie Sie eine Durable Functions-App konfigurieren, um zwei Arten von identitätsbasierten Verbindungen zu nutzen: Anmeldeinformationen für verwaltete Identitäten und Anmeldeinformationen mit geheimem Clientschlüssel.

Eine verwaltete Identität ermöglicht Ihrer App, einfach auf andere durch Microsoft Entra geschützte Ressourcen wie Azure Key Vault zuzugreifen. Verwaltete Identitäten werden in der Durable Functions Erweiterung ab Version 2.7.0 unterstützt.

Hinweis

Genau genommen ist eine verwaltete Identität nur für Apps verfügbar, wenn diese in Azure ausgeführt werden. Bei der Konfiguration für die Verwendung identitätsbasierter Verbindungen authentifiziert sich eine lokal ausgeführte App über Ihre Entwickleranmeldeinformationen bei Azure-Ressourcen. Nach der Bereitstellung in Azure verwendet sie dafür stattdessen Ihre Konfiguration für verwaltete Identitäten.

Voraussetzungen

Bei den folgenden Schritten wird davon ausgegangen, dass Sie mit einer vorhandenen Durable Functions-App beginnen und mit deren Bedienung vertraut sind. In dieser Schnellstartanleitung wird insbesondere davon ausgegangen, dass Sie bereits folgende Schritte ausgeführt haben:

  • Sie haben ein Durable Functions-Projekt im Azure-Portal erstellt oder Durable Functions lokal in Azure bereitgestellt.

Wenn dies nicht der Fall ist, empfehlen wir Ihnen, mit einem der folgenden Artikel zu beginnen. Sie enthalten detaillierte Anweisungen zur Erfüllung aller oben genannten Anforderungen:

Aktivieren einer verwalteten Identität

Für Ihre Funktion wird nur eine Identität benötigt, eine systemseitig zugewiesene verwaltete Identität oder eine benutzerseitig zugewiesene verwaltete Identität. Lesen Sie diese ausführliche Anleitung, um eine verwaltete Identität für Ihre Funktion zu aktivieren und mehr über die Unterschiede zwischen den beiden Identitäten zu erfahren.

Zuweisen von rollenbasierter Zugriffssteuerung (Role-Based Access Control, RBAC) zu einer verwalteten Identität

Navigieren Sie im Azure-Portal zur Speicherressource Ihrer App. Befolgen Sie diese Anweisungen, um Ihrer Ressource für verwaltete Identitäten die folgenden Rollen zuzuweisen.

  • Mitwirkender an Storage-Warteschlangendaten
  • Mitwirkender an Storage-Blobdaten
  • Mitwirkender an Storage-Tabellendaten

Hinzufügen der Konfiguration einer verwalteten Identität über das Azure-Portal

Navigieren Sie zur Seite Konfiguration Ihrer Azure-Funktions-App, und nehmen Sie die folgenden Änderungen vor:

  1. Entfernen Sie den Standardwert „AzureWebJobsStorage“.

Screenshot of default storage setting.

  1. Verknüpfen Sie Ihr Azure Storage-Konto, indem Sie eine der folgenden Werteinstellungen hinzufügen:

    • AzureWebJobsStorage__accountName: Beispiel: mystorageaccount123

    • AzureWebJobsStorage__blobServiceUri: Beispiel: https://mystorageaccount123.blob.core.windows.net/

      AzureWebJobsStorage__queueServiceUri: Beispiel: https://mystorageaccount123.queue.core.windows.net/

      AzureWebJobsStorage__tableServiceUri: Beispiel: https://mystorageaccount123.table.core.windows.net/

      Hinweis

      Wenn Sie Azure Government oder eine andere Cloud verwenden, die von der globalen Azure-Umgebung getrennt ist, müssen Sie zum Bereitstellen bestimmter Dienst-URLs diese zweite Option verwenden. Die Werte für diese Einstellungen finden Sie im Speicherkonto auf der Registerkarte Endpunkte. Weitere Informationen zur Verwendung von Azure Storage mit Azure Government finden Sie in der Dokumentation Entwickeln mit Speicher-API bei Azure Government.

    Screenshot of endpoint sample.

  2. Schließen Sie die Konfiguration Ihrer verwalteten Identität ab:

    • Wenn eine systemseitig zugewiesene Identität verwendet werden soll, geben Sie nichts mehr an.

    • Wenn eine benutzerseitig zugewiesene Identität verwendet werden soll, fügen Sie der App-Konfiguration die folgenden Einstellungswerte hinzu:

      • AzureWebJobsStorage__credential: managedidentity

      • AzureWebJobsStorage__clientId: (GUID-Wert, den Sie im Microsoft Entra Admin Center abrufen können)

      Screenshot of user identity client id.

Konfigurieren Ihrer App für die Verwendung geheimer Clientanmeldeinformationen

Das Registrieren einer Clientanwendung in Microsoft Entra ID stellt eine weitere Möglichkeit dar, den Zugriff auf einen Azure-Dienst zu konfigurieren. In den folgenden Schritten erfahren Sie, wie Sie für die Authentifizierung bei Ihrem Azure Storage-Konto geheime Clientanmeldeinformationen verwenden. Diese Methode kann von Funktions-Apps sowohl lokal als auch in Azure verwendet werden. Anmeldeinformationen für geheime Clientschlüssel werden jedoch nicht so sehr empfohlen wie verwaltete Identitäten, da die Konfiguration und Verwaltung komplizierter sind. Außerdem ist die Freigabe geheimer Anmeldeinformationen mit dem Azure Functions-Dienst erforderlich.

Voraussetzungen

Bei den folgenden Schritten wird davon ausgegangen, dass Sie mit einer vorhandenen Durable Functions-App beginnen und mit deren Bedienung vertraut sind. In dieser Schnellstartanleitung wird insbesondere davon ausgegangen, dass Sie bereits folgende Schritte ausgeführt haben:

  • Erstellen Sie ein Durable Functions-Projekt auf Ihrem lokalen Computer oder im Azure-Portal.

Registrieren einer Clientanwendung in Microsoft Entra ID

  1. Nutzen Sie für die Registrierung von Clientanwendungen bei Microsoft Entra ID über das Azure-Portal diese Anweisungen.

  2. Erstellen Sie einen geheimen Clientschlüssel für Ihre Clientanwendung. Gehen Sie in Ihrer registrierten Anwendung folgendermaßen vor:

    1. Wählen Sie Zertifikate und Geheime Schlüssel und dann "Neuer geheimer Clientschlüssel" aus.

    2. Geben Sie eine Beschreibung ein, und wählen Sie im Feld Ablauf am den Gültigkeitszeitraum für das Geheimnis aus.

    3. Kopieren Sie den geheimen Wert, und speichern Sie ihn sorgfältig, da er nach dem Verlassen der Seite nicht mehr angezeigt wird.

    Screenshot of client secret page.

Zuweisen der rollenbasierten Zugriffssteuerung (Role-Based Access Control, RBAC) zur Clientanwendung

Weisen Sie Ihrer Clientanwendung über die folgenden Schritte diese drei Rollen zu.

  • Mitwirkender an Storage-Warteschlangendaten
  • Mitwirkender an Storage-Blobdaten
  • Mitwirkender an Storage-Tabellendaten
  1. Navigieren Sie zur Seite Zugriffssteuerung (IAM) des Speicherkontos für Ihre Funktion, und fügen Sie eine neue Rollenzuweisung hinzu.

    Screenshot of access control page.

  2. Wählen Sie die erforderliche Rolle aus, klicken Sie auf „Weiter“, suchen Sie dann Ihrer Anwendung, überprüfen Sie diese, und fügen Sie sie hinzu.

    Screenshot of role assignment page.

Hinzufügen einer Konfiguration für einen geheimen Clientschlüssel

Zum Ausführen und Testen in Azure geben Sie auf der Seite Konfiguration Ihrer Azure-Funktions-App im Azure-Portal Folgendes an. Zum lokalen Ausführen und Testen geben Sie in der Datei local.settings.json für die Funktion Folgendes an.

  1. Entfernen Sie den Standardwert „AzureWebJobsStorage“.

  2. Verknüpfen Sie das Azure Storage-Konto, indem Sie eine der folgenden Werteinstellungen hinzufügen:

    • AzureWebJobsStorage__accountName: Beispiel: mystorageaccount123

    • AzureWebJobsStorage__blobServiceUri: Beispiel: https://mystorageaccount123.blob.core.windows.net/

      AzureWebJobsStorage__queueServiceUri: Beispiel: https://mystorageaccount123.queue.core.windows.net/

      AzureWebJobsStorage__tableServiceUri: Beispiel: https://mystorageaccount123.table.core.windows.net/

    Die Werte für diese URI-Variablen finden Sie im Speicherkonto auf der Registerkarte Endpunkte.

    Screenshot of endpoint sample.

  3. Fügen Sie einen geheimen Clientschlüssel hinzu, indem Sie die folgenden Werte angeben:

    • AzureWebJobsStorage__clientId: (GUID-Wert von der Microsoft Entra-Anwendungsseite)

    • AzureWebJobsStorage__ClientSecret: (Geheimniswert, der im Microsoft Entra Admin Center in einem vorherigen Schritt generiert wurde)

    • AzureWebJobsStorage__tenantId: (ID des Mandanten, in dem die Microsoft Entra-Anwendung registriert ist)

    Die Werte für die Client-ID und die Mandanten-ID finden Sie auf der Übersichtsseite Ihrer Clientanwendung. Der geheime Clientschlüssel ist der im vorherigen Schritt sorgfältig gespeicherte. Er ist nicht mehr verfügbar, nachdem die Seite aktualisiert wurde.

    Screenshot of application's overview page.