Ověřování aplikací NET ve službách Azure během místního vývoje pomocí instančních objektů
Článek
Při vytváření cloudových aplikací musí vývojáři ladit a testovat aplikace na místní pracovní stanici. Když je aplikace spuštěná na pracovní stanici vývojáře během místního vývoje, musí se stále ověřovat u všech služeb Azure, které aplikace používá. Tento článek popisuje, jak nastavit vyhrazené objekty instančního objektu aplikace, které se mají používat při místním vývoji.
Vyhrazené instanční objekty aplikací pro místní vývoj umožňují dodržovat princip nejnižších oprávnění během vývoje aplikací. Vzhledem k tomu, že oprávnění jsou vymezená přesně na to, co je potřeba pro aplikaci během vývoje, brání kód aplikace v náhodném přístupu k prostředku Azure určenému pro použití jinou aplikací. Tím také zabráníte tomu, aby při přesunu aplikace do produkčního prostředí došlo k chybám, protože aplikace byla v vývojovém prostředí přeprivilegovaná.
Instanční objekt aplikace se nastaví pro aplikaci, když je aplikace zaregistrovaná v Azure. Při registraci aplikací pro místní vývoj se doporučuje:
Vytvořte samostatné registrace aplikací pro každého vývojáře, který na aplikaci pracuje. Tím se vytvoří samostatné instanční objekty aplikací pro každého vývojáře, které budou používat při místním vývoji, a zabrání vývojářům sdílet přihlašovací údaje pro jeden instanční objekt aplikace.
Vytvořte samostatné registrace aplikací pro každou aplikaci. Tím se vymenou oprávnění aplikace jenom na to, co aplikace potřebuje.
Během místního vývoje se proměnné prostředí nastaví s identitou instančního objektu aplikace. Sada Azure SDK pro NET čte tyto proměnné prostředí a používá tyto informace k ověření aplikace v prostředcích Azure, které potřebuje.
1. Registrace aplikace v Azure
Objekty instančního objektu aplikace se vytvářejí s registrací aplikace v Azure. Můžete to provést pomocí webu Azure Portal nebo Azure CLI.
Přihlaste se k webu Azure Portal a postupujte podle těchto kroků.
Pokyny
Snímek obrazovky
Na webu Azure Portal:
Na panelu hledání v horní části webu Azure Portal zadejte registrace aplikací.
Vyberte položku označenou Registrace aplikací pod nadpisem Služby v nabídce, která se zobrazí pod panelem hledání.
Na stránce Registrace aplikací vyberte + Nová registrace.
Na stránce Zaregistrovat aplikaci vyplňte formulář následujícím způsobem.
Název → Zadejte název registrace aplikace v Azure. Tento název se doporučuje zahrnout název aplikace, uživatel, pro který je registrace aplikace, a identifikátor, jako je "dev", který označuje, že registrace aplikace se používá v místním vývoji.
Podporované typy účtů → Účty pouze v tomto organizačním adresáři.
Vyberte Zaregistrovat a zaregistrujte aplikaci a vytvořte instanční objekt aplikace.
Na stránce Registrace aplikace pro vaši aplikaci:
ID aplikace (klienta) → Toto je ID aplikace, které bude aplikace používat pro přístup k Azure během místního vývoje. Zkopírujte tuto hodnotu do dočasného umístění v textovém editoru, protože ji budete potřebovat v dalším kroku.
ID adresáře (tenanta) → Tuto hodnotu bude vaše aplikace potřebovat také při ověřování v Azure. Zkopírujte tuto hodnotu do dočasného umístění v textovém editoru, bude ji také potřeba v dalším kroku.
Přihlašovací údaje klienta → Před ověřením aplikace v Azure a používáním služeb Azure musíte pro aplikaci nastavit přihlašovací údaje klienta. Vyberte Přidat certifikát nebo tajný klíč a přidejte přihlašovací údaje pro vaši aplikaci.
Na stránce Certifikáty a tajné kódy vyberte + Nový tajný klíč klienta.
Dialogové okno Pro přidání tajného klíče klienta se zobrazí na pravé straně stránky. V tomto dialogovém okně:
Popis → Zadejte hodnotu Current.
Vyprší → Vyberte hodnotu 24 měsíců.
Chcete-li přidat tajný kód, vyberte Přidat .
Na stránce Certifikáty a tajné kódy se zobrazí hodnota tajného klíče klienta.
Zkopírujte tuto hodnotu do dočasného umístění v textovém editoru, protože ji budete potřebovat v dalším kroku.
DŮLEŽITÉ: Toto je jediný čas, kdy uvidíte tuto hodnotu. Po opuštění nebo aktualizaci této stránky už tuto hodnotu neuvidíte. Můžete přidat další tajný klíč klienta bez zneplatnění tohoto tajného klíče klienta, ale tuto hodnotu znovu neuvidíte.
Příkazy Azure CLI je možné spouštět v Azure Cloud Shellu nebo na pracovní stanici s nainstalovaným Azure CLI.
Nejprve pomocí příkazu az ad sp create-for-rbac vytvořte pro aplikaci nový instanční objekt. Tím se zároveň vytvoří registrace aplikace pro aplikaci.
az ad sp create-for-rbac --name {service-principal-name}
Výstup tohoto příkazu bude vypadat následovně. Doporučujeme tento výstup zkopírovat do dočasného souboru v textovém editoru, protože tyto hodnoty budete potřebovat v budoucím kroku, protože se jedná o jediné místo, kde se pro instanční objekt zobrazuje tajný klíč klienta (heslo). Nové heslo ale můžete později přidat bez zneplatnění instančního objektu nebo stávajících hesel, pokud je to potřeba.
2. Vytvoření skupiny zabezpečení Azure AD pro místní vývoj
Vzhledem k tomu, že v aplikaci obvykle pracuje více vývojářů, doporučujeme vytvořit skupinu Azure AD pro zapouzdření rolí (oprávnění), které aplikace potřebuje v místním vývoji, a ne přiřazování rolí jednotlivým objektům instančního objektu. To nabízí následující výhody.
Každý vývojář má jistotu, že má přiřazené stejné role, protože role jsou přiřazené na úrovni skupiny.
Pokud je pro aplikaci potřeba nová role, stačí ji přidat jenom do skupiny Azure AD pro aplikaci.
Pokud se nový vývojář připojí k týmu, vytvoří se nový instanční objekt aplikace pro vývojáře a přidá se do skupiny, aby vývojář získal správná oprávnění pro práci s aplikací.
Na webu Azure Portal přejděte na stránku Azure Active Directory tak, že do vyhledávacího pole v horní části stránky zadáte Azure Active Directory a pak v části služeb vyberete Azure Active Directory .
Na stránce Azure Active Directory vyberte v nabídce vlevo skupiny.
Na stránce Všechny skupiny vyberte Možnost Nová skupina.
Na stránce Nová skupina:
Typ skupiny → Zabezpečení
Název skupiny → název skupiny zabezpečení, obvykle vytvořený z názvu aplikace. Je také užitečné do názvu skupiny zahrnout řetězec, jako je local-dev , aby bylo možné určit účel skupiny.
Popis skupiny → Popis účelu skupiny.
Vyberte odkaz Žádné členy vybrané v části Členové a přidejte do skupiny členy.
V dialogovém okně Přidat členy :
Pomocí vyhledávacího pole vyfiltrujte seznam hlavních názvů v seznamu.
Vyberte instanční objekty aplikace pro místní vývoj pro tuto aplikaci. Při výběru objektů budou zobrazené šedě a přesunou se do seznamu Vybraných položek v dolní části dialogového okna.
Po dokončení vyberte tlačítko Vybrat .
Zpět na stránce Nová skupina vyberte Vytvořit a vytvořte skupinu.
Skupina se vytvoří a budete přesměrováni zpět na stránku Všechny skupiny . Zobrazení skupiny může trvat až 30 sekund a možná budete muset stránku aktualizovat kvůli ukládání do mezipaměti na webu Azure Portal.
Příkaz az ad group create slouží k vytváření skupin v Azure Active Directory. Parametry --display-name a --main-nickname jsou povinné. Název dané skupiny by měl vycházet z názvu aplikace. Je také užitečné zahrnout do názvu skupiny frázi jako local-dev, která označuje účel skupiny.
az ad group create \
--display-name MyDisplay \
--mail-nickname MyDisplay \
--description \<group-description>
Pokud chcete do skupiny přidat členy, budete potřebovat ID objektu instančního objektu aplikace, což se liší od ID aplikace. Pomocí příkazu az ad sp list vypíšete dostupné instanční objekty. Příkaz --filter parametru přijímá filtry stylu OData a lze ho použít k filtrování seznamu, jak je znázorněno. Parametr --query je omezen pouze na sloupce, které mají zájem.
az ad sp list \
--filter "startswith(displayName, 'msdocs')" \
--query "[].{objectId:objectId, displayName:displayName}" \
--output table
az ad group member add \
--group \<group-name> \
--member-id \<object-id> \
3. Přiřazení rolí k aplikaci
Dále musíte určit, jaké role (oprávnění) vaše aplikace potřebuje k jakým prostředkům, a přiřadit tyto role k aplikaci. V tomto příkladu se role přiřadí skupině Azure Active Directory vytvořené v kroku 2. Role je možné přiřadit roli 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ů.
Vyhledejte skupinu prostředků pro vaši aplikaci vyhledáním názvu skupiny prostředků pomocí vyhledávacího pole v horní části webu Azure Portal.
Přejděte do skupiny prostředků tak, že v dialogovém okně vyberete název skupiny prostředků pod nadpisem Skupiny prostředků.
Na stránce skupiny prostředků v nabídce vlevo vyberte Řízení přístupu (IAM ).
Na stránce Řízení přístupu (IAM):
Vyberte kartu Přiřazení rolí.
V horní nabídce vyberte + Přidat a potom přidejte přiřazení role z výsledné rozevírací nabídky.
Na stránce Přidat přiřazení role jsou uvedeny všechny role, které je možné přiřadit skupině prostředků.
Pomocí vyhledávacího pole vyfiltrujte seznam na lépe spravovatelnou velikost. Tento příklad ukazuje, jak filtrovat role objektů blob služby Storage.
Vyberte roli, kterou chcete přiřadit.
Výběrem možnosti Další přejdete na další obrazovku.
Další stránka Přidat přiřazení role umožňuje určit, k jakému uživateli se má role přiřadit.
V části Přiřadit přístup vyberte Uživatele, skupinu nebo instanční objekt.
Vyberte a vyberte členy v části Členové.
Na pravé straně webu Azure Portal se otevře dialogové okno.
V dialogovém okně Vybrat členy :
Textové pole Vybrat lze použít k filtrování seznamu uživatelů a skupin ve vašem předplatném. V případě potřeby zadejte několik prvních znaků místní vývojové skupiny Azure AD, kterou jste pro aplikaci vytvořili.
Vyberte místní vývojovou skupinu Azure AD přidruženou k vaší aplikaci.
Pokračujte výběrem možnosti Vybrat v dolní části dialogového okna.
Skupina Azure AD se teď zobrazí jako vybraná na obrazovce Přidat přiřazení role.
Výběrem možnosti Zkontrolovat a přiřadit přejděte na poslední stránku a pak proces dokončete opětovnou kontrolou a přiřazením .
az role definition list \
--query "sort_by([].{roleName:roleName, description:description}, &roleName)" \
--output table
Pokud chcete například povolit instančnímu objektu aplikace s ID 00000000-0000-0000-0000-000000000000 čtení, zápisu a odstranění přístupu ke kontejnerům objektů blob a datům služby Azure Storage ke všem účtům úložiště ve skupině prostředků msdocs-dotnet-sdk-auth-example , přiřadíte instanční objekt aplikace k roli Přispěvatel dat v objektech blob služby Storage pomocí následujícího příkazu.
az role assignment create --assignee "00000000-0000-0000-0000-000000000000" \
--role "Storage Blob Data Contributor" \
--resource-group "msdocs-dotnet-sdk-auth-example"
Objekt DefaultAzureCredential vyhledá informace instančního objektu v sadě proměnných prostředí za běhu. 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 to, který přístup zvolíte, budete při práci s instančním objektem muset nakonfigurovat následující proměnné prostředí.
AZURE_CLIENT_ID → hodnota ID aplikace.
AZURE_TENANT_ID → hodnota ID tenanta.
AZURE_CLIENT_SECRET → heslo nebo přihlašovací údaje vygenerované pro aplikaci.
Při práci místně se sadou Visual Studio je možné proměnné prostředí nastavit v launchsettings.json souboru ve Properties složce projektu. Po spuštění aplikace se tyto hodnoty načte automaticky. Mějte na paměti, že tyto konfigurace se při nasazení vaší aplikace necestují, takže budete muset v cílovém hostitelském prostředí nastavit proměnné prostředí.
Při práci místně se sadou Visual Studio Code je možné nastavit proměnné prostředí v launch.json souboru projektu. Po spuštění aplikace se tyto hodnoty načte automaticky. Mějte na paměti, že tyto konfigurace se při nasazení vaší aplikace necestují, takže budete muset v cílovém hostitelském prostředí nastavit proměnné prostředí.
Proměnné prostředí pro Windows můžete nastavit z příkazového řádku. Při použití tohoto přístupu jsou však hodnoty přístupné pro všechny aplikace spuštěné v tomto operačním systému a můžou způsobit konflikty, pokud nejste opatrní. Proměnné prostředí lze nastavit na úrovni uživatele nebo systému.
# Set user environment variables
setx ASPNETCORE_ENVIRONMENT "Development"
setx AZURE_CLIENT_ID "00000000-0000-0000-0000-000000000000"
setx AZURE_TENANT_ID "11111111-1111-1111-1111-111111111111"
setx AZURE_CLIENT_SECRET "=abcdefghijklmnopqrstuvwxyz"
# Set system environment variables - requires running as admin
setx ASPNETCORE_ENVIRONMENT "Development"
setx AZURE_CLIENT_ID "00000000-0000-0000-0000-000000000000" /m
setx AZURE_TENANT_ID "11111111-1111-1111-1111-111111111111" /m
setx AZURE_CLIENT_SECRET "=abcdefghijklmnopqrstuvwxyz" /m
PowerShell se dá použít také k nastavení proměnných prostředí na úrovni uživatele nebo počítače.
# Set user environment variables
[Environment]::SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", "Development", "User")
[Environment]::SetEnvironmentVariable("AZURE_CLIENT_ID", "00000000-0000-0000-0000-000000000000", "User")
[Environment]::SetEnvironmentVariable("AZURE_TENANT_ID", "11111111-1111-1111-1111-111111111111", "User")
[Environment]::SetEnvironmentVariable("AZURE_CLIENT_SECRET", "=abcdefghijklmnopqrstuvwxyz", "User")
# Set system environment variables - requires running as admin
[Environment]::SetEnvironmentVariable("ASPNETCORE_ENVIRONMENT", "Development", "Machine")
[Environment]::SetEnvironmentVariable("AZURE_CLIENT_ID", "00000000-0000-0000-0000-000000000000", "Machine")
[Environment]::SetEnvironmentVariable("AZURE_TENANT_ID", "11111111-1111-1111-1111-111111111111", "Machine")
[Environment]::SetEnvironmentVariable("AZURE_CLIENT_SECRET", "=abcdefghijklmnopqrstuvwxyz", "Machine")
5. Implementace defaultAzureCredential ve vaší aplikaci
DefaultAzureCredential podporuje více metod ověřování a určuje metodu ověřování, která se používá za běhu. Aplikace tak může používat různé metody ověřování v různých prostředích bez implementace 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 implementovat DefaultAzureCredential, nejprve přidejte Azure.Identity balíčky do aplikace a volitelně je Microsoft.Extensions.Azure přidejte. Můžete to provést pomocí příkazového řádku nebo Správce balíčků NuGet.
Klikněte pravým tlačítkem na uzel projektu v sadě Visual Studio a vyberte Spravovat balíčky NuGet. Vyhledejte Azure.Identity ve vyhledávacím poli a nainstalujte odpovídající balíček. Tento postup opakujte také pro balíček Microsoft.Extensions.Azure .
Ke službám Azure se obecně přistupuje pomocí odpovídajících klientských tříd ze sady SDK. Tyto třídy a vlastní služby by se měly v Program.cs souboru zaregistrovat, aby k nim bylo možné přistupovat prostřednictvím injektáže závislostí v celé aplikaci. Program.csUvnitř , postupujte podle následujících kroků k správnému nastavení služby a DefaultAzureCredential.
Zahrňte do příkazu using obory Azure.Identity názvů a Microsoft.Extensions.Azure obory názvů.
Zaregistrujte službu Azure pomocí příslušných pomocných metod.
Předejte instanci DefaultAzureCredential objektu metodě UseCredential .
Příklad je znázorněn v následujícím segmentu kódu.
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());
});
Alternativně můžete ve svých službách využívat DefaultAzureCredential více přímo bez pomoci dalších metod registrace Azure, jak je znázorněno níže.
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()));
Když se výše uvedený kód spustí na místní pracovní stanici během místního vývoje, podívá se do proměnných prostředí pro instanční objekt aplikace nebo v sadě Visual Studio, VS Code, Azure CLI nebo Azure PowerShellu pro sadu přihlašovacích údajů pro vývojáře, z nichž je možné použít k ověření aplikace v prostředcích Azure během místního vývoje.
Když se do Azure nasadí stejný kód, můžete také ověřit 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.
Spolupracujte s námi na GitHubu
Zdroj tohoto obsahu najdete na GitHubu, kde můžete také vytvářet a kontrolovat problémy a žádosti o přijetí změn. Další informace najdete v našem průvodci pro přispěvatele.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu: https://aka.ms/ContentUserFeedback.