Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Doporučeným přístupem k ověření Azure hostované aplikace u jiných prostředků Azure je použití managed identity. Tento přístup je podporován pro většinu služeb Azure, včetně aplikací hostovaných na Azure App Service, Azure Container Apps a Azure Virtual Machines. Další informace o různých technikách ověřování a přístupech najdete na stránce s přehledem ověřování . V dalších částech se dozvíte:
- Základní koncepty spravované identity
- Vytvoření spravované identity přiřazené uživatelem pro vaši aplikaci
- Přiřazení rolí spravované identitě přiřazené uživatelem
- Jak se ověřit pomocí spravované identity přiřazené uživatelem z vašeho aplikačního kódu
Základní koncepty spravované identity
Spravovaná identita umožňuje aplikaci bezpečně připojit k dalším Azure prostředkům bez použití tajných klíčů nebo jiných tajných kódů aplikací. Interně Azure sleduje identitu a prostředky, ke kterým se může připojit. Azure tyto informace používá k automatickému získání tokenů Microsoft Entra pro aplikaci, aby se mohla připojit k dalším Azure prostředkům.
Při konfiguraci hostované aplikace je potřeba zvážit dva typy spravovaných identit:
- Systemem přiřazené spravované identity jsou povoleny přímo na prostředku Azure a jsou vázány na jeho životní cyklus. Po odstranění prostředku Azure automaticky odstraní identitu za vás. Identity přiřazené systémem poskytují minimalistický přístup k používání spravovaných identit.
- Uživatelsky přiřazené spravované identity se vytvářejí jako samostatné prostředky Azure a nabízejí větší flexibilitu a schopnosti. Jsou ideální pro řešení zahrnující více Azure prostředků, které potřebují sdílet stejnou identitu a oprávnění. Pokud například více virtuálních počítačů potřebuje přístup ke stejné sadě Azure prostředků, poskytuje spravovaná identita přiřazená uživatelem možnost opakovaného použití a optimalizovanou správu.
Návod
Další informace o výběru a správě spravovaných identit přiřazených systémem a přiřazených uživatelem najdete v článku s doporučeními k osvědčeným postupům spravované identity .
Následující části popisují postup povolení a použití spravované identity přiřazené uživatelem pro Azure hostované aplikace. Pokud potřebujete použít spravovanou identitu přiřazenou systémem, další informace najdete v článku o spravovaných identitách přiřazených systémem .
Vytvořit uživatelsky přiřazenou spravovanou identitu
Spravované identity přiřazené uživatelem se ve vašem Azure předplatném vytvářejí jako samostatné prostředky pomocí portálu Azure nebo Azure CLI. Azure CLI příkazy je možné spouštět v Azure Cloud Shell nebo na pracovní stanici s nainstalovaným Azure CLI.
Na portálu Azure zadejte na hlavním panelu hledání Spravované identity a v části Services vyberte odpovídající výsledek.
Na stránce Spravované identity vyberte + Vytvořit.
Na stránce Vytvořit spravovanou identitu přiřazenou uživatelem vyberte předplatné, skupinu prostředků a oblast spravované identity přiřazené uživatelem a zadejte název.
Vyberte Zkontrolovat a vytvořit pro revizi a ověření vašich vstupů.
Vyberte Vytvořit a vytvořte spravovanou identitu přiřazenou uživatelem.
Po vytvoření identity vyberte Přejít k prostředku.
Na stránce Přehled nové identity zkopírujte hodnotu ID klienta , která se použije pro pozdější použití při konfiguraci kódu aplikace.
Přiřazení spravované identity k aplikaci
Spravovanou identitu přiřazenou uživatelem je možné přidružit k jednomu nebo více prostředkům Azure. Všechny prostředky, které tuto identitu používají, získají oprávnění získaná skrze role identity.
Na portálu Azure přejděte k prostředku, který je hostitelem kódu aplikace, jako je Azure App Service nebo instance Azure Container Apps.
Na stránce přehledu prostředku rozbalte nastavení a v navigaci vyberte Identitu.
Na stránce Identita přepněte na záložku uživatelsky přiřazené.
Výběrem + Přidat otevřete panel Přidat uživatelem přiřazenou spravovanou identitu.
Na panelu Přidat uživatelsky přiřazenou spravovanou identitu použijte rozevírací seznam Předplatné k filtrování výsledků vyhledávání pro vaše identity. Pomocí vyhledávacího pole Uživateli přiřazené spravované identity vyhledejte spravovanou identitu přiřazenou uživatelem, kterou jste povolili pro prostředek Azure hostující vaši aplikaci.
Vyberte identitu a dole na panelu zvolte Přidat, abyste pokračovali.
Přiřazení rolí ke spravované identitě
Dále určete, které role vaše aplikace potřebuje, a přiřaďte tyto role spravované identitě. Spravované identitě můžete přiřadit role v následujících oborech:
- zdroj: Přiřazené role se vztahují pouze na tento konkrétní zdroj.
- skupiny prostředků: Přiřazené role se vztahují na všechny prostředky obsažené ve skupině prostředků.
- Předplatné: Přiřazené role se vztahují na všechny prostředky obsažené v předplatném.
Následující příklad ukazuje, jak přiřadit role v oboru skupiny prostředků, protože mnoho aplikací spravuje všechny související Azure prostředky pomocí jedné skupiny prostředků.
Přejděte na stránku Přehled skupiny prostředků, která obsahuje aplikaci s uživatelsky přiřazenou spravovanou identitou.
V levém navigačním panelu vyberte řízení přístupu (IAM).
Na stránce řízení přístupu (IAM) vyberte + Přidat v horní nabídce a potom zvolte Přidat přiřazení role a přejděte na stránku Přidat přiřazení role.
Na stránce Přidat přiřazení role se zobrazí vícekrokový pracovní postup se záložkami pro přiřazení rolí k identitám. Na úvodní kartě Role vyhledejte roli, kterou chcete přiřadit k identitě, pomocí vyhledávacího pole v horní části.
Ve výsledcích vyberte roli, potom klikněte na Další, abyste přešli na kartu Členové.
U možnosti Přiřadit přístup k vyberte možnost Spravovaná identita.
Pro otevření panelu Vybrat spravované identity vyberte u možnosti Členové volbu + Vybrat členy.
Na panelu Vyberte spravované identity použijte rozevírací seznamy Předplatné a Spravované identity k filtrování výsledků hledání pro vaše identity. Pomocí vyhledávacího pole Select vyhledejte spravovanou identitu přiřazenou uživatelem, kterou jste povolili pro prostředek Azure hostující vaši aplikaci.
Vyberte identitu a zvolte Pokračujte výběrem v dolní části panelu.
Vyberte Zkontrolovat a přiřadit v dolní části stránky.
Na poslední kartě Zkontrolovat + přiřadit, vyberte možnost Zkontrolovat + přiřadit a dokončete pracovní postup.
Autentizace ke službám Azure z vaší aplikace
Knihovna identit Azure poskytuje různé pověření – implementace TokenCredential přizpůsobené podpoře různých scénářů a toků ověřování Microsoft Entra. Vzhledem k tomu, že spravovaná identita není při místním spuštění dostupná, následující kroky ukazují, které přihlašovací údaje použít ve které situaci:
-
místní vývojové prostředí: Během místního vývoje pouzepoužijte třídu s názvem DefaultAzureCredential pro předkonfigurovaný řetězec přihlašovacích údajů.
DefaultAzureCredentialzjistí přihlašovací údaje uživatele z místního nástroje nebo integrovaného vývojového prostředí, jako je Azure CLI nebo Visual Studio. Poskytuje také flexibilitu a pohodlí pro opakování, doby čekání na odpovědi a podporu více možností ověřování. Další informace najdete v článku Autentizace ke službám Azure během místního vývoje. - Azure hostované aplikace: Pokud je aplikace spuštěná v Azure, použijte ManagedIdentityCredential a bezpečně zjistěte spravovanou identitu nakonfigurovanou pro vaši aplikaci. Zadáním tohoto přesného typu přihlašovacích údajů zabráníte neočekávanému vyzvednutí dalších dostupných přihlašovacích údajů.
Implementace kódu
Přidejte do aplikace balíček azure-identity-cpp pomocí vcpkg.
V terminálu podle vašeho výběru přejděte do adresáře projektu aplikace a spusťte následující příkaz:
vcpkg add port azure-identity-cppDo souboru CMake přidejte následující:
find_package(azure-identity-cpp CONFIG REQUIRED) target_link_libraries(<your project name> PRIVATE Azure::azure-identity)Azure služby jsou přístupné pomocí specializovaných klientů z různých klientských knihoven Azure SDK. Pro každý kód jazyka C++, který vytvoří instanci klienta Azure SDK ve vaší aplikaci, musíte:
- Zahrňte
azure/identity.hppzáhlaví. - Vytvořte instanci
DefaultAzureCredential. - Předejte instanci
DefaultAzureCredentialkonstruktoru klienta Azure SDK. - Nastavte proměnnou
AZURE_CLIENT_IDprostředí na ID klienta uživatelsky přiřazené spravované identity. - Nastavte proměnnou prostředí
AZURE_TOKEN_CREDENTIALSnaManagedIdentityCredential, abyste zajistili, žeDefaultAzureCredentialpoužívá autentizační údaje spravované identity. Tento postup zpřehledňuje a usnadňuje ověřování a umožňuje snadnější ladění při nasazení na Azure. Další informace najdete v tématu Použití konkrétních přihlašovacích údajů.
Příklad těchto kroků je znázorněn v následujícím segmentu kódu s klientem Azure Storage Blob.
#include <azure/identity.hpp> #include <azure/storage/blobs.hpp> #include <iostream> #include <memory> #include <cstdlib> int main() { try { // Set the AZURE_CLIENT_ID environment variable to your user-assigned managed identity client ID // This can be done in your deployment environment or in code (shown below for demonstration) // std::putenv("AZURE_CLIENT_ID=your-user-assigned-identity-client-id"); // Create a credential - DefaultAzureCredential will use the AZURE_CLIENT_ID environment variable // Create a credential - DefaultAzureCredential will use the AZURE_CLIENT_ID and AZURE_TOKEN_CREDENTIALS environment variables auto credential = std::make_shared<Azure::Identity::DefaultAzureCredential>(true); // Create a client for the specified storage account std::string accountUrl = "https://<replace_with_your_storage_account_name>.blob.core.windows.net/"; Azure::Storage::Blobs::BlobServiceClient blobServiceClient(accountUrl, credential); // Get a reference to a container std::string containerName = "sample-container"; auto containerClient = blobServiceClient.GetBlobContainerClient(containerName); // Get a reference to a blob std::string blobName = "sample-blob"; auto blobClient = containerClient.GetBlobClient(blobName); // TODO: perform some action with the blob client // auto downloadResult = blobClient.DownloadTo("path/to/local/file"); std::cout << "Successfully authenticated using user-assigned managed identity." << std::endl; } catch (const std::exception& ex) { std::cout << "Exception: " << ex.what() << std::endl; return 1; } return 0; }- Zahrňte
Jak je popsáno v článku Azure SDK pro přehled ověřování jazyka C++DefaultAzureCredential podporuje více metod ověřování a určuje metodu ověřování, která se používá za běhu. Výhodou tohoto přístupu je, že vaše aplikace 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í. Pokud se předchozí kód spustí na pracovní stanici během místního vývoje, DefaultAzureCredential použije instanční objekt aplikace určený nastavením prostředí nebo přihlašovací údaje nástroje pro vývojáře k ověření s jinými prostředky Azure. Stejný kód je tedy možné použít k ověření vaší aplikace k prostředkům Azure během místního vývoje i při nasazení na Azure.
Důležité
DefaultAzureCredential zjednodušuje ověřování při vývoji aplikací, které se nasazují do Azure kombinováním přihlašovacích údajů používaných v prostředích hostování Azure a přihlašovacích údajů používaných v místním vývoji. V produkčním prostředí je lepší použít specifický typ přihlašovacích údajů, aby autentizace byla předvídatelnější a snáze debuggovatelná.
Alternativou k DefaultAzureCredential je použití ManagedIdentityCredential. Postup použití ManagedIdentityCredential je stejný jako pro použití typu DefaultAzureCredential .
Příklad těchto kroků je znázorněn v následujícím segmentu kódu s klientem Azure Storage Blob.
#include <azure/identity.hpp>
#include <azure/storage/blobs.hpp>
#include <iostream>
#include <memory>
int main() {
try {
// Create a user-assigned managed identity credential with the client ID
Azure::Identity::ManagedIdentityCredentialOptions options;
options.ClientId = "abcd1234-..."; // Replace with your user-assigned managed identity client ID
auto credential = std::make_shared<Azure::Identity::ManagedIdentityCredential>(options);
// Create a client for the specified storage account
std::string accountUrl = "https://<replace_with_your_storage_account_name>.blob.core.windows.net/";
Azure::Storage::Blobs::BlobServiceClient blobServiceClient(accountUrl, credential);
// Get a reference to a container
std::string containerName = "sample-container";
auto containerClient = blobServiceClient.GetBlobContainerClient(containerName);
// Get a reference to a blob
std::string blobName = "sample-blob";
auto blobClient = containerClient.GetBlobClient(blobName);
// TODO: perform some action with the blob client
// auto downloadResult = blobClient.DownloadTo("path/to/local/file");
std::cout << "Successfully authenticated using user-assigned managed identity." << std::endl;
} catch (const std::exception& ex) {
std::cout << "Exception: " << ex.what() << std::endl;
return 1;
}
return 0;
}