Připojení z aplikace k prostředkům bez zpracování přihlašovacích údajů

Prostředky Azure se spravovanými identitami podporují vždy možnost zadat spravovanou identitu pro připojení k prostředkům Azure, které podporují ověřování Microsoft Entra. Díky podpoře spravovaných identit vývojáři nespravuje přihlašovací údaje v kódu. Spravované identity jsou doporučenou možností ověřování při práci s prostředky Azure, které je podporují. Přečtěte si přehled spravovaných identit.

Tato stránka ukazuje, jak nakonfigurovat službu App Service, aby se mohl připojit ke službě Azure Key Vault, Azure Storage a Microsoft SQL Serveru. Stejné principy je možné použít pro jakýkoli prostředek Azure, který podporuje spravované identity a který se připojí k prostředkům, které podporují ověřování Microsoft Entra.

Ukázky kódu používají klientskou knihovnu Azure Identity, což je doporučená metoda, protože automaticky zpracovává mnoho kroků za vás, včetně získání přístupového tokenu použitého v připojení.

K jakým prostředkům se můžou spravované identity připojit?

Spravovaná identita se může připojit k libovolnému prostředku, který podporuje ověřování Microsoft Entra. Obecně platí, že pro prostředek není nutná žádná zvláštní podpora, aby se k němu mohly připojit spravované identity.

Některé prostředky nepodporují ověřování Microsoft Entra nebo jejich klientská knihovna nepodporuje ověřování pomocí tokenu. Pokračujte ve čtení a podívejte se na naše pokyny, jak používat spravovanou identitu k bezpečnému přístupu k přihlašovacím údajům, aniž byste je museli ukládat do konfigurace kódu nebo aplikace.

Vytvoření spravované identity

Existují dva typy spravované identity: přiřazené systémem a přiřazené uživatelem. Identity přiřazené systémem jsou přímo propojené s jedním prostředkem Azure. Když se prostředek Azure odstraní, je to identita. Spravovanou identitu přiřazenou uživatelem je možné přidružit k více prostředkům Azure a její životní cyklus je nezávislý na těchto prostředcích.

Tento článek vysvětluje, jak vytvořit a nakonfigurovat spravovanou identitu přiřazenou uživatelem, která se doporučuje pro většinu scénářů. Pokud zdrojový prostředek, který používáte, nepodporuje spravované identity přiřazené uživatelem, měli byste se podívat do dokumentace poskytovatele prostředků a zjistit, jak ho nakonfigurovat tak, aby měla spravovanou identitu přiřazenou systémem.

Vytvoření spravované identity přiřazené uživatelem

Poznámka:

K vytvoření nové spravované identity přiřazené uživatelem budete potřebovat roli, například Přispěvatel spravovaných identit.

  1. Na panelu hledání v horní části portálu vyhledejte "Spravované identity" a vyberte odpovídající výsledek.

Screenshot of searching for managed identities in the portal.

  1. Vyberte tlačítko Vytvořit.

Screenshot showing a managed identity create button in the portal.

  1. Vyberte předplatné a skupinu prostředků a zadejte název spravované identity.

Screenshot showing a managed identity create screen in the portal.

  1. Výběrem možnosti Zkontrolovat a vytvořit spusťte ověřovací test a pak vyberte tlačítko Vytvořit.

  2. Po vytvoření identity se zobrazí potvrzovací obrazovka.

Screenshot showing a managed identity confirmation screen after creation in the portal.

Teď máte identitu, která se dá přidružit ke zdrojovému prostředku Azure. Přečtěte si další informace o správě spravovaných identit přiřazených uživatelem.

Konfigurace zdrojového prostředku pro použití spravované identity přiřazené uživatelem

Podle těchto kroků nakonfigurujte prostředek Azure tak, aby měl spravovanou identitu prostřednictvím portálu. Informace o konfiguraci identity prostředku pomocí rozhraní příkazového řádku, PowerShellu nebo šablony ARM najdete v dokumentaci ke konkrétnímu typu prostředku.

Poznámka:

Abyste mohli nakonfigurovat prostředek Azure tak, aby měl identitu přiřazenou systémem, budete potřebovat oprávnění k zápisu. K přidružení identity přiřazené uživatelem k prostředku Azure budete potřebovat roli, jako je operátor spravované identity.

  1. Vyhledejte prostředek pomocí panelu hledání v horní části portálu.

Screenshot showing a resource being searched for in the portal.

  1. Výběr odkazu Identita v navigaci

Screenshot showing the link to the identity screen for a resource in the portal.

  1. Vyberte kartu Přiřazené uživatelem.

  2. Vyberte tlačítko Přidat.

Screenshot showing a user-assigned identity screen in the portal.

  1. Vyberte identitu přiřazenou uživatelem, kterou jste vytvořili dříve, a vyberte Přidat.

