Sdílet prostřednictvím


Konfigurace připojení bez hesla mezi několika aplikacemi Azure a službami

Aplikace často vyžadují zabezpečená připojení mezi několika službami Azure současně. Například podniková instance služby Aplikace Azure Service se může připojit k několika různým účtům úložiště, instanci databáze Azure SQL, sběrnici service bus a dalším.

Spravované identity jsou doporučenou možností ověřování pro zabezpečená připojení bez hesla mezi prostředky Azure. Vývojáři nemusí ručně sledovat a spravovat mnoho různých tajných kódů pro spravované identity, protože většina těchto úloh se zpracovává interně v Azure. V tomto kurzu se dozvíte, jak spravovat připojení mezi více službami pomocí spravovaných identit a klientské knihovny Azure Identity.

Porovnání typů spravovaných identit

Azure poskytuje následující typy spravovaných identit:

  • Spravované identity přiřazené systémem jsou přímo svázané s jedním prostředkem Azure. Když ve službě povolíte spravovanou identitu přiřazenou systémem, Azure vytvoří propojenou identitu a zpracuje úlohy správy pro tuto identitu interně. Když se prostředek Azure odstraní, identita se odstraní také.
  • Spravované identity přiřazené uživatelem jsou nezávislé identity vytvořené správcem a dají se přidružit k jednomu nebo více prostředkům Azure. Životní cyklus identity je nezávislý na těchto prostředcích.

Další informace o osvědčených postupech a o tom, kdy používat identity přiřazené systémem a identity přiřazené uživatelem, si můžete přečíst v doporučeních osvědčených postupů pro identity.

Prozkoumání defaultAzureCredential

Spravované identity se obecně implementují v kódu aplikace prostřednictvím třídy volané DefaultAzureCredential z Azure.Identity klientské knihovny. DefaultAzureCredential podporuje více metod ověřování a automaticky určuje, které metody by se měly používat za běhu. Další informace o tomto přístupu najdete v přehledu DefaultAzureCredential.

Připojení aplikace hostované v Azure do několika služeb Azure

Dostali jste za úkol připojit existující aplikaci k více službám a databázím Azure pomocí připojení bez hesla. Aplikace je webové rozhraní API ASP.NET Core hostované ve službě Aplikace Azure Service, i když následující postup platí i pro další hostitelské prostředí Azure, jako jsou Azure Spring Apps, Virtual Machines, Container Apps a AKS.

Tento kurz se vztahuje na následující architektury, i když je možné ho přizpůsobit mnoha dalším scénářům i prostřednictvím minimálních změn konfigurace.

Diagram showing the user assigned identity relationships.

Následující kroky ukazují, jak nakonfigurovat aplikaci tak, aby používala spravovanou identitu přiřazenou systémem a místní vývojový účet pro připojení k více službám Azure.

Vytvoření spravované identity přiřazené systémem

  1. Na webu Azure Portal přejděte k hostované aplikaci, kterou chcete připojit k jiným službám.

  2. Na stránce přehledu služby vyberte Identita.

  3. Přepnutím nastavení Stav na Zapnuto povolíte spravovanou identitu přiřazenou systémem pro službu.

    Screenshot showing how to assign a system assigned managed identity.

Přiřazení rolí ke spravované identitě pro každou připojenou službu

  1. Přejděte na stránku přehledu účtu úložiště, ke které chcete udělit přístup k identitě.

  2. V navigaci účtu úložiště vyberte Řízení přístupu (IAM ).

  3. Zvolte + Přidat a potom Přidat přiřazení role.

    Screenshot showing how to assign a system-assigned identity.

  4. Ve vyhledávacím poli role vyhledejte Přispěvatel dat objektů blob služby Storage, který uděluje oprávnění k provádění operací čtení a zápisu s daty objektů blob. Můžete přiřadit libovolnou roli, která je vhodná pro váš případ použití. V seznamu vyberte Přispěvatel dat objektů blob úložiště a zvolte Další.

  5. Na obrazovce Přidat přiřazení role jako možnost Přiřadit přístup vyberte Spravovaná identita. Pak zvolte +Vybrat členy.

  6. V informačním rámečku vyhledejte spravovanou identitu, kterou jste vytvořili, zadáním názvu vaší služby App Service. Vyberte identitu přiřazenou systémem a pak výběrem možnosti Vybrat zavřete kontextovou nabídku.

    Screenshot showing how to select a system-assigned identity.

  7. Vyberte Další několikrát, dokud nebudete moct vybrat Zkontrolovat a přiřadit, abyste dokončili přiřazení role.

  8. Tento postup opakujte pro ostatní služby, ke kterému se chcete připojit.

Aspekty místního vývoje

Přístup k prostředkům Azure pro místní vývoj můžete také povolit přiřazením rolí k uživatelskému účtu stejným způsobem, jakým jste přiřadili role spravované identitě.

  1. Po přiřazení role Přispěvatel dat v objektu blob služby Storage spravované identitě v části Přiřadit přístup vyberte tentokrát uživatele, skupinu nebo instanční objekt. Pokud chcete znovu otevřít rozevírací nabídku, zvolte + Vybrat členy .

  2. Vyhledejte účet user@domain nebo skupinu zabezpečení Microsoft Entra, ke které chcete udělit přístup podle e-mailové adresy nebo jména, a pak ji vyberte. Mělo by to být stejný účet, pomocí který se přihlašujete k místním nástrojům pro vývoj, jako je Visual Studio nebo Azure CLI.

Poznámka:

Tyto role můžete přiřadit také skupině zabezpečení Microsoft Entra, pokud pracujete na týmu s více vývojáři. Pak můžete do této skupiny umístit libovolného vývojáře, který potřebuje přístup k místnímu vývoji aplikace.

