Dela via


Migrera ett program för att använda lösenordslösa anslutningar med Azure Event Hubs

Programbegäranden till Azure-tjänster måste autentiseras med hjälp av konfigurationer som kontoåtkomstnycklar eller lösenordslösa anslutningar. Du bör dock prioritera lösenordslösa anslutningar i dina program när det är möjligt. Traditionella autentiseringsmetoder som använder lösenord eller hemliga nycklar skapar säkerhetsrisker och komplikationer. Gå till hubben för lösenordslösa anslutningar för Azure-tjänster för att lära dig mer om fördelarna med att flytta till lösenordslösa anslutningar.

I följande självstudie beskrivs hur du migrerar ett befintligt program för att ansluta med lösenordslösa anslutningar. Samma migreringssteg bör gälla oavsett om du använder åtkomstnycklar, niska veze eller någon annan hemlighetsbaserad metod.

Konfigurera din lokala utvecklingsmiljö

Lösenordslösa anslutningar kan konfigureras för att fungera för både lokala och Azure-värdbaserade miljöer. I det här avsnittet använder du konfigurationer för att tillåta enskilda användare att autentisera till Azure Event Hubs för lokal utveckling.

Tilldela användarroller

När du utvecklar lokalt kontrollerar du att användarkontot som har åtkomst till Azure Event Hubs har rätt behörigheter. Du behöver rollerna Azure Event Hubs Data Receiver och Azure Event Hubs Data Sender för att läsa och skriva meddelandedata. Om du vill tilldela dig själv den här rollen måste du tilldelas rollen Administratör för användaråtkomst eller en annan roll som innehåller åtgärden Microsoft.Authorization/roleAssignments/write . Du kan tilldela Azure RBAC-roller till en användare med hjälp av Azure-portalen, Azure CLI eller Azure PowerShell. Läs mer om tillgängliga omfång för rolltilldelningar på översiktssidan för omfång .

I följande exempel tilldelas rollerna Azure Event Hubs Data Sender och Azure Event Hubs Data Receiver till ditt användarkonto. Den här rollen ger läs- och skrivåtkomst till händelsehubbens meddelanden.

  1. Leta upp din händelsehubb i Azure-portalen med hjälp av huvudsökfältet eller det vänstra navigeringsfältet.

  2. På översiktssidan för händelsehubben väljer du Åtkomstkontroll (IAM) på den vänstra menyn.

  3. På sidan Åtkomstkontroll (IAM) väljer du fliken Rolltilldelningar .

  4. Välj + Lägg till på den översta menyn och sedan Lägg till rolltilldelning från den resulterande nedrullningsbara menyn.

    En skärmbild som visar hur du tilldelar en roll.

  5. Använd sökrutan för att filtrera resultatet till önskad roll. I det här exemplet söker du efter Azure Event Hubs Data Sender och väljer matchande resultat och väljer sedan Nästa.

  6. Under Tilldela åtkomst till väljer du Användare, grupp eller tjänstens huvudnamn och sedan + Välj medlemmar.

  7. I dialogrutan söker du efter ditt Microsoft Entra-användarnamn (vanligtvis din user@domain e-postadress) och väljer sedan Välj längst ned i dialogrutan.

  8. Välj Granska + tilldela för att gå till den sista sidan och sedan Granska + tilldela igen för att slutföra processen.

  9. Upprepa de här stegen för rollen Azure Event Hubs Data Receiver så att kontot kan skicka och ta emot meddelanden.

Viktigt!

I de flesta fall tar det en minut eller två för rolltilldelningen att spridas i Azure, men i sällsynta fall kan det ta upp till åtta minuter. Om du får autentiseringsfel när du först kör koden väntar du en stund och försöker igen.

Logga in på Azure lokalt

För lokal utveckling kontrollerar du att du är autentiserad med samma Microsoft Entra-konto som du tilldelade rollen till. Du kan autentisera via populära utvecklingsverktyg, till exempel Azure CLI eller Azure PowerShell. De utvecklingsverktyg som du kan autentisera med varierar mellan olika språk.

Logga in på Azure via Azure CLI med följande kommando:

az login

Uppdatera programkoden för att använda lösenordslösa anslutningar

Azure Identity-klientbiblioteket för vart och ett av följande ekosystem tillhandahåller en DefaultAzureCredential klass som hanterar lösenordslös autentisering till Azure:

DefaultAzureCredential stöder flera autentiseringsmetoder. Vilken metod som ska användas bestäms vid körning. Med den här metoden kan din app använda olika autentiseringsmetoder i olika miljöer (lokalt jämfört med produktion) utan att implementera miljöspecifik kod. Se föregående länkar för den ordning och de platser där DefaultAzureCredential autentiseringsuppgifterna söks.

  1. Om du vill använda DefaultAzureCredential i ett .NET-program installerar du Azure.Identity paketet:

    dotnet add package Azure.Identity
    
  2. Lägg till följande kod överst i filen:

    using Azure.Identity;
    
  3. Identifiera de platser i koden som skapar ett EventHubProducerClient eller EventProcessorClient -objekt för att ansluta till Azure Event Hubs. Uppdatera koden så att den matchar följande exempel:

    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. Se till att uppdatera händelsehubbens namnområde i URI:n för dina EventHubProducerClient eller EventProcessorClient objekten. Du hittar namnområdets namn på översiktssidan i Azure-portalen.

    Skärmbild som visar hur du hittar namnområdesnamnet.

Köra appen lokalt

När du har gjort dessa kodändringar kör du programmet lokalt. Den nya konfigurationen bör hämta dina lokala autentiseringsuppgifter, till exempel Azure CLI, Visual Studio eller IntelliJ. Med de roller som du har tilldelat till din användare i Azure kan din app ansluta till Azure-tjänsten lokalt.