Screenshot showing a user-assigned identity being selected in the portal.

  1. Identita bude přidružená k prostředku a seznam se aktualizuje.

Screenshot showing a user-assigned identity has been associated with the Azure resource in the portal.

Váš zdrojový prostředek teď má identitu přiřazenou uživatelem, kterou může použít k připojení k cílovým prostředkům.

Přidání oprávnění k identitě

Poznámka:

K přidání přiřazení rolí budete potřebovat roli, jako je "Uživatelský přístup Správa istrator" nebo "Vlastník". Ujistěte se, že udělujete nejnižší požadovaná oprávnění ke spuštění aplikace.

Teď má vaše služba App Service spravovanou identitu, musíte identitě udělit správná oprávnění. Když tuto identitu používáte k interakci se službou Azure Storage, použijete systém řízení přístupu na základě role (RBAC) Azure.

  1. Najděte prostředek, ke kterému se chcete připojit, pomocí panelu hledání v horní části portálu.
  2. V levém navigačním panelu vyberte odkaz Řízení přístupu (IAM).

Screenshot showing a resource summary screen in the portal.

  1. Vyberte tlačítko Přidat v horní části obrazovky a vyberte Přidat přiřazení role.

Screenshot showing the add role assignment navigation in the portal.

  1. Zobrazí se seznam rolí. Konkrétní oprávnění, která má role, můžete zobrazit výběrem odkazu Zobrazit. Vyberte roli, kterou chcete identitě udělit, a vyberte tlačítko Další.

Screenshot showing a role being selected in the portal.

  1. Zobrazí se výzva, abyste vybrali, komu má být role udělena. Vyberte možnost Spravovaná identita a pak odkaz Přidat členy.

Screenshot showing the identity type being selected in the portal.

  1. Na pravé straně se zobrazí kontextové podokno, ve kterém můžete hledat podle typu spravované identity. V možnosti Spravovaná identita vyberte Spravovaná identita přiřazená uživatelem.

Screenshot showing managed identity being selected in the portal.

  1. Vyberte identitu, kterou jste vytvořili dříve, a tlačítko Vybrat. Kontextové podokno se zavře a identita se přidá do seznamu.

Screenshot showing an identity being added to a resource in the portal.

  1. Vyberte tlačítko Zkontrolovat a přiřadit, abyste zobrazili souhrn přiřazení role, a pak ještě jednou potvrďte.
  2. Vyberte možnost Přiřazení rolí a zobrazí se seznam přiřazení rolí pro daný zdroj.

Screenshot showing the role assignment has been added in the portal.

Vaše spravovaná identita teď má správná oprávnění pro přístup k cílovému prostředku Azure. Přečtěte si další informace o řízení přístupu na základě role v Azure.

Použití spravované identity v kódu

Vaše služba App Service teď má spravovanou identitu s oprávněními. Spravovanou identitu v kódu můžete použít k interakci s cílovými prostředky místo ukládání přihlašovacích údajů do kódu.

Doporučenou metodou je použít knihovnu Identit Azure pro preferovaný programovací jazyk. Mezi podporované jazyky patří .NET, Java, JavaScript, Python, Go a C++. Knihovna za vás získává přístupové tokeny, což usnadňuje připojení k cílovým prostředkům.

Použití knihovny Azure Identity ve vývojovém prostředí

S výjimkou knihovny C++ podporují knihovny identit Azure typ DefaultAzureCredential . DefaultAzureCredential automaticky se pokusí ověřit prostřednictvím více mechanismů, včetně proměnných prostředí nebo interaktivního přihlašování. Typ přihlašovacích údajů můžete použít ve vývojovém prostředí pomocí vlastních přihlašovacích údajů. Dá se také použít v produkčním prostředí Azure pomocí spravované identity. Při nasazování aplikace se nevyžadují žádné změny kódu.

Pokud používáte spravované identity přiřazené uživatelem, měli byste také explicitně zadat spravovanou identitu přiřazenou uživatelem, kterou chcete ověřit předáním ID klienta identity jako parametru. ID klienta můžete načíst tak, že na portálu přejdete na identitu.

Screenshot showing the client ID for the managed identity in the portal.

Přečtěte si další informace o následujících knihovnách identit Azure:

Přístup k objektu blob ve službě Azure Storage

using Azure.Identity;
using Azure.Storage.Blobs;

// code omitted for brevity

// Specify the Client ID if using user-assigned managed identities
var clientID = Environment.GetEnvironmentVariable("Managed_Identity_Client_ID");
var credentialOptions = new DefaultAzureCredentialOptions
{
    ManagedIdentityClientId = clientID
};
var credential = new DefaultAzureCredential(credentialOptions);                        

var blobServiceClient1 = new BlobServiceClient(new Uri("<URI of Storage account>"), credential);
BlobContainerClient containerClient1 = blobServiceClient1.GetBlobContainerClient("<name of blob>");
BlobClient blobClient1 = containerClient1.GetBlobClient("<name of file>");

