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.
- Na panelu hledání v horní části portálu vyhledejte "Spravované identity" a vyberte odpovídající výsledek.
- Vyberte tlačítko Vytvořit.
- Vyberte předplatné a skupinu prostředků a zadejte název spravované identity.
Výběrem možnosti Zkontrolovat a vytvořit spusťte ověřovací test a pak vyberte tlačítko Vytvořit.
Po vytvoření identity se zobrazí potvrzovací obrazovka.
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.
- Vyhledejte prostředek pomocí panelu hledání v horní části portálu.
- Výběr odkazu Identita v navigaci
Vyberte kartu Přiřazené uživatelem.
Vyberte tlačítko Přidat.
- Vyberte identitu přiřazenou uživatelem, kterou jste vytvořili dříve, a vyberte Přidat.
- Identita bude přidružená k prostředku a seznam se aktualizuje.
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.
- Najděte prostředek, ke kterému se chcete připojit, pomocí panelu hledání v horní části portálu.
- V levém navigačním panelu vyberte odkaz Řízení přístupu (IAM).
- Vyberte tlačítko Přidat v horní části obrazovky a vyberte Přidat přiřazení role.
- 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ší.
- Zobrazí se výzva, abyste vybrali, komu má být role udělena. Vyberte možnost Spravovaná identita a pak odkaz Přidat členy.
- 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.
- Vyberte identitu, kterou jste vytvořili dříve, a tlačítko Vybrat. Kontextové podokno se zavře a identita se přidá do seznamu.
- Vyberte tlačítko Zkontrolovat a přiřadit, abyste zobrazili souhrn přiřazení role, a pak ještě jednou potvrďte.
- Vyberte možnost Přiřazení rolí a zobrazí se seznam přiřazení rolí pro daný zdroj.
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.
Přečtěte si další informace o následujících knihovnách identit Azure:
- Knihovna identit Azure pro .NET
- Knihovna identit Azure pro Javu
- Knihovna identit Azure pro JavaScript
- Knihovna identit Azure pro Python
- Modul Azure Identity pro Go
- Knihovna identit Azure pro C++
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
- Jak používat spravované identity pro App Service a Azure Functions
- Použití spravovaných identit se službou Azure Container Instances
- Implementace spravovaných identit pro prostředky Microsoft Azure
- Použití federace identit úloh pro spravované identity pro přístup k prostředkům chráněným Microsoft Entra bez správy tajných kódů