Uwierzytelnianie aplikacji hostowanych na platformie Azure do zasobów platformy Azure przy użyciu zestawu Azure SDK dla platformy .NET

Jeśli aplikacja jest hostowana na platformie Azure przy użyciu usługi, takiej jak aplikacja systemu Azure Service, Azure Virtual Machines lub Azure Container Instances, zalecanym podejściem do uwierzytelniania aplikacji w zasobach platformy Azure jest użycie tożsamości zarządzanej.

Tożsamość zarządzana zapewnia tożsamość aplikacji, tak aby mogła łączyć się z innymi zasobami platformy Azure bez konieczności używania klucza tajnego lub innego wpisu tajnego aplikacji. Wewnętrznie platforma Azure zna tożsamość aplikacji 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 bez konieczności zarządzania wpisami tajnymi aplikacji.

Typy tożsamości zarządzanych

Istnieją dwa typy tożsamości zarządzanych:

  • Tożsamości zarządzane przypisane przez system — ten typ tożsamości zarządzanej jest dostarczany i powiązany bezpośrednio z zasobem platformy Azure. Po włączeniu tożsamości zarządzanej w zasobie platformy Azure uzyskasz tożsamość zarządzaną przypisaną przez system dla tego zasobu. Tożsamość zarządzana przypisana przez system jest powiązana z cyklem życia zasobu platformy Azure, z którym jest skojarzony. Po usunięciu zasobu platforma Azure automatycznie usunie tożsamość. Ponieważ wystarczy włączyć tożsamość zarządzaną dla zasobu platformy Azure hostowania kodu, jest to najprostszy typ tożsamości zarządzanej do użycia.
  • Tożsamości zarządzane przypisane przez użytkownika — możesz również utworzyć tożsamość zarządzaną jako autonomiczny zasób platformy Azure. Jest to najczęściej używane, gdy rozwiązanie ma wiele obciążeń uruchamianych w wielu zasobach platformy Azure, które muszą współdzielić tę samą tożsamość i te same uprawnienia. Jeśli na przykład rozwiązanie zawiera składniki uruchomione w wielu wystąpieniach usługi App Service i maszyn wirtualnych, które wymagały dostępu do tego samego zestawu zasobów platformy Azure, tworzenie i używanie tożsamości zarządzanej przypisanej przez użytkownika w tych zasobach miałoby sens.

W tym artykule opisano kroki włączania i używania tożsamości zarządzanej przypisanej przez system dla aplikacji. Jeśli musisz użyć tożsamości zarządzanej przypisanej przez użytkownika, zobacz artykuł Zarządzanie tożsamościami zarządzanymi przypisanymi przez użytkownika, aby zobaczyć, jak utworzyć tożsamość zarządzaną przypisaną przez użytkownika.

1 — Włączanie tożsamości zarządzanej w zasobie platformy Azure hostowania aplikacji

Pierwszym krokiem jest włączenie tożsamości zarządzanej na platformie Azure hostowania aplikacji. Jeśli na przykład hostujesz aplikację .NET przy użyciu usługi aplikacja systemu Azure Service, musisz włączyć tożsamość zarządzaną dla aplikacji internetowej usługi App Service, która hostuje aplikację. Jeśli używasz maszyny wirtualnej do hostowania aplikacji, możesz zezwolić maszynie wirtualnej na korzystanie z tożsamości zarządzanej.

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

Instrukcje Zrzut ekranu
Przejdź do zasobu, który hostuje kod aplikacji w witrynie Azure Portal.

Możesz na przykład wpisać nazwę zasobu w polu wyszukiwania w górnej części strony i przejść do niego, wybierając ją w oknie dialogowym.
A screenshot showing how to use the top search bar in the Azure portal to locate and navigate to a resource in Azure.
Na stronie zasobu wybierz element menu Tożsamość z menu po lewej stronie.

Wszystkie zasoby platformy Azure obsługujące tożsamość zarządzaną będą miały element menu Tożsamość , mimo że układ menu może się nieco różnić.
A screenshot showing the location of the Identity menu item in the left-hand menu for an Azure resource.
Na stronie Tożsamość:
  1. Zmień suwak Stan na Włączone.
  2. Kliknij przycisk Zapisz.
Okno dialogowe potwierdzenia zweryfikuje, czy chcesz włączyć tożsamość zarządzaną dla usługi. Odpowiedź Tak i tożsamość zarządzana zostanie włączona dla zasobu platformy Azure.
A screenshot showing how to enable managed identity for an Azure resource on the resource's Identity page.

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

Następnie należy określić, jakich ról (uprawnień) potrzebuje twoja aplikacja, i przypisać tożsamość zarządzaną do tych ról na platformie Azure. Tożsamość zarządzana może mieć przypisane role w zakresie zasobu, grupy zasobów lub subskrypcji. W tym przykładzie pokazano, jak przypisywać role w zakresie grupy zasobów, ponieważ większość aplikacji grupuje wszystkie zasoby platformy Azure w jedną grupę zasobów.

Instrukcje Zrzut ekranu
Znajdź grupę zasobów dla aplikacji, wyszukując nazwę grupy zasobów przy użyciu pola wyszukiwania w górnej części witryny Azure Portal.

Przejdź do grupy zasobów, wybierając nazwę grupy zasobów pod nagłówkiem Grupy zasobów w oknie dialogowym.
A screenshot showing how to use the top search bar in the Azure portal to locate and navigate to a resource group in Azure. This is the resource group that you'll assign roles (permissions) to.
Na stronie grupy zasobów wybierz pozycję Kontrola dostępu (Zarządzanie dostępem i tożsamościami) z menu po lewej stronie. A screenshot showing the location of the Access control (IAM) menu item in the left-hand menu of an Azure resource group.
Na stronie Kontrola dostępu (Zarządzanie dostępem i tożsamościami):
  1. Wybierz kartę Przypisania roli.
  2. Wybierz pozycję + Dodaj z górnego menu, a następnie pozycję Dodaj przypisanie roli z wyświetlonego menu rozwijanego.
A screenshot showing how to navigate to the role assignments tab and the location of the button used to add role assignments to a resource group.
Strona Dodawanie przypisania roli zawiera listę wszystkich ról, które można przypisać dla grupy zasobów.
  1. Użyj pola wyszukiwania, aby przefiltrować listę do bardziej możliwego do zarządzania rozmiaru. W tym przykładzie pokazano, jak filtrować role obiektów blob usługi Storage.
  2. Wybierz rolę, którą chcesz przypisać.
Wybierz przycisk Dalej , aby przejść do następnego ekranu.
A screenshot showing how to filter and select role assignments to be added to the resource group.
Następna strona Dodawanie przypisania roli umożliwia określenie, do którego użytkownika ma zostać przypisana rola.
  1. Wybierz pozycję Tożsamość zarządzana w obszarze Przypisz dostęp do.
  2. Wybierz pozycję + Wybierz członków w obszarze Członkowie
Zostanie otwarte okno dialogowe po prawej stronie witryny Azure Portal.
A screenshot showing how to select managed identity as the type of user you want to assign the role (permission) on the add role assignments page.
W oknie dialogowym Wybieranie tożsamości zarządzanych:
  1. Lista rozwijana Tożsamość zarządzana i Pole tekstowe Wybierz można użyć do filtrowania listy tożsamości zarządzanych w ramach subskrypcji. W tym przykładzie, wybierając pozycję App Service, wyświetlane są tylko tożsamości zarządzane skojarzone z usługą App Service.
  2. Wybierz tożsamość zarządzaną dla zasobu platformy Azure hostowania aplikacji.
Wybierz pozycję Wybierz w dolnej części okna dialogowego, aby kontynuować.
A screenshot showing how to use the select managed identities dialog to filter and select the managed identity to assign the role to.
Tożsamość zarządzana będzie teraz wyświetlana jako wybrana na ekranie Dodawanie przypisania roli.

Wybierz pozycję Przejrzyj i przypisz , aby przejść do ostatniej strony, a następnie ponownie przejrzyj i przypisz, aby ukończyć proces.
A screenshot of the final add role assignment screen where a user needs to select the Review + Assign button to finalize the role assignment.

3 — Implementowanie wartości domyślnejAzureCredential w aplikacji

DefaultAzureCredential obsługuje wiele metod uwierzytelniania i określa metodę uwierzytelniania używaną w czasie wykonywania. W ten sposób aplikacja może używać różnych metod uwierzytelniania w różnych środowiskach bez implementowania kodu specyficznego dla środowiska.

Kolejność i lokalizacje, w których DefaultAzureCredential wyszukiwanie poświadczeń znajduje się w obszarze DefaultAzureCredential.

Aby zaimplementować element DefaultAzureCredential, najpierw dodaj Azure.Identity pakiety i opcjonalnie Microsoft.Extensions.Azure do aplikacji. Można to zrobić przy użyciu wiersza polecenia lub Menedżer pakietów NuGet.

Otwórz wybrane środowisko terminalowe w katalogu projektu aplikacji i wprowadź poniższe polecenie.

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

Dostęp do usług platformy Azure jest zwykle uzyskiwany przy użyciu odpowiednich klas klientów z zestawu SDK. Te klasy i własne usługi niestandardowe powinny być zarejestrowane w Program.cs pliku, aby można było uzyskać do nich dostęp za pośrednictwem wstrzykiwania zależności w całej aplikacji. W pliku Program.cswykonaj poniższe kroki, aby poprawnie skonfigurować usługę i DefaultAzureCredential.

  1. Uwzględnij Azure.Identity przestrzenie nazw i Microsoft.Extensions.Azure z instrukcją using.
  2. Zarejestruj usługę platformy Azure przy użyciu odpowiednich metod pomocnika.
  3. Przekaż wystąpienie DefaultAzureCredential obiektu do UseCredential metody .

Przykład jest pokazany w następującym segmencie kodu.

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

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

Alternatywnie możesz również korzystać DefaultAzureCredential z usług bardziej bezpośrednio bez pomocy dodatkowych metod rejestracji platformy Azure, jak pokazano poniżej.

using Azure.Identity;

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

Gdy powyższy kod jest uruchamiany na lokalnej stacji roboczej podczas programowania lokalnego, będzie on wyglądał w zmiennych środowiskowych dla jednostki usługi aplikacji lub w programie Visual Studio, VS Code, interfejsie wiersza polecenia platformy Azure lub programie Azure PowerShell dla zestawu poświadczeń dewelopera, których 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 program może automatycznie pobierać ustawienia środowiska i konfiguracje tożsamości zarządzanej w celu automatycznego uwierzytelniania w innych usługach.