Ověřování prostředků Azure z aplikací .NET hostovaných místně
Aplikace hostované mimo Azure, například na místě nebo v datovém centru třetí strany, by měly k ověřování ve službách Azure používat principál aplikace prostřednictvím ID Microsoft Entra. V dalších částech se dozvíte:
- Postup registrace aplikace v Microsoft Entra k vytvoření služebního principálu
- Jak přiřadit role k oprávněním oboru
- Jak se přihlásit pomocí aplikačního objektu z kódu vaší aplikace
Použití vyhrazených principálů služby aplikací umožňuje dodržovat princip nejnižších oprávnění při přístupu k prostředkům Azure. Oprávnění jsou omezená na konkrétní požadavky aplikace během vývoje, což brání náhodnému přístupu k prostředkům Azure určeným pro jiné aplikace nebo služby. Tento přístup také pomáhá vyhnout se problémům při přesunu aplikace do produkčního prostředí tím, že zajišťuje, že ve vývojovém prostředí není příliš privilegovaný.
Pro každé prostředí, ve které je aplikace hostovaná, by se měla vytvořit jiná registrace aplikace. To umožňuje nakonfigurovat pro každý instanční objekt specifická oprávnění prostředí a zajistit, aby aplikace nasazená do jednoho prostředí nemluvila s prostředky Azure, které jsou součástí jiného prostředí.
Registrace aplikace v Azure
Objekty aplikačního služby principal se vytvářejí při registraci aplikace v Azure prostřednictvím Azure portálu nebo Azure CLI.
Na webu Azure Portal pomocí panelu hledání přejděte na stránku Registrace aplikací.
Na stránce „Registrace aplikací“ vyberte „+ Nová registrace“.
Na stránce Zaregistrovat aplikaci :
- Do pole Název zadejte popisnou hodnotu, která obsahuje název aplikace a cílové prostředí.
- Pro Podporované typy účtůvyberte Účty pouze v tomto adresáři organizace (pouze Microsoft Customer Led – jeden tenant), nebo vyberte jinou možnost, která nejlépe vyhovuje vašim požadavkům.
Vyberte Registr a zaregistrujte svou aplikaci a vytvořte hlavní službu.
Na registrační stránce aplikace pro vaši aplikaci zkopírujte ID aplikace (klienta) a ID adresáře (tenanta) a vložte je na dočasné místo pro pozdější použití v konfiguracích kódu vaší aplikace.
Vyberte Přidání certifikátu nebo tajného kódu pro nastavení přihlašovacích údajů pro vaši aplikaci.
Na stránce Certifikáty a tajemství vyberte Nový tajný klíč klienta.
V panelu Přidat tajný klíč klienta, který se otevře:
- Do pole Popiszadejte hodnotu 'Aktuální'.
- Pro hodnotu pro dobu vypršení ponechte výchozí doporučenou hodnotu 180 dnů.
- Chcete-li přidat tajný kód, vyberte Přidat .
Na stránce Certifikáty & tajných kódů zkopírujte vlastnost Hodnota tajného klíče klienta pro použití v dalším kroku.
Poznámka
Hodnota tajného klíče klienta se zobrazí jenom jednou po vytvoření registrace aplikace. Můžete přidat další tajné kódy klienta bez zneplatnění tohoto tajného klíče klienta, ale neexistuje způsob, jak tuto hodnotu znovu zobrazit.
Přiřadit role k hlavnímu objektu služeb aplikace
Dále určete, jaké role (oprávnění) vaše aplikace potřebuje na jakých prostředcích, a přiřaďte tyto role instančnímu objektu, který jste vytvořili. Role lze přiřadit na úrovni 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í seskupuje všechny prostředky Azure do jedné skupiny prostředků.
Na portálu Azure přejděte na stránku Přehled skupiny prostředků, která obsahuje vaši aplikaci.
V levém navigačním panelu vyberte řízení přístupu (IAM).
Na stránce řízení přístupu (IAM) vyberte + Přidat a pak v rozevírací nabídce zvolte možnost Přidat přiřadit roli. Stránka Přidat přiřazení role nabízí několik záložek pro konfiguraci a přiřazení rolí.
Na kartě Role použijte vyhledávací pole a vyhledejte roli, kterou chcete přiřadit. Vyberte roli a pak zvolte Další.
Na kartě Členové:
- V Přiřadit přístup k hodnotě vyberte Uživatel, skupina nebo instanční objekt .
- U hodnoty Členové zvolte možnost + Vybrat členy pro otevření panelu Vybrat členy.
- Vyhledejte principála služby, kterého jste vytvořili dříve, a vyberte ho z filtrovaných výsledků. Zvolte Vyberte pro vybrání skupiny a zavření panelu zobrazení.
- V dolní části karty Členové vyberte možnost Review + assign.
Na kartě Recenze a přiřazení vyberte Recenze a přiřazení v dolní části stránky.
Nastavení proměnných prostředí aplikace
Za běhu určité přihlašovací údaje z knihovny Azure Identity Library, jako jsou DefaultAzureCredential
, EnvironmentCredential
a ClientSecretCredential
, vyhledávají informace instančního objektu podle konvence v proměnných prostředí. Při práci s .NET existují různé způsoby konfigurace proměnných prostředí v závislosti na nástrojích a prostředí.
Bez ohledu na zvolený přístup nakonfigurujte pro instanční objekt následující proměnné prostředí:
-
AZURE_CLIENT_ID
: Slouží k identifikaci registrované aplikace v Azure. -
AZURE_TENANT_ID
: ID tenanta Microsoft Entra. -
AZURE_CLIENT_SECRET
: Tajné přihlašovací údaje vygenerované pro aplikaci.
V sadě Visual Studio lze proměnné prostředí nastavit v souboru launchsettings.json
ve složce Properties
projektu. Tyto hodnoty se automaticky načítají při spuštění aplikace. Tyto konfigurace ale během nasazování necestují s vaší aplikací, takže potřebujete nastavit proměnné prostředí v cílovém hostitelském prostředí.
"profiles": {
"SampleProject": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"applicationUrl": "https://localhost:7177;http://localhost:5177",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"AZURE_CLIENT_ID": "<your-client-id>",
"AZURE_TENANT_ID":"<your-tenant-id>",
"AZURE_CLIENT_SECRET": "<your-client-secret>"
}
},
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"AZURE_CLIENT_ID": "<your-client-id>",
"AZURE_TENANT_ID":"<your-tenant-id>",
"AZURE_CLIENT_SECRET": "<your-client-secret>"
}
}
}
Ověřování ve službách Azure z vaší aplikace
Knihovna Azure Identity poskytuje různá pověření– implementace TokenCredential
přizpůsobené různým scénářům a tokům ověřování Microsoft Entra. Následující kroky dopředu ukazují, jak používat ClientSecretCredential při práci se služebními identifikátory lokálně a v produkčním prostředí.
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 obory názvů
Azure.Identity
aMicrosoft.Extensions.Azure
prostřednictvím direktivusing
. - Zaregistrujte klienta služby Azure pomocí odpovídající metody rozšíření s předponou
Add
. - Nakonfigurujte
ClientSecretCredential
pomocítenantId
,clientId
aclientSecret
. - Předejte instanci
ClientSecretCredential
metoděUseCredential
.
builder.Services.AddAzureClients(clientBuilder =>
{
var tenantId = Environment.GetEnvironmentVariable("AZURE_TENANT_ID");
var clientId = Environment.GetEnvironmentVariable("AZURE_CLIENT_ID");
var clientSecret = Environment.GetEnvironmentVariable("AZURE_CLIENT_SECRET");
clientBuilder.AddBlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"));
clientBuilder.UseCredential(new ClientSecretCredential(tenantId, clientId, clientSecret));
});
Alternativou k metodě UseCredential
je poskytnutí přihlašovacích údajů klientovi služby přímo:
var tenantId = Environment.GetEnvironmentVariable("AZURE_TENANT_ID");
var clientId = Environment.GetEnvironmentVariable("AZURE_CLIENT_ID");
var clientSecret = Environment.GetEnvironmentVariable("AZURE_CLIENT_SECRET");
builder.Services.AddSingleton<BlobServiceClient>(_ =>
new BlobServiceClient(
new Uri("https://<account-name>.blob.core.windows.net"),
new ClientSecretCredential(tenantId, clientId, clientSecret)));