Sdílet prostřednictvím


Ověřování aplikací .NET hostovaných v Azure s využitím spravované identity přiřazené uživatelem

Doporučeným přístupem k ověření aplikace hostované v Azure u jiných prostředků Azure je použití spravované identity. Tento přístup je podporovaný pro většinu služeb Azure, včetně aplikací hostovaných v Azure App Service, Azure Container Apps a Azure Virtual Machines. Další informace o různých technikách ověřování a přístupech najdete na stránce s přehledem ověřování . V dalších částech se dozvíte:

  • Základní koncepty spravované identity
  • Vytvoření spravované identity přiřazené uživatelem pro vaši aplikaci
  • Přiřazení rolí spravované identitě přiřazené uživatelem
  • Jak se ověřit pomocí spravované identity přiřazené uživatelem z vašeho aplikačního kódu

Základní koncepty spravované identity

Spravovaná identita umožňuje aplikaci bezpečně připojit k jiným prostředkům Azure bez použití tajných klíčů nebo jiných tajných kódů aplikací. Azure interně sleduje identitu a prostředky, ke kterým se může připojit. Azure tyto informace používá k automatickému získání tokenů Microsoft Entra pro aplikaci, aby se mohla připojit k dalším prostředkům Azure.

Při konfiguraci hostované aplikace je potřeba zvážit dva typy spravovaných identit:

  • systémově přiřazené spravované identity jsou povoleny přímo na prostředku Azure a jsou svázané s jeho životním cyklem. Když se prostředek odstraní, Azure automaticky odstraní identitu za vás. Identity přiřazené systémem poskytují minimalistický přístup k používání spravovaných identit.
  • spravované identity přiřazené uživatelem se vytvářejí jako samostatné prostředky Azure a nabízejí větší flexibilitu a možnosti. Jsou ideální pro řešení zahrnující více prostředků Azure, které potřebují sdílet stejnou identitu a oprávnění. Pokud například více virtuálních počítačů potřebuje přístup ke stejné sadě prostředků Azure, spravovaná identita přiřazená uživatelem poskytuje opakovaně použitelný a optimalizovanou správu.

Spropitné

Další informace o výběru a správě spravovaných identit přiřazených systémem a spravovaných identit přiřazených uživatelem najdete v doporučeních k osvědčeným postupům pro spravovanou identitu článku.

Následující části popisují kroky pro povolení a použití spravované identity přiřazené uživatelem pro aplikaci hostované v Azure. Pokud potřebujete použít uživatelem přiřazenou spravovanou identitu, další informace najdete v článku o spravovaných identitách přiřazených systémem.

Vytvořit spravovanou identitu přiřazenou uživatelem

Spravované identity přiřazené uživatelem se ve vašem předplatném Azure vytvářejí jako samostatné prostředky pomocí Azure portálu nebo Azure CLI. Příkazy Azure CLI je možné spouštět v Azure Cloud Shellu nebo na pracovní stanici s nainstalovaným Azure CLI.

  1. V Azure portálu do hlavního panelu hledání zadejte spravované identity a v sekci Služby vyberte odpovídající výsledek.

  2. Na stránce Spravované identity vyberte + Vytvořit.

    snímek obrazovky zobrazující stránku pro správu spravovaných identit přiřazených uživatelem.

  3. Na stránce Vytvořit spravovanou identitu přiřazenou uživatelem vyberte předplatné, skupinu prostředků a oblast spravované identity přiřazené uživatelem a zadejte název.

  4. Vyberte Zkontrolovat a vytvořit pro revizi a ověření vašich vstupů.

    snímek obrazovky znázorňující formulář pro vytvoření spravované identity přiřazené uživatelem

  5. Vyberte Vytvořit a vytvořte spravovanou identitu přiřazenou uživatelem.

  6. Po vytvoření identity vyberte Přejít k prostředku.

  7. Na stránce Přehled nové identity zkopírujte hodnotu ID klienta , která se použije pro pozdější použití při konfiguraci kódu aplikace.

Přiřazení spravované identity k aplikaci

Spravovanou identitu přiřazenou uživatelem je možné přidružit k jednomu nebo více prostředkům Azure. Všechny prostředky, které tuto identitu používají, získají oprávnění použitá prostřednictvím rolí identity.

  1. Na webu Azure Portal přejděte k prostředku, který je hostitelem kódu vaší aplikace, jako je azure App Service nebo instance kontejnerové aplikace Azure.

  2. Na stránce přehledu prostředku rozbalte nastavení a v navigaci vyberte Identit a.

  3. Na stránce Identita přepněte na záložku uživatelsky přiřazené.

  4. Výběrem + Přidat otevřete panel Přidat uživatelem přiřazenou spravovanou identitu.

  5. Na panelu Přidat uživatelsky přiřazenou spravovanou identitu použijte rozevírací seznam Předplatné k filtrování výsledků vyhledávání pro vaše identity. Pomocí vyhledávacího pole uživatelsky přiřazené spravované identity vyhledejte uživatelsky přiřazenou spravovanou identitu, kterou jste povolili pro prostředek Azure hostující vaši aplikaci.

  6. Vyberte identitu a dole na panelu zvolte Přidat, abyste pokračovali.

    snímek obrazovky znázorňující, jak přidružit uživatelem přiřazenou spravovanou identitu k aplikaci.

Přiřazení rolí ke spravované identitě

Dále určete, které role vaše aplikace potřebuje, a přiřaďte tyto role spravované identitě. Spravované identitě můžete přiřadit role v následujících oborech:

  • zdroj: Přiřazené role se vztahují pouze na tento konkrétní zdroj.
  • skupiny prostředků: Přiřazené role se vztahují na všechny prostředky obsažené ve skupině prostředků.
  • Předplatné: Přiřazené role se vztahují na všechny prostředky obsažené v předplatném.

Následující příklad ukazuje, jak přiřadit role v oboru skupiny prostředků, protože mnoho aplikací spravuje všechny související prostředky Azure pomocí jedné skupiny prostředků.

  1. Přejděte na stránku Přehled skupiny prostředků, která obsahuje aplikaci s uživatelsky přiřazenou spravovanou identitou.

  2. V levém navigačním panelu vyberte řízení přístupu (IAM).

  3. Na stránce řízení přístupu (IAM) vyberte + Přidat v horní nabídce a potom zvolte Přidat přiřazení role a přejděte na stránku Přidat přiřazení role.

    snímek obrazovky znázorňující, jak získat přístup ke stránce přiřazení role identity

  4. Na stránce Přidat přiřazení role se zobrazí vícekrokový pracovní postup se záložkami pro přiřazení rolí k identitám. Na úvodní kartě Role vyhledejte roli, kterou chcete přiřadit k identitě, pomocí vyhledávacího pole v horní části.

  5. Ve výsledcích vyberte roli, poté zvolte Další a přejděte na kartu Členové.

  6. Pro volbu Přiřazení přístupu k vyberte Spravovaná identita.

  7. Pro otevření panelu Vybrat spravované identity vyberte u možnosti Členové volbu + Vybrat členy.

  8. Na panelu Vyberte spravované identity použijte rozevírací seznamy předplatného a spravovanou identitu k filtrování výsledků hledání pro vaše identity. Pomocí vyhledávacího pole Vybrat najděte uživatelsky přiřazenou spravovanou identitu, kterou jste povolili pro prostředek Azure hostující vaši aplikaci.

    snímek obrazovky znázorňující proces přiřazení spravované identity

  9. Vyberte identitu a zvolte Pokračujte výběrem v dolní části panelu.

  10. Vyberte Zkontrolovat a přiřadit v dolní části stránky.

  11. Na poslední kartě Zkontrolovat + přiřadit, vyberte možnost Zkontrolovat + přiřadit a dokončete pracovní postup.

Ověřování ve službách Azure z vaší aplikace

