Ověřování aplikací hostovaných v Azure s prostředky Azure pomocí sady Azure SDK pro .NET
Pokud je aplikace hostovaná v Azure pomocí služby, jako je Aplikace Azure Service, Azure Virtual Machines nebo Azure Container Instances, doporučuje se použít spravovanou identitu při ověřování aplikace v prostředcích Azure.
Spravovaná identita poskytuje identitu pro vaši aplikaci, aby se dokázala připojit k jiným prostředkům Azure bez nutnosti používat tajný klíč nebo jiný tajný klíč aplikace. Azure interně zná identitu vaší aplikace a prostředky, ke které 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, aniž byste museli spravovat tajné kódy aplikací.
Typy spravovaných identit
Existují dva typy spravovaných identit:
- Přiřazené systémem – Tento typ spravované identity je poskytován a svázán přímo s prostředkem Azure. Když povolíte spravovanou identitu u prostředku Azure, získáte spravovanou identitu přiřazenou systémem pro tento prostředek. Spravovaná identita přiřazená systémem je svázaná s životním cyklem prostředku Azure, ke kterému je přidružená. Když se prostředek odstraní, Azure automaticky odstraní identitu za vás. Vzhledem k tomu, že stačí povolit spravovanou identitu pro prostředek Azure hostující váš kód, je to nejjednodušší typ spravované identity, kterou chcete použít.
- Přiřazené uživatelem – Spravovanou identitu můžete vytvořit také jako samostatný prostředek Azure. Nejčastěji se používá, když má vaše řešení více úloh, které běží na několika prostředcích Azure, které potřebují sdílet stejnou identitu a stejná oprávnění. Pokud by například vaše řešení mělo komponenty, které běžely na několika instancích služby App Service a virtuálních počítačů, které všechny potřebovaly přístup ke stejné sadě prostředků Azure, vytvoření a použití spravované identity přiřazené uživatelem napříč těmito prostředky by mělo smysl.
Tento článek popisuje postup povolení a použití spravované identity přiřazené systémem pro aplikaci. Pokud potřebujete použít spravovanou identitu přiřazenou uživatelem, přečtěte si článek Správa spravovaných identit přiřazených uživatelem a zjistěte, jak vytvořit spravovanou identitu přiřazenou uživatelem.
1. Povolení spravované identity v prostředku Azure hostujícím aplikaci
Prvním krokem je povolení spravované identity na prostředku Azure hostujícím vaši aplikaci. Pokud například hostujete aplikaci .NET pomocí služby Aplikace Azure Service, musíte pro webovou aplikaci App Service, která hostuje vaši aplikaci, povolit spravovanou identitu. Pokud jste k hostování aplikace používali virtuální počítač, povolili byste virtuálnímu počítači používat spravovanou identitu.
Spravovanou identitu můžete povolit pro prostředek Azure pomocí webu Azure Portal nebo Azure CLI.
2. Přiřazení rolí ke spravované identitě
Dále určete, které role (oprávnění) vaše aplikace potřebuje, a přiřaďte spravované identitě k těmto rolím v Azure. Spravovanou identitu je možné přiřadit role v oboru prostředku, skupiny prostředků nebo předplatného. Tento příklad ukazuje, jak přiřadit role v oboru skupiny prostředků, protože většina aplikací seskupí všechny prostředky Azure do jedné skupiny prostředků.
3. Implementace defaultAzureCredential ve vaší aplikaci
DefaultAzureCredential je názorná a uspořádaná posloupnost mechanismů pro ověřování v Microsoft Entra. Každý mechanismus ověřování je třída odvozená z TokenCredential třídy a je známá jako přihlašovací údaje. Za běhu DefaultAzureCredential
se pokusí ověřit pomocí prvních přihlašovacích údajů. Pokud se tento přihlašovací údaj nepodaří získat přístupový token, pokusí se další přihlašovací údaje v této sekvenci atd., dokud se přístupový token úspěšně nezíská. Aplikace tak může používat různé přihlašovací údaje v různých prostředích bez psaní kódu specifického pro prostředí.
Pořadí a umístění, ve kterých DefaultAzureCredential
se hledají přihlašovací údaje, najdete na adrese DefaultAzureCredential.
Pokud chcete použít DefaultAzureCredential
, přidejte do své aplikace balíčky Azure.Identity a volitelně balíčky 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, aby k nim bylo možné přistupovat prostřednictvím injektáže závislostí v celé aplikaci. V Program.cs
následujícím postupu zaregistrujte třídu klienta a DefaultAzureCredential
:
- Zahrňte direktivy
Azure.Identity
aMicrosoft.Extensions.Azure
obory názvů prostřednictvímusing
direktiv. - Zaregistrujte klienta služby Azure pomocí odpovídající
Add
metody rozšíření s předponou. - Předejte instanci
DefaultAzureCredential
metodyUseCredential
.
Příklad:
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());
});
Alternativou UseCredential
je vytvoření instance DefaultAzureCredential
přímo:
using Azure.Identity;
builder.Services.AddSingleton<BlobServiceClient>(_ =>
new BlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"),
new DefaultAzureCredential()));
Když předchozí kód běží na místní vývojové pracovní stanici, hledá v proměnných prostředí instanční objekt aplikace nebo v místně nainstalovaných vývojářských nástrojích, jako je Visual Studio, pro sadu přihlašovacích údajů vývojáře. K ověření aplikace v prostředcích Azure se dá použít některý z přístupů během místního vývoje.
Při nasazení do Azure může stejný kód také ověřit vaši aplikaci v jiných prostředcích Azure. DefaultAzureCredential
může načíst nastavení prostředí a konfigurace spravovaných identit pro automatické ověřování v jiných službách.