if (blobClient1.Exists())
{
    var downloadedBlob = blobClient1.Download();
    string blobContents = downloadedBlob.Value.Content.ToString();                
}

Přístup k tajnému kódu uloženému ve službě Azure Key Vault

using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
using Azure.Core;

// code omitted for brevity

// Specify the Client ID if using user-assigned managed identities
var clientID = Environment.GetEnvironmentVariable("Managed_Identity_Client_ID");
var credentialOptions = new DefaultAzureCredentialOptions
{
    ManagedIdentityClientId = clientID
};
var credential = new DefaultAzureCredential(credentialOptions);        

var client = new SecretClient(
    new Uri("https://<your-unique-key-vault-name>.vault.azure.net/"),
    credential);
    
KeyVaultSecret secret = client.GetSecret("<my secret>");
string secretValue = secret.Value;

Přístup ke službě Azure SQL Database

using Azure.Identity;
using Microsoft.Data.SqlClient;

// code omitted for brevity

// Specify the Client ID if using user-assigned managed identities
var clientID = Environment.GetEnvironmentVariable("Managed_Identity_Client_ID");
var credentialOptions = new DefaultAzureCredentialOptions
{
    ManagedIdentityClientId = clientID
};

AccessToken accessToken = await new DefaultAzureCredential(credentialOptions).GetTokenAsync(
    new TokenRequestContext(new string[] { "https://database.windows.net//.default" }));                        

using var connection = new SqlConnection("Server=<DB Server>; Database=<DB Name>;")
{
    AccessToken = accessToken.Token
};
var cmd = new SqlCommand("select top 1 ColumnName from TableName", connection);
await connection.OpenAsync();
SqlDataReader dr = cmd.ExecuteReader();
while(dr.Read())
{
    Console.WriteLine(dr.GetValue(0).ToString());
}
dr.Close();	

Připojení prostředků, které nepodporují ověřování na základě ID nebo tokenu Microsoftu v knihovnách

Některé prostředky Azure zatím nepodporují ověřování Microsoft Entra nebo jejich klientské knihovny nepodporují ověřování pomocí tokenu. Tyto prostředky jsou obvykle opensourcové technologie, které v připojovací řetězec očekávají uživatelské jméno a heslo nebo přístupový klíč.

Abyste se vyhnuli ukládání přihlašovacích údajů v kódu nebo konfiguraci vaší aplikace, můžete přihlašovací údaje uložit jako tajný kód ve službě Azure Key Vault. Pomocí výše uvedeného příkladu můžete načíst tajný klíč z Azure KeyVault pomocí spravované identity a předat přihlašovací údaje do svého připojovací řetězec. Tento přístup znamená, že v kódu nebo prostředí není potřeba zpracovávat žádné přihlašovací údaje.

Pokyny, pokud zpracováváte tokeny přímo

V některých scénářích můžete chtít získat tokeny pro spravované identity ručně místo použití integrované metody pro připojení k cílovému prostředku. Mezi tyto scénáře patří žádná klientská knihovna pro programovací jazyk, který používáte, nebo cílový prostředek, ke kterému se připojujete, nebo připojení k prostředkům, které nejsou spuštěné v Azure. Při ručním získávání tokenů poskytujeme následující pokyny:

Uložení tokenů do mezipaměti, které jste získali

Pro zvýšení výkonu a spolehlivosti doporučujeme, aby vaše aplikace ukládaly tokeny do mezipaměti v místní paměti nebo zašifrovaly, pokud je chcete uložit na disk. Vzhledem k tomu, že tokeny spravované identity jsou platné 24 hodin, není možné pravidelně vyžadovat nové tokeny, protože jeden token uložený v mezipaměti se vrátí z vydávajícího koncového bodu tokenu. Pokud překročíte limity požadavků, budete omezeni rychlostí a zobrazí se chyba HTTP 429.

Když token získáte, můžete nastavit, aby platnost mezipaměti tokenů vypršela 5 minut před expires_on (nebo ekvivalentní vlastností), která se vrátí při vygenerování tokenu.

Kontrola tokenu

Vaše aplikace by neměla spoléhat na obsah tokenu. Obsah tokenu je určený jenom pro cílovou skupinu (cílový prostředek), ke které se přistupuje, nikoli pro klienta, který token požaduje. Obsah tokenu se může v budoucnu změnit nebo zašifrovat.

Nezpřístupňujte ani nepřesouvejte tokeny

Tokeny by se měly považovat za přihlašovací údaje. Nezpřístupňujte je uživatelům ani jiným službám; Například řešení protokolování/monitorování. Neměli by být přesunuti ze zdrojového prostředku, který je používá, jinak než k ověření u cílového prostředku.

Další kroky