Knihovna Azure Identity library poskytuje různé přihlašovací údaje– implementace TokenCredential přizpůsobené podpoře různých scénářů a toků ověřování Microsoft Entra. Vzhledem k tomu, že spravovaná identita není při místním spuštění dostupná, následující kroky ukazují, které přihlašovací údaje použít ve které situaci:

  • místní vývojové prostředí: Pouze během místního vývoje, použijte třídu s názvem DefaultAzureCredential pro předkonfigurovaný a specifický řetězec přihlašovacích údajů. DefaultAzureCredential zjistí přihlašovací údaje uživatele z místního nástroje nebo integrovaného vývojového prostředí(IDE), jako je Azure CLI nebo Visual Studio. Poskytuje také flexibilitu a pohodlí pro opakování, doby čekání na odpovědi a podporu více možností ověřování. Další informace získáte v článku Ověřování ve službách Azure během místního vývoje.
  • aplikace hostované v Azure: Pokud je vaše aplikace spuštěná v Azure, použijte ManagedIdentityCredential k bezpečnému zjištění spravované identity nakonfigurované pro vaši aplikaci. Zadáním tohoto přesného typu přihlašovacích údajů zabráníte neočekávanému vyzvednutí dalších dostupných přihlašovacích údajů.

Implementace kódu

Přidejte balíček Azure.Identity. V projektu ASP.NET Core nainstalujte také balíček Microsoft.Extensions.Azure:

V terminálu podle vašeho výběru přejděte do adresáře projektu aplikace a spusťte následující příkazy:

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

Ke službám Azure se přistupuje pomocí specializovaných klientských tříd z různých klientských knihoven Azure SDK. Tyto třídy a vlastní služby by se měly zaregistrovat pro injektáž závislostí, aby je bylo možné používat v celé aplikaci. V Program.csproveďte následující kroky a nakonfigurujte třídu klienta pro injektáž závislostí a ověřování na základě tokenů:

  1. Zahrňte obory názvů Azure.Identity a Microsoft.Extensions.Azure pomocí direktiv using.
  2. Zaregistrujte klienta služby Azure pomocí odpovídající metody rozšíření s předponou Add.
  3. Předejte příslušnou instanci TokenCredential metodě UseCredential:
    • Použijte DefaultAzureCredential, když je vaše aplikace spuštěná lokálně
    • Použijte ManagedIdentityCredential, když je vaše aplikace spuštěná v Azure, a nakonfigurujte ID klienta, ID prostředku nebo ID objektu.

ID klienta slouží k identifikaci spravované identity při konfiguraci aplikací nebo služeb, které je potřeba ověřit pomocí této identity.

  1. Pomocí následujícího příkazu načtěte ID klienta přiřazené spravované identitě přiřazené uživatelem:

    az identity show \
        --resource-group <resource-group-name> \
        --name <identity-name> \
        --query 'clientId'
    
  2. Nakonfigurujte ManagedIdentityCredential s ID klienta:

    builder.Services.AddAzureClients(clientBuilder =>
    {
        clientBuilder.AddBlobServiceClient(
            new Uri("https://<account-name>.blob.core.windows.net"));
    
        TokenCredential credential = null;
    
        if (builder.Environment.IsProduction() || builder.Environment.IsStaging())
        {
            // Managed identity token credential discovered when running in Azure environments
            credential = new ManagedIdentityCredential(
                ManagedIdentityId.FromUserAssignedClientId("<client-id>"));
        } 
        else 
        {
            // Running locally on dev machine - DO NOT use in production or outside of local dev
            credential = new DefaultAzureCredential();
        }
    
        clientBuilder.UseCredential(credential);
    });
    

    Alternativou k metodě UseCredential je poskytnutí přihlašovacích údajů klientovi služby přímo:

    TokenCredential credential = null;
    
    if (builder.Environment.IsProduction() || builder.Environment.IsStaging())
    {
        // Managed identity token credential discovered when running in Azure environments
        credential = new ManagedIdentityCredential(
            ManagedIdentityId.FromUserAssignedClientId("<client-id>"));
    }
    else
    {
        // Running locally on dev machine - DO NOT use in production or outside of local dev
        credential = new DefaultAzureCredential();
    }
    
    builder.Services.AddSingleton<BlobServiceClient>(_ =>
        new BlobServiceClient(
            new Uri("https://<account-name>.blob.core.windows.net"), credential));
    

Předchozí kód se chová jinak v závislosti na prostředí, ve kterém je spuštěný:

  • Na místní vývojové pracovní stanici DefaultAzureCredential hledá v proměnných prostředí principála služby aplikace nebo v místně nainstalovaných vývojářských nástrojích, jako je Visual Studio, vývojářské přihlašovací údaje.
  • Při nasazení do Azure ManagedIdentityCredential zjistí konfigurace spravované identity, které se automaticky ověřují v jiných službách.