Implementace kódu aplikace

Uvnitř projektu přidejte odkaz na Azure.Identity balíček NuGet. Tato knihovna obsahuje všechny nezbytné entity k implementaci DefaultAzureCredential. Můžete také přidat jakékoli další knihovny Azure, které jsou pro vaši aplikaci relevantní. V tomto příkladu Azure.Storage.Blobs Azure.KeyVault.Keys se balíčky a balíčky přidají, aby se připojily ke službě Blob Storage a key Vaultu.

dotnet add package Azure.Identity
dotnet add package Azure.Storage.Blobs
dotnet add package Azure.KeyVault.Keys

Na začátek Program.cs souboru přidejte následující příkazy using:

using Azure.Identity;
using Azure.Storage.Blobs;
using Azure.Security.KeyVault.Keys;

Program.cs V souboru kódu projektu vytvořte instance nezbytných služeb, ke které se vaše aplikace připojí. Následující příklady se připojují ke službě Blob Storage a service bus pomocí odpovídajících tříd sady SDK.

var blobServiceClient = new BlobServiceClient(
    new Uri("https://<your-storage-account>.blob.core.windows.net"),
    new DefaultAzureCredential(credOptions));

var serviceBusClient = new ServiceBusClient("<your-namespace>", new DefaultAzureCredential());
var sender = serviceBusClient.CreateSender("producttracking");

Když se tento kód aplikace spustí místně, DefaultAzureCredential vyhledá řetězec přihlašovacích údajů s prvními dostupnými přihlašovacími údaji. Pokud je hodnota Managed_Identity_Client_ID null místně, automaticky použije přihlašovací údaje z místního Azure CLI nebo přihlášení k sadě Visual Studio. Další informace o tomto procesu najdete v přehledu knihovny identit Azure.

Když je aplikace nasazená do Azure, DefaultAzureCredential automaticky načte proměnnou Managed_Identity_Client_ID ze služby App Service Environment. Tato hodnota bude dostupná, když je spravovaná identita přidružená k vaší aplikaci.

Tento celkový proces zajišťuje, že vaše aplikace může bezpečně běžet místně a v Azure bez nutnosti jakýchkoli změn kódu.

Připojení více aplikací s využitím více spravovaných identit

I když aplikace v předchozím příkladu všechny sdílely stejné požadavky na přístup ke službě, skutečná prostředí jsou často více nuancí. Představte si scénář, kdy se ke stejnému účtu úložiště připojuje více aplikací, ale dvě z těchto aplikací také přistupují k různým službám nebo databázím.

Diagram showing multiple user-assigned managed identities.

Pokud chcete nakonfigurovat toto nastavení v kódu, ujistěte se, že vaše aplikace zaregistruje samostatné služby pro připojení ke každému účtu úložiště nebo databázi. Při konfiguraci DefaultAzureCredentialnezapomeňte načíst správná ID klienta spravované identity pro každou službu. Následující příklad kódu konfiguruje následující připojení služeb:

  • Dvě připojení k samostatným účtům úložiště pomocí sdílené spravované identity přiřazené uživatelem
  • Připojení ke službám Azure Cosmos DB a Azure SQL s využitím druhé sdílené spravované identity přiřazené uživatelem
// Get the first user-assigned managed identity ID to connect to shared storage
const clientIdStorage = Environment.GetEnvironmentVariable("Managed_Identity_Client_ID_Storage");

// First blob storage client that using a managed identity
BlobServiceClient blobServiceClient = new BlobServiceClient(
    new Uri("https://<receipt-storage-account>.blob.core.windows.net"),
    new DefaultAzureCredential()
    {
        ManagedIdentityClientId = clientIDstorage
    });

// Second blob storage client that using a managed identity
BlobServiceClient blobServiceClient2 = new BlobServiceClient(
    new Uri("https://<contract-storage-account>.blob.core.windows.net"),
    new DefaultAzureCredential()
    {
        ManagedIdentityClientId = clientIDstorage
    });


// Get the second user-assigned managed identity ID to connect to shared databases
var clientIDdatabases = Environment.GetEnvironmentVariable("Managed_Identity_Client_ID_Databases");

// Create an Azure Cosmos DB client
CosmosClient client = new CosmosClient(
    accountEndpoint: Environment.GetEnvironmentVariable("COSMOS_ENDPOINT", EnvironmentVariableTarget.Process),
    new DefaultAzureCredential()
    {
        ManagedIdentityClientId = clientIDdatabases
    });

// Open a connection to Azure SQL using a managed identity
string ConnectionString1 = @"Server=<azure-sql-hostname>.database.windows.net; User Id=ClientIDOfTheManagedIdentity; Authentication=Active Directory Default; Database=<database-name>";

using (SqlConnection conn = new SqlConnection(ConnectionString1))
{
    conn.Open();
}

Spravovanou identitu přiřazenou uživatelem a spravovanou identitu přiřazenou systémem můžete také přidružit k prostředku současně. To může být užitečné ve scénářích, kdy všechny aplikace vyžadují přístup ke stejným sdíleným službám, ale jedna z aplikací má také velmi specifickou závislost na další službě. Použití identity přiřazené systémem také zajišťuje, aby se identita svázaná s danou konkrétní aplikací po odstranění odstranila, což může pomoct udržet vaše prostředí čisté.

Diagram showing user-assigned and system-assigned managed identities.

Tyto typyscénářůch

Další kroky

V tomto kurzu jste zjistili, jak migrovat aplikaci na připojení bez hesla. Podrobnější informace o konceptech probíraných v tomto článku najdete v následujících zdrojích informací: