Migrowanie aplikacji do używania połączeń bez hasła z usługą Azure Queue Storage

Żądania aplikacji do usług platformy Azure muszą być uwierzytelniane przy użyciu konfiguracji, takich jak klucze dostępu do konta lub połączenia bez hasła. Jednak w miarę możliwości należy określić priorytety połączeń bez hasła w aplikacjach. Tradycyjne metody uwierzytelniania korzystające z haseł lub kluczy tajnych tworzą zagrożenia bezpieczeństwa i komplikacje. Odwiedź centrum usług platformy Azure bez hasła, aby dowiedzieć się więcej o zaletach przechodzenia do połączeń bez hasła.

W poniższym samouczku wyjaśniono, jak przeprowadzić migrację istniejącej aplikacji w celu nawiązania połączenia przy użyciu połączeń bez hasła. Te same kroki migracji powinny mieć zastosowanie niezależnie od tego, czy używasz kluczy dostępu, parametry połączenia, czy innego podejścia opartego na wpisach tajnych.

Konfigurowanie lokalnego środowiska deweloperskiego

Połączenia bez hasła można skonfigurować tak, aby działały zarówno w środowiskach lokalnych, jak i hostowanych na platformie Azure. W tej sekcji zastosujesz konfiguracje, aby umożliwić poszczególnym użytkownikom uwierzytelnianie w usłudze Azure Queue Storage na potrzeby programowania lokalnego.

Przypisywanie ról użytkowników

Podczas tworzenia aplikacji lokalnie upewnij się, że konto użytkownika, które uzyskuje dostęp do usługi Queue Storage, ma odpowiednie uprawnienia. Musisz mieć rolę Współautor danych kolejki magazynu, aby odczytywać i zapisywać dane kolejki. Aby przypisać sobie tę rolę, musisz przypisać rolę Administracja istratora dostępu użytkowników lub inną rolę obejmującą akcję Microsoft.Authorization/roleAssignments/write. Role RBAC platformy Azure można przypisać użytkownikowi przy użyciu witryny Azure Portal, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell. Dowiedz się więcej o dostępnych zakresach przypisań ról na stronie przeglądu zakresu.

W poniższym przykładzie przypisano rolę Współautor danych kolejki usługi Storage do konta użytkownika. Ta rola udziela dostępu do odczytu i zapisu do danych w kolejce na koncie magazynu.

  1. W witrynie Azure Portal znajdź konto magazynu przy użyciu głównego paska wyszukiwania lub nawigacji po lewej stronie.

  2. Na stronie przeglądu konta magazynu wybierz pozycję Kontrola dostępu (Zarządzanie dostępem i tożsamościami) z menu po lewej stronie.

  3. Na stronie Kontrola dostępu (Zarządzanie dostępem i tożsamościami) wybierz kartę Przypisania ról.

  4. Wybierz pozycję + Dodaj z górnego menu, a następnie pozycję Dodaj przypisanie roli z wyświetlonego menu rozwijanego.

    A screenshot showing how to assign a role.

  5. Użyj pola wyszukiwania, aby filtrować wyniki do żądanej roli. W tym przykładzie wyszukaj pozycję Współautor danych kolejki usługi Storage i wybierz pasujący wynik, a następnie wybierz pozycję Dalej.

  6. W obszarze Przypisz dostęp do wybierz pozycję Użytkownik, grupa lub jednostka usługi, a następnie wybierz pozycję + Wybierz członków.

  7. W oknie dialogowym wyszukaj nazwę użytkownika firmy Microsoft Entra (zazwyczaj adres e-mail user@domain ), a następnie wybierz pozycję Wybierz w dolnej części okna dialogowego.

  8. Wybierz pozycję Przejrzyj i przypisz , aby przejść do ostatniej strony, a następnie ponownie przejrzyj i przypisz, aby ukończyć proces.

Ważne

W większości przypadków propagowanie przypisania roli na platformie Azure potrwa minutę lub dwie, ale w rzadkich przypadkach może upłynąć do ośmiu minut. Jeśli podczas pierwszego uruchomienia kodu wystąpią błędy uwierzytelniania, zaczekaj chwilę i spróbuj ponownie.

Logowanie do platformy Azure lokalnie

W przypadku programowania lokalnego upewnij się, że uwierzytelniasz się przy użyciu tego samego konta Microsoft Entra, do którego przypisano rolę. Możesz uwierzytelnić się za pomocą popularnych narzędzi programistycznych, takich jak interfejs wiersza polecenia platformy Azure lub program Azure PowerShell. Narzędzia programistyczne, za pomocą których można uwierzytelniać się w różnych językach.

Zaloguj się do platformy Azure za pomocą interfejsu wiersza polecenia platformy Azure przy użyciu następującego polecenia:

az login

Aktualizowanie kodu aplikacji w celu używania połączeń bez hasła

Biblioteka klienta tożsamości platformy Azure dla każdego z następujących ekosystemów udostępnia klasę DefaultAzureCredential , która obsługuje uwierzytelnianie bez hasła na platformie Azure:

DefaultAzureCredential obsługuje wiele metod uwierzytelniania. Metoda do użycia jest określana w czasie wykonywania. Takie podejście umożliwia aplikacji używanie różnych metod uwierzytelniania w różnych środowiskach (lokalnych i produkcyjnych) bez implementowania kodu specyficznego dla środowiska. Zapoznaj się z powyższymi linkami dla kolejności i lokalizacji, w których DefaultAzureCredential szuka poświadczeń.

  1. Aby użyć DefaultAzureCredential w aplikacji .NET, zainstaluj Azure.Identity pakiet:

    dotnet add package Azure.Identity
    
  2. W górnej części pliku dodaj następujący kod:

    using Azure.Identity;
    
  3. Zidentyfikuj lokalizacje w kodzie, które tworzą obiekt do nawiązywania połączenia z usługą QueueClient Azure Queue Storage. Zaktualizuj kod, aby był zgodny z następującym przykładem:

    DefaultAzureCredential credential = new();
    
    QueueClient queueClient = new(
         new Uri($"https://{storageAccountName}.queue.core.windows.net/{queueName}"),
         new DefaultAzureCredential());
    
  1. Pamiętaj, aby zaktualizować nazwę konta magazynu w identyfikatorze URI QueueClient obiektu. Nazwę konta magazynu można znaleźć na stronie przeglądu witryny Azure Portal.

    Screenshot showing how to find the storage account name.

Lokalne uruchamianie aplikacji

Po wprowadzeniu tych zmian w kodzie uruchom aplikację lokalnie. Nowa konfiguracja powinna pobierać poświadczenia lokalne, takie jak interfejs wiersza polecenia platformy Azure, program Visual Studio lub IntelliJ. Role przypisane do użytkownika na platformie Azure umożliwiają aplikacji nawiązywanie połączenia z usługą platformy Azure lokalnie.

Konfigurowanie środowiska hostingu platformy Azure

Po skonfigurowaniu aplikacji do korzystania z połączeń bez hasła i uruchamianiu lokalnie ten sam kod może uwierzytelniać się w usługach platformy Azure po jej wdrożeniu na platformie Azure. W poniższych sekcjach opisano sposób konfigurowania wdrożonej aplikacji w celu nawiązania połączenia z usługą Azure Queue Storage przy użyciu tożsamości zarządzanej. Tożsamości zarządzane zapewniają automatyczną tożsamość zarządzaną w usłudze Microsoft Entra ID dla aplikacji używanych podczas nawiązywania połączenia z zasobami obsługującymi uwierzytelnianie firmy Microsoft Entra. Dowiedz się więcej o tożsamościach zarządzanych:

Tworzenie tożsamości zarządzanej

Tożsamość zarządzaną przypisaną przez użytkownika można utworzyć przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure. Aplikacja używa tożsamości do uwierzytelniania w innych usługach.

  1. W górnej części witryny Azure Portal wyszukaj pozycję Tożsamości zarządzane. Wybierz wynik tożsamości zarządzanych.
  2. Wybierz pozycję + Utwórz w górnej części strony przeglądu tożsamości zarządzanych .
  3. Na karcie Podstawy wprowadź następujące wartości:
    • Subskrypcja: wybierz żądaną subskrypcję.
    • Grupa zasobów: wybierz żądaną grupę zasobów.
    • Region: wybierz region w pobliżu lokalizacji.
    • Nazwa: wprowadź rozpoznawalną nazwę tożsamości, taką jak MigrationIdentity.
  4. Wybierz pozycję Przejrzyj i utwórz w dolnej części strony.
  5. Po zakończeniu sprawdzania poprawności wybierz pozycję Utwórz. Platforma Azure tworzy nową tożsamość przypisaną przez użytkownika.

Po utworzeniu zasobu wybierz pozycję Przejdź do zasobu , aby wyświetlić szczegóły tożsamości zarządzanej.

A screenshot showing how to create a user assigned managed identity.

Kojarzenie tożsamości zarządzanej z aplikacją internetową

Musisz skonfigurować aplikację internetową tak, aby korzystała z utworzonej tożsamości zarządzanej. Przypisz tożsamość do aplikacji przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure.

Wykonaj następujące kroki w witrynie Azure Portal, aby skojarzyć tożsamość z aplikacją. Te same kroki dotyczą następujących usług platformy Azure:

  • Azure Spring Apps
  • Azure Container Apps
  • Maszyny wirtualne platformy Azure
  • Azure Kubernetes Service
  1. Przejdź do strony przeglądu aplikacji internetowej.

  2. Wybierz pozycję Tożsamość w obszarze nawigacji po lewej stronie.

  3. Na stronie Tożsamość przejdź do karty Przypisane przez użytkownika.

  4. Wybierz pozycję + Dodaj, aby otworzyć okno wysuwane Dodawanie tożsamości zarządzanej przypisanej przez użytkownika.

  5. Wybierz subskrypcję użytą wcześniej do utworzenia tożsamości.

  6. Wyszukaj pozycję MigrationIdentity według nazwy i wybierz ją z wyników wyszukiwania.

  7. Wybierz pozycję Dodaj , aby skojarzyć tożsamość z aplikacją.

    Screenshot showing how to create a user assigned identity.

Przypisywanie ról do tożsamości zarządzanej

Następnie musisz przyznać uprawnienia do tożsamości zarządzanej utworzonej w celu uzyskania dostępu do konta magazynu. Udziel uprawnień, przypisując rolę do tożsamości zarządzanej, podobnie jak w przypadku lokalnego użytkownika dewelopera.

  1. Przejdź do strony przeglądu konta magazynu i wybierz pozycję Kontrola dostępu (Zarządzanie dostępem i tożsamościami) w obszarze nawigacji po lewej stronie.

  2. Wybierz pozycję Dodaj przypisanie roli

    Screenshot showing how to add a role to a managed identity.

  3. W polu wyszukiwania Rola wyszukaj pozycję Współautor danych kolejki magazynu, która jest wspólną rolą używaną do zarządzania operacjami danych dla kolejek. Możesz przypisać dowolną rolę odpowiednią dla danego przypadku użycia. Wybierz z listy pozycję Współautor danych kolejki magazynu, a następnie wybierz pozycję Dalej.

  4. Na ekranie Dodawanie przypisania roli dla opcji Przypisz dostęp do wybierz pozycję Tożsamość zarządzana. Następnie wybierz pozycję +Wybierz członków.

  5. W oknie wysuwaym wyszukaj tożsamość zarządzaną utworzoną według nazwy i wybierz ją z wyników. Wybierz pozycję Wybierz , aby zamknąć menu wysuwane.

    Screenshot showing how to select the assigned managed identity.

  6. Wybierz pozycję Dalej kilka razy, dopóki nie będzie można wybrać pozycji Przejrzyj i przypisz , aby zakończyć przypisanie roli.

Aktualizowanie kodu aplikacji

Należy skonfigurować kod aplikacji, aby wyszukać określoną tożsamość zarządzaną utworzoną podczas wdrażania na platformie Azure. W niektórych scenariuszach jawne ustawienie tożsamości zarządzanej aplikacji zapobiega również przypadkowemu wykryciu i użyciu innych tożsamości środowiska.

  1. Na stronie przeglądu tożsamości zarządzanej skopiuj wartość identyfikatora klienta do schowka.

  2. Zastosuj następujące zmiany specyficzne dla języka:

    DefaultAzureCredentialOptions Utwórz obiekt i przekaż go do DefaultAzureCredentialobiektu . Ustaw właściwość ManagedIdentityClientId na identyfikator klienta.

    DefaultAzureCredential credential = new(
        new DefaultAzureCredentialOptions
        {
            ManagedIdentityClientId = managedIdentityClientId
        });
    
  3. Ponownie wdróż kod na platformie Azure po wprowadzeniu tej zmiany w celu zastosowania aktualizacji konfiguracji.

Testowanie aplikacji

Po wdrożeniu zaktualizowanego kodu przejdź do hostowanej aplikacji w przeglądarce. Aplikacja powinna mieć możliwość pomyślnego nawiązania połączenia z kontem magazynu. Należy pamiętać, że propagowanie przypisań ról za pośrednictwem środowiska platformy Azure może potrwać kilka minut. Aplikacja jest teraz skonfigurowana do uruchamiania zarówno lokalnie, jak i w środowisku produkcyjnym bez konieczności zarządzania wpisami tajnymi w samej aplikacji.

Następne kroki

W tym samouczku przedstawiono sposób migrowania aplikacji do połączeń bez hasła.

Aby zapoznać się z pojęciami omówionymi w tym artykule, zapoznaj się z następującymi zasobami: