Share via


Migrieren einer Anwendung zur Verwendung von kennwortlosen Verbindungen mit Azure Event Hubs

Anwendungsanforderungen an Azure Service müssen mithilfe von Konfigurationen wie Kontozugriffsschlüsseln oder kennwortlosen Verbindungen authentifiziert werden. Sie sollten jedoch kennwortlose Verbindungen in Ihren Anwendungen priorisieren, wenn möglich. Traditionelle Authentifizierungsmethoden, die Kennwörter oder geheime Schlüsseln verwenden, sind mit Sicherheitsrisiken und Komplikationen verbunden. Besuchen Sie den Hub für kennwortlose Verbindungen für Azure-Dienste, um mehr über die Vorteile der Umstellung auf kennwortlose Verbindungen zu erfahren.

In der folgenden Anleitung wird erklärt, wie eine bestehende Anwendung zur Verbindung migriert werden kann, um kennwortlose Verbindungen zu verwenden. Diese Migrationsschritte sind unabhängig davon, ob Sie Zugriffsschlüssel, Verbindungszeichenfolgen oder einen anderen geheimnisbasierten Ansatz verwenden.

Konfigurieren Ihrer lokalen Entwicklungsumgebung

Kennwortlose Verbindungen können so konfiguriert werden, dass sie sowohl für lokale als auch für in Azure gehostete Umgebungen funktionieren. In diesem Abschnitt wenden Sie Konfigurationen an, damit sich einzelne Benutzer und Benutzerinnen bei Azure Event Hubs für die lokale Entwicklung authentifizieren können.

Zuweisen von Benutzerrollen

Achten Sie bei der lokalen Entwicklung darauf, dass das Benutzerkonto, das die Verbindung mit Azure Event Hubs herzustellen versucht, über die korrekten Berechtigungen verfügt. Sie benötigen die Rollen Azure Event Hubs-Datenempfänger und Azure Event Hubs-Datensender, um Nachrichtendaten lesen und schreiben zu können. Um sich selbst diese Rolle zuweisen zu können, benötigen Sie die Rolle Benutzerzugriffsadministrator oder eine andere Rolle, die die Aktion Microsoft.Authorization/roleAssignments/write enthält. Sie können einem Benutzer Azure RBAC-Rollen über das Azure-Portal, die Azure CLI oder mit Azure PowerShell zuweisen. Weitere Informationen zu den verfügbaren Bereichen für Rollenzuweisungen finden Sie auf der Seite Grundlegendes zum Bereich von Azure RBAC.

Im folgenden Beispiel werden Ihrem Benutzerkonto die Rollen Azure Event Hubs-Datensender und Azure Event Hubs-Datenempfänger zugewiesen. Diese Rollen gewähren Lese- und Schreibzugriff auf Event Hub-Nachrichten.

  1. Suchen Sie im Azure-Portal Ihren Event-Hub mithilfe der Hauptsuchleiste oder der linken Navigationsleiste.

  2. Wählen Sie auf der Übersichtsseite von Event Hubs im linken Menü die Option Zugriffssteuerung (IAM) aus.

  3. Wählen Sie auf der Seite Zugriffssteuerung (IAM) die Registerkarte Rollenzuweisungen aus.

  4. Wählen Sie im oberen Menü + Hinzufügen und aus dem dann angezeigten Dropdownmenü die Option Rollenzuweisung hinzufügen aus.

    Ein Screenshot zeigt, wie eine Rolle zugewiesen wird.

  5. Über das Suchfeld können Sie die Ergebnisse für die gewünschte Rolle filtern. Suchen Sie für dieses Beispiel nach Azure Event Hubs-Datensender, wählen Sie das entsprechende Ergebnis und dann Weiter aus.

  6. Wählen Sie unter Zugriff zuweisen zu die Option Benutzer, Gruppe oder Dienstprinzipal und dann die Option + Mitglieder auswählen aus.

  7. Suchen Sie im Dialogfeld nach Ihrem Microsoft Entra-Benutzernamen (normalerweise Ihre E-Mail-Adresse benutzer@domäne), und wählen Sie unten im Dialogfeld Auswählen aus.

  8. Wählen Sie Überprüfen und zuweisen aus, um zur letzten Seite zu gelangen, und wählen Sie erneut Überprüfen und zuweisen aus, um den Vorgang abzuschließen.

  9. Wiederholen Sie diese Schritte für die Rolle Azure Event Hub-Datenempfänger, damit das Konto Nachrichten senden und empfangen kann.