Konfigurera Azure-värdmiljön

När programmet har konfigurerats för att använda lösenordslösa anslutningar och körs lokalt kan samma kod autentisera till Azure-tjänster när den har distribuerats till Azure. I avsnitten nedan beskrivs hur du konfigurerar ett distribuerat program för att ansluta till Azure Event Hubs med hjälp av en hanterad identitet. Hanterade identiteter ger en automatiskt hanterad identitet i Microsoft Entra ID som program kan använda vid anslutning till resurser som stöder autentisering med Microsoft Entra. Läs mer om hanterade identiteter:

Skapa den hanterade identiteten

Du kan skapa en användartilldelad hanterad identitet med hjälp av Azure-portalen eller Azure CLI. Ditt program använder identiteten för att autentisera till andra tjänster.

  1. Överst i Azure-portalen söker du efter hanterade identiteter. Välj resultatet Hanterade identiteter .
  2. Välj + Skapa överst på översiktssidan för hanterade identiteter .
  3. På fliken Grundläggande anger du följande värden:
    • Prenumeration: Välj önskad prenumeration.
    • Resursgrupp: Välj önskad resursgrupp.
    • Region: Välj en region nära din plats.
    • Namn: Ange ett igenkännbart namn för din identitet, till exempel MigrationIdentity.
  4. Välj Granska + skapa längst ned på sidan.
  5. När verifieringen har slutförts väljer du Skapa. Azure skapar en ny användartilldelad identitet.

När resursen har skapats väljer du Gå till resurs för att visa information om den hanterade identiteten.

En skärmbild som visar hur du skapar en användartilldelad hanterad identitet.

Associera den hanterade identiteten med din webbapp

Du måste konfigurera webbappen så att den använder den hanterade identitet som du skapade. Tilldela identiteten till din app med hjälp av antingen Azure-portalen eller Azure CLI.

Slutför följande steg i Azure-portalen för att associera en identitet med din app. Samma steg gäller för följande Azure-tjänster:

  • Azure Spring Apps
  • Azure Container Apps
  • Virtuella Azure-datorer
  • Azure Kubernetes Service
  1. Gå till översiktssidan för webbappen.

  2. Välj Identitet i det vänstra navigeringsfältet.

  3. På sidan Identitet växlar du till fliken Användartilldelad .

  4. Välj + Lägg till för att öppna den utfällbara menyn Lägg till användartilldelad hanterad identitet .

  5. Välj den prenumeration som du använde tidigare för att skapa identiteten.

  6. Sök efter MigrationIdentity efter namn och välj den i sökresultaten.

  7. Välj Lägg till för att associera identiteten med din app.

    Skärmbild som visar hur du skapar en användartilldelad identitet.

Tilldela roller till den hanterade identiteten

Därefter måste du bevilja behörigheter till den hanterade identitet som du skapade för att få åtkomst till din händelsehubb. Bevilja behörigheter genom att tilldela en roll till den hanterade identiteten, precis som du gjorde med din lokala utvecklingsanvändare.

  1. Gå till översiktssidan för händelsehubben och välj Åtkomstkontroll (IAM) i det vänstra navigeringsfältet.

  2. Välj Lägg till rolltilldelning

    Skärmbild som visar hur du lägger till en roll i en hanterad identitet.

  3. I sökrutan Roll söker du efter Azure Event Hubs Data Sender, som är en vanlig roll som används för att hantera dataåtgärder för köer. Du kan tilldela vilken roll som är lämplig för ditt användningsfall. Välj Azure Event Hubs Data Sender i listan och välj Nästa.

  4. På skärmen Lägg till rolltilldelning går du till alternativet Tilldela åtkomst till och väljer Hanterad identitet. Välj sedan +Välj medlemmar.

  5. I den utfällbara menyn söker du efter den hanterade identitet som du skapade med namn och väljer den i resultatet. Välj Välj för att stänga den utfällbara menyn.

    Skärmbild som visar hur du väljer den tilldelade hanterade identiteten.

  6. Välj Nästa ett par gånger tills du kan välja Granska + tilldela för att slutföra rolltilldelningen.

  7. Upprepa de här stegen för rollen Azure Event Hub Data Receiver .

Uppdatera programkoden

Du måste konfigurera programkoden för att söka efter den specifika hanterade identitet som du skapade när den distribuerades till Azure. I vissa scenarier förhindrar explicit inställning av den hanterade identiteten för appen även andra miljöidentiteter från att oavsiktligt identifieras och användas automatiskt.

  1. På översiktssidan för hanterad identitet kopierar du klient-ID-värdet till Urklipp.

  2. Tillämpa följande språkspecifika ändringar:

    Skapa ett DefaultAzureCredentialOptions objekt och skicka det till DefaultAzureCredential. Ange egenskapen ManagedIdentityClientId till klient-ID:t.

    DefaultAzureCredential credential = new(
        new DefaultAzureCredentialOptions
        {
            ManagedIdentityClientId = managedIdentityClientId
        });
    
  3. Distribuera om koden till Azure när du har gjort den här ändringen för att konfigurationsuppdateringarna ska tillämpas.

Testa appen

När du har distribuerat den uppdaterade koden bläddrar du till ditt värdbaserade program i webbläsaren. Appen bör kunna ansluta till händelsehubben. Tänk på att det kan ta flera minuter innan rolltilldelningarna sprids via din Azure-miljö. Ditt program är nu konfigurerat att köras både lokalt och i en produktionsmiljö utan att utvecklarna behöver hantera hemligheter i själva programmet.

Nästa steg

I den här självstudien har du lärt dig hur du migrerar ett program till lösenordslösa anslutningar.

Du kan läsa följande resurser för att utforska begreppen som beskrivs i den här artikeln mer ingående: