Udostępnij za pośrednictwem


Uwierzytelnianie aplikacji platformy .NET hostowanych na platformie Azure do zasobów platformy Azure przy użyciu przypisanej przez system tożsamości zarządzanej

Zalecaną metodą uwierzytelniania aplikacji hostowanej na platformie Azure w innych zasobach platformy Azure jest użycie tożsamości zarządzanej . Takie podejście jest obsługiwane w przypadku większości usług platformy Azure, w tym aplikacji hostowanych w usługach Azure App Service, Azure Container Apps i Azure Virtual Machines. Dowiedz się więcej o różnych technikach uwierzytelniania i podejściach na stronie przeglądu uwierzytelniania . W nadchodzących sekcjach dowiesz się:

  • Podstawowe pojęcia dotyczące tożsamości zarządzanej
  • Jak utworzyć tożsamość zarządzaną przypisaną przez system dla aplikacji
  • Jak przypisać role do tożsamości zarządzanej przypisanej przez system
  • Jak uwierzytelniać się z kodu aplikacji, używając tożsamości zarządzanej przypisanej przez system

Podstawowe pojęcia dotyczące tożsamości zarządzanej

Tożsamość zarządzana umożliwia aplikacji bezpieczne łączenie się z innymi zasobami platformy Azure bez używania tajnych kluczy lub danych aplikacji. Wewnętrznie platforma Azure śledzi tożsamość i zasoby, z którymi może się łączyć. Platforma Azure używa tych informacji do automatycznego uzyskiwania tokenów usługi Microsoft Entra dla aplikacji, aby umożliwić jej łączenie się z innymi zasobami platformy Azure.

Istnieją dwa typy tożsamości zarządzanych, które należy wziąć pod uwagę podczas konfigurowania hostowanej aplikacji:

  • tożsamości zarządzane przypisane przez system są włączone bezpośrednio w zasobie platformy Azure i są powiązane z cyklem życia. Po usunięciu zasobu platforma Azure automatycznie usunie tożsamość. Tożsamości przypisane przez system zapewniają minimalistyczne podejście do korzystania z tożsamości zarządzanych.
  • Tożsamości zarządzane przypisane przez użytkownika są tworzone jako autonomiczne zasoby Azure i oferują większą elastyczność oraz możliwości. Są one idealne w przypadku rozwiązań obejmujących wiele zasobów platformy Azure, które muszą współdzielić tę samą tożsamość i uprawnienia. Jeśli na przykład wiele maszyn wirtualnych musi uzyskać dostęp do tego samego zestawu zasobów platformy Azure, tożsamość zarządzana przypisana przez użytkownika zapewnia możliwość ponownego obsługi i zoptymalizowane zarządzanie.

Napiwek

Dowiedz się więcej na temat wybierania tożsamości zarządzanych przypisanych przez system i tożsamości zarządzanych przypisanych przez użytkownika oraz zarządzania nimi w artykule Zalecenia dotyczące najlepszych rozwiązań dotyczących tożsamości zarządzanych.

W poniższych sekcjach opisano kroki włączania i używania przypisanej przez system tożsamości zarządzanej dla aplikacji hostowanej na platformie Azure. Jeśli chcesz użyć tożsamości zarządzanej przypisanej przez użytkownika, odwiedź artykuł tożsamości zarządzanych przypisanych przez użytkownika, aby uzyskać więcej informacji.

Włącz tożsamość zarządzaną przypisaną przez system w zasobie hostowanym na platformie Azure

Aby rozpocząć korzystanie z systemowo przypisanej tożsamości zarządzanej z aplikacją, włącz tożsamość w zasobie platformy Azure hostującym aplikację, takim jak usługa Azure App Service, usługa Azure Container Apps lub maszyna wirtualna platformy Azure.

Tożsamość zarządzaną przypisaną przez system dla zasobu platformy Azure można włączyć przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure.

  1. W portalu Azure przejdź do zasobu, który hostuje kod aplikacji, na przykład Azure App Service lub Azure Container Apps.

  2. Na stronie przeglądu zasobu rozwiń Ustawienia i wybierz pozycję Identity z nawigacji.

  3. Na stronie Identity przełącz suwak stanu , aby w pozycji Włączone.

  4. Wybierz Zapisz, aby zastosować zmiany.

    Zrzut ekranu przedstawiający sposób włączania tożsamości przypisanej przez system w aplikacji kontenera.

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

Następnie określ, które role potrzebuje Twoja aplikacja, i przypisz te role do tożsamości zarządzanej. Role można przypisać do tożsamości zarządzanej w następujących zakresach:

  • Zasób: przypisane role mają zastosowanie wyłącznie do tego konkretnego zasobu.
  • grupa zasobów: przypisane role mają zastosowanie do wszystkich zasobów zawartych w grupie zasobów.
  • Subskrypcja: Role przypisane mają zastosowanie do wszystkich zasobów zawartych w subskrypcji.

W poniższym przykładzie pokazano, jak przypisywać role w zakresie grupy zasobów, ponieważ wiele aplikacji zarządza wszystkimi powiązanymi zasobami platformy Azure przy użyciu jednej grupy zasobów.

  1. Przejdź do strony Przegląd grupy zasobów zawierającej aplikację z przypisaną przez system tożsamością zarządzaną.

  2. Wybierz pozycję Kontrola dostępu (IAM) na lewym panelu nawigacyjnym.

  3. Na stronie Kontrola dostępu (IAM) wybierz pozycję + Dodaj w górnym menu, a następnie wybierz pozycję Określenie roli, aby przejść do strony Określenie roli.

    Zrzut ekranu przedstawiający sposób uzyskiwania dostępu do strony przypisania roli tożsamości.

  4. Strona Dodawanie przypisania roli przedstawia kartotekowy, wieloetapowy przepływ pracy do przypisywania ról do tożsamości. Na zakładce początkowej Rola użyj pola wyszukiwania u góry, aby zlokalizować rolę, którą chcesz przypisać tożsamości.

  5. Wybierz rolę z wyników, a następnie wybierz opcję Dalej, aby przejść do karty członków.

  6. Dla opcji Przypisz dostęp do wybierz pozycję Tożsamość zarządzana.

  7. W przypadku opcji członkowie wybierz pozycję + Wybierz członków, aby otworzyć panel Wybierz zarządzane tożsamości .

  8. Na panelu Wybierz Zarządzane Tożsamości użyj list rozwijanych subskrypcji i tożsamości zarządzanej , aby filtrować wyniki wyszukiwania dla Twoich tożsamości. Użyj pola wyszukiwania Wybierz, aby zlokalizować tożsamość systemową włączoną dla zasobu platformy Azure hostowania aplikacji.

    Zrzut ekranu przedstawiający proces przypisywania tożsamości zarządzanej.

  9. Wybierz tożsamość i wybierz pozycję Wybierz w dolnej części panelu, aby kontynuować.

  10. Wybierz opcję Przejrzyj i przypisz na dole strony.

  11. Na ostatniej karcie Przeglądanie i przypisywanie wybierz opcję Przejrzyj i przypisz, aby zakończyć proces pracy.

Zaimplementuj DefaultAzureCredential w swojej aplikacji

DefaultAzureCredential to przemyślana, uporządkowana sekwencja mechanizmów do uwierzytelniania w usłudze Microsoft Entra ID. Każdy mechanizm uwierzytelniania jest klasą pochodzącą z klasy TokenCredential i jest znana jako poświadczenie. W czasie wykonywania DefaultAzureCredential próbuje uwierzytelnić się przy użyciu pierwszego poświadczenia. Jeśli to poświadczenie nie może uzyskać tokenu dostępu, zostanie podjęta próba następnego poświadczenia w sekwencji itd., dopóki token dostępu nie zostanie pomyślnie uzyskany. W ten sposób aplikacja może używać różnych poświadczeń w różnych środowiskach bez konieczności pisania kodu specyficznego dla środowiska.

Aby użyć DefaultAzureCredential, dodaj pakiet Azure.Identity i, opcjonalnie, pakiet Microsoft.Extensions.Azure do aplikacji.

W wybranym terminalu przejdź do katalogu projektu aplikacji i uruchom następujące polecenia:

dotnet add package Azure.Identity
dotnet add package Microsoft.Extensions.Azure

Dostęp do usług platformy Azure jest uzyskiwany przy użyciu wyspecjalizowanych klas klientów z różnych bibliotek klienckich zestawu Azure SDK. Te klasy i własne usługi niestandardowe powinny być zarejestrowane, aby można było uzyskać do nich dostęp za pośrednictwem wstrzykiwania zależności w ramach całej aplikacji. W Program.cswykonaj następujące kroki, aby zarejestrować klasę klienta i DefaultAzureCredential:

  1. Uwzględnij przestrzenie nazw Azure.Identity i Microsoft.Extensions.Azure za pomocą dyrektyw using.
  2. Zarejestruj klienta usługi platformy Azure, używając odpowiedniej metody rozszerzenia z prefiksem Add.
  3. Przekaż wystąpienie DefaultAzureCredential do metody UseCredential.

Na przykład:

using Microsoft.Extensions.Azure;
using Azure.Identity;

builder.Services.AddAzureClients(clientBuilder =>
{
    clientBuilder.AddBlobServiceClient(
        new Uri("https://<account-name>.blob.core.windows.net"));
    clientBuilder.UseCredential(new DefaultAzureCredential());
});

Alternatywą dla UseCredential jest utworzenie wystąpienia DefaultAzureCredential bezpośrednio:

using Azure.Identity;

builder.Services.AddSingleton<BlobServiceClient>(_ =>
    new BlobServiceClient(
        new Uri("https://<account-name>.blob.core.windows.net"),
        new DefaultAzureCredential()));

Po uruchomieniu poprzedniego kodu na lokalnej stacji roboczej deweloperskiej, sprawdza on zmienne środowiskowe w poszukiwaniu jednostki usługi aplikacji lub narzędzia deweloperskie zainstalowane lokalnie, takie jak Visual Studio, w celu uzyskania zestawu poświadczeń dewelopera. Jedną z metod można użyć do uwierzytelniania aplikacji w zasobach platformy Azure podczas programowania lokalnego.

Po wdrożeniu na platformie Azure ten sam kod może również uwierzytelniać aplikację w innych zasobach platformy Azure. DefaultAzureCredential może pobierać ustawienia środowiska i konfiguracje tożsamości zarządzanej w celu automatycznego uwierzytelniania w innych usługach.