Ověřování aplikací .NET hostovaných v Azure s využitím spravované identity přiřazené systémem
Doporučeným přístupem k ověření aplikace hostované na 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é systémem pro vaši aplikaci
- Přiřazení rolí spravované identitě přiřazené systémem
- Ověření pomocí spravované identity přiřazené systémem z kódu aplikace
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 povolené 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é systémem pro aplikaci hostované v Azure. Pokud potřebujete použít spravovanou identitu přiřazenou uživatelem, další informace najdete v spravovaných identitách přiřazených uživatelem článku.
Povolte systémem přiřazenou spravovanou identitu v hostitelském prostředku Azure
Pokud chcete začít používat spravovanou identitu přiřazenou systémem s vaší aplikací, povolte identitu na prostředku Azure, který je hostitelem vaší aplikace, jako je Azure App Service, Azure Container App nebo Virtuální počítač Azure.
Spravovanou identitu přiřazenou systémem pro prostředek Azure můžete povolit pomocí Azure portalu nebo Azure CLI.
Na webu Azure Portal přejděte k prostředku, který je hostitelem kódu vaší aplikace, jako je azure App Service nebo instance azure Container App.
Na stránce přehledu prostředku rozbalte nastavení a v navigaci vyberte Identitu.
Na stránce Identita přepněte posuvník stav na Zapnuto.
Vyberte Uložit pro použití změn.
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:
- prostředek: Přiřazené role se vztahují pouze na konkrétní prostředek.
- 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ů.
Přejděte na stránku Přehled skupiny prostředků, která obsahuje aplikaci s identitou spravovanou systémem.
V levém navigačním panelu vyberte řízení přístupu (IAM).
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.
Na stránce Přidat přiřazení role je zobrazen vícestupňový pracovní postup s kartami pro přiřazení rolí uživatelským identitám. Na úvodní kartě Role vyhledejte roli, kterou chcete přiřadit k identitě, pomocí vyhledávacího pole v horní části.
Ve výsledcích vyberte roli, potom klikněte na Další, abyste přešli na kartu Členové.
U možnosti Přiřadit přístup k vyberte možnost Spravovaná identita.
U možnosti Členové vyberte + Vybrat členy pro otevření panelu Vybrat spravované identity.
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 Vyberte vyhledejte systémovou identitu, kterou jste povolili pro prostředek Azure hostující vaši aplikaci.
Vyberte identitu a zvolte Pokračujte výběrem v dolní části panelu.
Vyberte Zkontrolovat a přiřadit v dolní části stránky.
Na závěrečné kartě Zkontrolovat a přiřadit vyberte Zkontrolovat a přiřadit pro dokončení pracovního postupu.
Ověřování ve službách Azure z vaší aplikace
Knihovna Azure Identity poskytuje různé přihlašovací údaje– implementace TokenCredential
přizpůsobené podpoře různých scénářů a toků ověřování pro 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í údaj použít v každém scénáři:
-
místní vývojové prostředí: Během místního vývoje pouzepoužijte třídu s názvem DefaultAzureCredential pro předkonfigurovaný ř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 najdete v článku o ověřování u služeb 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.cs
proveďte následující kroky a nakonfigurujte třídu klienta pro injektáž závislostí a ověřování na základě tokenů:
- Zahrňte
Azure.Identity
aMicrosoft.Extensions.Azure
obory názvů pomocí direktivusing
. - Zaregistrujte klienta služby Azure pomocí odpovídající metody rozšíření s předponou
Add
. - Předejte příslušnou instanci
TokenCredential
metoděUseCredential
:- Použijte
DefaultAzureCredential
, když je aplikace spuštěná místně. - Používejte
ManagedIdentityCredential
, když je vaše aplikace spuštěná v Azure.
- Použijte
builder.Services.AddAzureClients(clientBuilder =>
{
clientBuilder.AddBlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"));
TokenCredential credential = null;
if (builder.Environment.IsProduction())
{
// Managed identity token credential discovered when running in Azure environments
credential = new ManagedIdentityCredential();
}
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();
}
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 vaší místní vývojové pracovní stanici hledá
DefaultAzureCredential
v proměnných prostředí pro hlavní službu aplikace nebo v místně nainstalovaných vývojářských nástrojích, jako je Visual Studio, sadu vývojářských přihlašovacích údajů. - Při nasazení do Azure
ManagedIdentityCredential
objeví konfigurace spravované identity pro automatické ověřování u jiných služeb.