Wichtig

In den meisten Fällen dauert es eine oder zwei Minute(n), bis die Rollenzuweisung in Azure weitergegeben wird. In seltenen Fällen kann es aber bis zu acht Minuten dauern. Wenn bei der ersten Ausführung Ihres Codes Authentifizierungsfehler auftreten, warten Sie einige Momente, und versuchen Sie es dann erneut.

Lokale Anmeldung bei Azure

Stellen Sie für die lokale Entwicklung sicher, dass Sie mit demselben Microsoft Entra-Konto authentifiziert sind, dem Sie die Rolle zugewiesen haben. Sie können sich über gängige Entwicklungstools wie die Azure-Befehlszeilenschnittstelle (CLI) oder Azure PowerShell authentifizieren. Die Entwicklungstools, mit denen Sie sich authentifizieren können, variieren je nach Sprache.

Melden Sie sich mit dem folgenden Befehl über die Azure-Befehlszeilenschnittstelle bei Azure an:

az login

Aktualisieren des Anwendungscodes zur Verwendung kennwortloser Verbindungen

Die Azure Identity-Clientbibliothek stellt für jedes der folgenden Ökosysteme eine DefaultAzureCredential-Klasse bereit, die die kennwortlose Authentifizierung für Azure verarbeitet:

DefaultAzureCredential unterstützt mehrere Authentifizierungsmethoden. Die zu verwendende Methode wird zur Laufzeit bestimmt. Bei diesem Ansatz kann Ihre App unterschiedliche Authentifizierungsmethoden in verschiedenen Umgebungen (lokal gegenüber Produktion) verwenden, ohne umgebungsspezifischen Code zu implementieren. In den vorstehenden Links finden Sie die Reihenfolge und die Speicherorte, unter denen DefaultAzureCredential nach Anmeldeinformationen sucht.

  1. Um in einer .NET-Anwendung DefaultAzureCredential zu verwenden, installieren Sie das Azure.Identity-Paket:

    dotnet add package Azure.Identity
    
  2. Fügen Sie am Anfang der Datei den folgenden Code hinzu:

    using Azure.Identity;
    
  3. Identifizieren Sie die Stellen in Ihrem Code, an denen ein EventHubProducerClient- oder EventProcessorClient-Objekt erstellt wird, um eine Verbindung mit Azure Event Hubs herzustellen. Aktualisieren Sie Ihren Code wie im folgenden Beispiel gezeigt:

    DefaultAzureCredential credential = new();
    var eventHubNamespace = $"https://{namespace}.servicebus.windows.net";
    
    // Event Hubs producer
    EventHubProducerClient producerClient = new(
        eventHubNamespace,
        eventHubName,
        credential);
    
    // Event Hubs processor
    EventProcessorClient processorClient = new(
        storageClient,
        EventHubConsumerClient.DefaultConsumerGroupName,
        eventHubNamespace,
        eventHubName,
        credential);
    
  1. Stellen Sie sicher, dass Sie den Event Hubs-Namespace im URI für Ihre EventHubProducerClient- oder EventProcessorClient-Objekte aktualisieren. Sie finden den Namespace-Namen auf der Übersichtsseite des Azure-Portals.

    Screenshot der Suche nach dem Namespace-Namen.

Lokales Ausführen der App

Führen Sie die Anwendung lokal aus, nachdem Sie diese Codeänderungen vorgenommen haben. Die neue Konfiguration sollte Ihre lokalen Anmeldeinformationen abrufen, z. B. mit der Azure CLI, mit Visual Studio oder IntelliJ. Die Rollen, die Sie Ihrem Benutzer in Azure zugewiesen haben, ermöglichen es Ihrer App, eine lokale Verbindung mit dem Azure-Dienst herzustellen.

