Autentisera Azure-värdbaserade appar till Azure-resurser med Azure SDK för .NET

När en app finns i Azure med hjälp av en tjänst som Azure App Service, Azure Virtual Machines eller Azure Container Instances är den rekommenderade metoden för att autentisera en app till Azure-resurser att använda en hanterad identitet.

En hanterad identitet tillhandahåller en identitet för din app så att den kan ansluta till andra Azure-resurser utan att behöva använda en hemlig nyckel eller annan programhemlighet. Internt känner Azure till identiteten för din app och vilka resurser den tillåts ansluta till. Azure använder den här informationen för att automatiskt hämta Microsoft Entra-token för appen så att den kan ansluta till andra Azure-resurser, allt utan att du behöver hantera några programhemligheter.

Hanterade identitetstyper

Det finns två typer av hanterade identiteter:

  • Systemtilldelade hanterade identiteter – Den här typen av hanterad identitet tillhandahålls av och kopplas direkt till en Azure-resurs. När du aktiverar hanterad identitet på en Azure-resurs får du en systemtilldelad hanterad identitet för den resursen. En systemtilldelad hanterad identitet är kopplad till livscykeln för den Azure-resurs som den är associerad med. När resursen tas bort tar Azure automatiskt bort identiteten åt dig. Eftersom allt du behöver göra är att aktivera hanterad identitet för Den Azure-resurs som är värd för din kod, är detta den enklaste typen av hanterad identitet att använda.
  • Användartilldelade hanterade identiteter – Du kan också skapa en hanterad identitet som en fristående Azure-resurs. Detta används oftast när din lösning har flera arbetsbelastningar som körs på flera Azure-resurser som alla behöver dela samma identitet och samma behörigheter. Om din lösning till exempel hade komponenter som kördes på flera Instanser av App Service och virtuella datorer som alla behövde åtkomst till samma uppsättning Azure-resurser, skulle det vara meningsfullt att skapa och använda en användartilldelad hanterad identitet för dessa resurser.

Den här artikeln beskriver stegen för att aktivera och använda en systemtilldelad hanterad identitet för en app. Om du behöver använda en användartilldelad hanterad identitet kan du läsa artikeln Hantera användartilldelade hanterade identiteter för att se hur du skapar en användartilldelad hanterad identitet.

1 – Aktivera hanterad identitet i Azure-resursen som är värd för appen

Det första steget är att aktivera hanterad identitet på En Azure-resurs som är värd för din app. Om du till exempel är värd för ett .NET-program med Azure App Service måste du aktivera hanterad identitet för App Service-webbappen som är värd för din app. Om du använder en virtuell dator som värd för din app gör du det möjligt för den virtuella datorn att använda hanterad identitet.

Du kan aktivera att hanterad identitet används för en Azure-resurs med hjälp av antingen Azure-portalen eller Azure CLI.

Instruktioner Skärmbild
Gå till resursen som är värd för programkoden i Azure-portalen.

Du kan till exempel skriva namnet på resursen i sökrutan överst på sidan och navigera till den genom att välja den i dialogrutan.
A screenshot showing how to use the top search bar in the Azure portal to locate and navigate to a resource in Azure.
På sidan för resursen väljer du menyalternativet Identitet på den vänstra menyn.

Alla Azure-resurser som kan stödja hanterad identitet har ett menyalternativ för identitet även om menyns layout kan variera något.
A screenshot showing the location of the Identity menu item in the left-hand menu for an Azure resource.
På identitetssidan:
  1. Ändra skjutreglaget Status till .
  2. Klicka på Spara.
En bekräftelsedialogruta verifierar att du vill aktivera hanterad identitet för din tjänst. Svar Ja och hanterad identitet aktiveras för Azure-resursen.
A screenshot showing how to enable managed identity for an Azure resource on the resource's Identity page.

2 – Tilldela roller till den hanterade identiteten

Därefter måste du bestämma vilka roller (behörigheter) din app behöver och tilldela den hanterade identiteten till dessa roller i Azure. En hanterad identitet kan tilldelas roller i ett resurs-, resursgrupps- eller prenumerationsomfång. Det här exemplet visar hur du tilldelar roller i resursgruppens omfång eftersom de flesta program grupperar alla sina Azure-resurser i en enda resursgrupp.

Instruktioner Skärmbild
Leta upp resursgruppen för ditt program genom att söka efter resursgruppens namn med hjälp av sökrutan överst i Azure-portalen.

Gå till resursgruppen genom att välja resursgruppens namn under rubriken Resursgrupper i dialogrutan.
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.
På sidan för resursgruppen väljer du Åtkomstkontroll (IAM) på den vänstra menyn. A screenshot showing the location of the Access control (IAM) menu item in the left-hand menu of an Azure resource group.
På sidan Åtkomstkontroll (IAM):
  1. Välj fliken Rolltilldelningar.
  2. Välj + Lägg till på den översta menyn och sedan Lägg till rolltilldelning från den resulterande nedrullningsbara menyn.
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.
sidan Lägg till rolltilldelning visas alla roller som kan tilldelas för resursgruppen.
  1. Använd sökrutan för att filtrera listan till en mer hanterbar storlek. Det här exemplet visar hur du filtrerar efter Storage Blob-roller.
  2. Välj den roll du vill tilldela.
Välj Nästa för att gå till nästa skärm.
A screenshot showing how to filter and select role assignments to be added to the resource group.
På nästa sida För att lägga till rolltilldelning kan du ange vilken användare som ska tilldela rollen till.
  1. Välj Hanterad identitet under Tilldela åtkomst till.
  2. Välj + Välj medlemmar under Medlemmar
En dialogruta öppnas till höger i Azure-portalen.
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.
I dialogrutan Välj hanterade identiteter:
  1. Listrutan Hanterad identitet och textrutan Välj kan användas för att filtrera listan över hanterade identiteter i din prenumeration. I det här exemplet visas endast hanterade identiteter som är associerade med en App Service genom att välja App Service.
  2. Välj den hanterade identiteten för Den Azure-resurs som är värd för ditt program.
Välj Välj längst ned i dialogrutan för att fortsätta.
A screenshot showing how to use the select managed identities dialog to filter and select the managed identity to assign the role to.
Den hanterade identiteten visas nu som markerad på skärmen Lägg till rolltilldelning .

Välj Granska + tilldela för att gå till den sista sidan och sedan Granska + tilldela igen för att slutföra processen.
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 – Implementera DefaultAzureCredential i ditt program

DefaultAzureCredential stöder flera autentiseringsmetoder och avgör vilken autentiseringsmetod som används vid körning. På så sätt kan din app använda olika autentiseringsmetoder i olika miljöer utan att implementera miljöspecifik kod.

Ordningen och platserna där DefaultAzureCredential du söker efter autentiseringsuppgifter finns i StandardAzureCredential.

Om du vill implementera DefaultAzureCredentiallägger du först till Azure.Identity och eventuellt paketen i Microsoft.Extensions.Azure ditt program. Du kan göra detta med antingen kommandoraden eller NuGet Package Manager.

Öppna valfri terminalmiljö i programprojektkatalogen och ange kommandot nedan.

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

Azure-tjänster används vanligtvis med motsvarande klientklasser från SDK:et. Dessa klasser och dina egna anpassade tjänster bör registreras i Program.cs filen så att de kan nås via beroendeinmatning i hela appen. Program.csI följer du stegen nedan för att konfigurera tjänsten och DefaultAzureCredential.

  1. Azure.Identity Inkludera namnrymderna och Microsoft.Extensions.Azure med en using-instruktion.
  2. Registrera Azure-tjänsten med relevanta hjälpmetoder.
  3. Skicka en instans av DefaultAzureCredential objektet till UseCredential -metoden.

Ett exempel på detta visas i följande kodsegment.

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());
});

Du kan också använda DefaultAzureCredential dina tjänster mer direkt utan hjälp av ytterligare Azure-registreringsmetoder, enligt nedan.

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()));

När koden ovan körs på din lokala arbetsstation under den lokala utvecklingen kommer den att titta i miljövariablerna efter ett huvudnamn för programtjänsten eller i Visual Studio, VS Code, Azure CLI eller Azure PowerShell för en uppsättning autentiseringsuppgifter för utvecklare, som kan användas för att autentisera appen till Azure-resurser under lokal utveckling.

När den här koden distribueras till Azure kan den även autentisera din app till andra Azure-resurser. DefaultAzureCredential kan hämta miljöinställningar och hanterade identitetskonfigurationer för att autentisera till andra tjänster automatiskt.