Konfigurieren der Azure-Hostingumgebung

Sobald Ihre Anwendung für die Verwendung kennwortloser Verbindungen konfiguriert ist und lokal ausgeführt wird, kann sich derselbe Code nach der Bereitstellung in Azure bei Azure-Diensten authentifizieren. In den folgenden Abschnitten wird erläutert, wie Sie eine bereitgestellte Anwendung so konfigurieren, dass sie mit einer verwalteten Identität eine Verbindung zu Azure Event Hubs herstellt. Verwaltete Identitäten bieten eine automatisch verwaltete Identität in Microsoft Entra ID, die Anwendungen beim Herstellen von Verbindungen mit Ressourcen verwenden können, die die Microsoft Entra-Authentifizierung unterstützen. Weitere Informationen zu verwalteten Identitäten:

Erstellen Sie die verwaltete Identität

Sie können eine benutzerseitig zugewiesene verwaltete Identität über das Azure-Portal oder mithilfe der Azure CLI erstellen. Ihre Anwendung verwendet die Identität zur Identifizierung bei anderen Diensten.

  1. Suchen Sie oben im Azure-Portal nach Verwaltete Identitäten. Wählen Sie das Ergebnis Verwaltete Identitäten aus.
  2. Wählen Sie oben auf der Übersichtsseite Verwaltete Identitäten die Option + Erstellen aus.
  3. Geben Sie auf der Registerkarte Grundlagen die folgenden Werte ein:
    • Abonnement: Wählen Sie Ihr gewünschtes Abonnement aus.
    • Ressourcengruppe: Wählen Sie Ihre gewünschte Ressourcengruppe aus.
    • Region: Wählen Sie eine Region in Ihrer Nähe aus.
    • Name: Geben Sie einen erkennbaren Namen für Ihre Identität ein, z. B. MigrationIdentity.
  4. Wählen Sie am unteren Rand der Seite die Option Bewerten + erstellen aus.
  5. Wenn die Überprüfungen abgeschlossen sind, wählen Sie Erstellen aus. Azure erstellt eine neue benutzerseitig zugewiesene Identität.

Nachdem die Ressource erstellt wurde, wählen Sie Zu Ressource wechseln aus, um die Details der verwalteten Identität anzuzeigen.

Der Screenshot zeigt das Erstellen einer benutzerseitig zugewiesenen verwalteten Identität.

Zuordnen der verwalteten Identität zu Ihrer Web-App

Sie müssen Ihre Web-App so konfigurieren, dass sie die von Ihnen erstellte verwaltete Identität verwendet. Weisen Sie die Identität Ihrer App entweder über das Azure-Portal oder mithilfe der Azure CLI zu.

Führen Sie im Azure-Portal die folgenden Schritte aus, um Ihrer App eine Identität zuzuordnen. Dieselben Schritte gelten für die folgenden Azure-Dienste:

  • Azure Spring Apps
  • Azure Container Apps
  • Virtuelle Azure-Computer
  • Azure Kubernetes Service
  1. Navigieren Sie zur Übersichtsseite Ihrer Web-App.

  2. Wählen Sie im linken Navigationsbereich Identität aus.

  3. Wechseln Sie auf der Seite Identität zur Registerkarte Benutzerseitig zugewiesen.

  4. Wählen Sie + Hinzufügen aus, um das Flyout Benutzerseitig zugewiesene verwaltete Identität hinzufügen zu öffnen.

  5. Wählen Sie das Abonnement aus, das Sie vorher zum Erstellen der Identität verwendet haben.

  6. Suchen Sie anhand des Namens nach der MigrationIdentity, und wählen Sie sie aus den Suchergebnissen aus.

  7. Wählen Sie Hinzufügen aus, um die Identität Ihrer App zuzuordnen.

    Der Screenshot zeigt das Erstellen einer benutzerseitig zugewiesenen Identität.

Zuweisen einer Rolle zur verwalteten Identität

Als Nächstes müssen Sie der verwalteten Identität, die Sie für den Service Bus-Zugriff erstellt haben, Berechtigungen erteilen. Erteilen Sie Berechtigungen, indem Sie der verwalteten Identität eine Rolle mit denselben Schritten zuweisen wie bei Ihrem lokalen Entwicklungsbenutzer.

  1. Navigieren Sie zu Ihrer Event Hub-Übersichtsseite, und wählen Sie auf der linken Navigationsleiste Zugriffssteuerung (IAM) aus.

  2. Wählen Sie die Option Rollenzuweisung hinzufügen aus.

    Screenshot: Hinzufügen einer Rolle zu einer verwalteten Identität

  3. Suchen Sie im Suchfeld Rolle nach Azure Event Hubs-Datensender. Dies ist eine Rolle, die häufig zum Verwalten von Datenvorgängen für Warteschlangen verwendet wird. Sie können jede Rolle zuweisen, die für Ihren Anwendungsfall geeignet ist. Wählen Sie in der Liste die Rolle Azure Event Hubs-Datensender und dann Weiter aus.

  4. Wählen Sie auf dem Bildschirm Rollenzuweisung hinzufügen für die Option Zugriff zuweisen zu die Option Verwaltete Identität aus. Wählen Sie dann + Mitglieder auswählen aus.

  5. Suchen Sie im Flyout anhand des Namens nach der erstellten verwalteten Identität, und wählen Sie sie aus den Ergebnissen aus. Wählen Sie Auswählen aus, um das Flyoutmenü zu schließen.

    Screenshot: Auswählen der zugewiesenen verwalteten Identität

  6. Wählen Sie mehrmals Weiter aus, bis Sie Überprüfen und zuweisen auswählen können, um die Rollenzuweisung abzuschließen.

  7. Wiederholen Sie diese Schritte für die Rolle Azure Event Hub-Datenempfänger.

Aktualisieren des Anwendungscodes

Sie müssen Ihren Anwendungscode so konfigurieren, dass er nach der von Ihnen erstellten verwalteten Identität sucht, wenn er in Azure bereitgestellt wird. In einigen Szenarien verhindert das explizite Festlegen der verwalteten Identität für die App außerdem, dass andere Umgebungsidentitäten versehentlich erkannt und automatisch verwendet werden.

  1. Kopieren Sie auf der Übersichtsseite der verwalteten Identität den Wert der Client-ID in Ihre Zwischenablage.

  2. Wenden Sie die folgenden sprachspezifischen Änderungen an:

    Erstellen Sie ein DefaultAzureCredentialOptions-Objekt, und übergeben Sie es an DefaultAzureCredential. Legen Sie die Eigenschaft ManagedIdentityClientId auf die Client-ID fest.

    DefaultAzureCredential credential = new(
        new DefaultAzureCredentialOptions
        {
            ManagedIdentityClientId = managedIdentityClientId
        });
    
  3. Nachdem Sie diese Änderung vorgenommen haben, stellen Sie Ihren Code in Azure erneut bereit, damit die Konfigurationsupdates angewendet werden.

Testen der App

Nachdem Sie den aktualisierten Code bereitgestellt haben, navigieren Sie im Browser zu Ihrer gehosteten Anwendung. Ihre App sollte die Verbindung mit der Event Hub-Instanz erfolgreich herstellen können. Denken Sie daran, dass es einige Minuten dauern kann, bis die Rollenzuweisungen in der Azure-Umgebung weitergegeben werden. Ihre Anwendung ist jetzt so konfiguriert, dass sie lokal und in einer Produktionsumgebung ausgeführt werden kann, ohne dass die Entwickler Geheimnisse in der Anwendung selbst verwalten müssen.

Nächste Schritte

In diesem Tutorial haben Sie gelernt, wie Sie eine Anwendung zu kennwortlosen Verbindungen migrieren.

Sie können die folgenden Ressourcen lesen, um die in diesem Artikel erläuterten Konzepte ausführlicher zu erkunden: