Spravovaná identita z Microsoft Entra ID umožňuje vaší aplikaci kontejneru přistupovat k dalším prostředkům chráněným Microsoft Entra. Další informace o spravovaných identitách v Microsoft Entra ID najdete v tématu Spravované identity pro prostředky Azure.
Aplikaci kontejneru můžete udělit dva typy identit:
Identita přiřazená systémem je svázaná s vaší aplikací kontejneru a při odstranění aplikace kontejneru se odstraní. Aplikace může mít pouze jednu identitu přiřazenou systémem.
Identita přiřazená uživatelem je samostatný prostředek Azure, který můžete přiřadit ke své aplikaci kontejneru a dalším prostředkům. Aplikace typu kontejner může mít více identit přiřazených uživatelem. Identity přiřazené uživatelem existují, dokud je neodstraníte.
Vaše aplikace se připojuje k prostředkům pomocí spravované identity. V aplikaci kontejneru nemusíte spravovat přihlašovací údaje.
Řízení přístupu na základě role můžete použít k udělení konkrétních oprávnění spravované identitě.
Identity přiřazené systémem se automaticky vytvářejí a spravují. Po odstranění vaší aplikace kontejneru se odstraní.
Můžete přidávat a odstraňovat identity přiřazené uživatelem a přiřazovat je k více prostředkům. Jsou nezávislé na životním cyklu vaší aplikace kontejneru.
Když se spravovaná identita přidá, odstraní nebo upraví ve spuštěné aplikaci kontejneru, aplikace se automaticky nerestartuje a nevytvořila se nová revize.
Poznámka:
Při přidávání spravované identity do aplikace kontejneru nasazené před 11. dubna 2022 je nutné vytvořit novou revizi.
Přejděte do aplikace kontejneru na webu Azure Portal.
Ve skupině Nastavení vyberte Možnost Identita.
Na kartě Přiřazený systém přepněte stav na Zapnuto.
Zvolte Uložit.
Spuštěním az containerapp identity assign příkazu vytvořte identitu přiřazenou systémem:
az containerapp identity assign --name myApp --resource-group myResourceGroup --system-assigned
Šablonu ARM můžete použít k automatizaci nasazení kontejnerové aplikace a prostředků. Pokud chcete přidat identitu přiřazenou systémem, přidejte identity do šablony ARM oddíl.
"identity": {
"type": "SystemAssigned"
}
Přidání typu přiřazeného systémem říká Azure, aby vytvořila a spravuje identitu pro vaši aplikaci. Kompletní příklad šablony ARM najdete ve specifikaci rozhraní API ARM.
Některé příkazy Azure CLI, včetně az containerapp create a az containerapp job create, podporují soubory YAML pro vstup. Pokud chcete přidat identitu přiřazenou systémem, přidejte identity do souboru YAML oddíl.
identity:
type: SystemAssigned
Přidání typu přiřazeného systémem říká Azure, aby vytvořila a spravuje identitu pro vaši aplikaci. Kompletní příklad šablony YAML najdete ve specifikaci rozhraní API ARM.
Přidání identity přiřazené uživatelem
Konfigurace aplikace kontejneru s identitou přiřazenou uživatelem vyžaduje, abyste nejprve vytvořili identitu a pak do konfigurace vaší aplikace kontejneru přidali její identifikátor prostředku. Identity přiřazené uživatelem můžete vytvořit prostřednictvím webu Azure Portal nebo Azure CLI. Informace o vytváření a správě identit přiřazených uživatelem najdete v tématu Správa spravovaných identit přiřazených uživatelem.
id Nahraďte <IDENTITY_RESOURCE_ID> vlastností identity. Pokud chcete přiřadit více než jednu identitu přiřazenou uživatelem, zadejte do parametru --user-assigned seznam ID identit oddělených mezerami.
Pokud chcete přidat jednu nebo více identit přiřazených uživatelem, přidejte identity do šablony ARM oddíl. Nahraďte <IDENTITY1_RESOURCE_ID> identifikátory <IDENTITY2_RESOURCE_ID> prostředků identit, které chcete přidat.
Zadejte každou identitu přiřazenou uživatelem tak, že do objektu userAssignedIdentities přidáte položku s identifikátorem prostředku identity jako klíčem. Jako hodnotu použijte prázdný objekt.
Kompletní příklad šablony ARM najdete ve specifikaci rozhraní API ARM.
Poznámka:
Aplikace může mít současně přiřazené systémové i uživatelem přiřazené identity. V tomto případě by hodnota vlastnosti type byla SystemAssigned,UserAssigned.
Pokud chcete přidat jednu nebo více identit přiřazených uživatelem, přidejte do konfiguračního identity souboru YAML oddíl. Nahraďte <IDENTITY1_RESOURCE_ID> identifikátory <IDENTITY2_RESOURCE_ID> prostředků identit, které chcete přidat.
Zadejte každou identitu přiřazenou uživatelem tak, že do objektu userAssignedIdentities přidáte položku s identifikátorem prostředku identity jako klíčem. Jako hodnotu použijte prázdný objekt.
Kompletní příklad šablony YAML najdete ve specifikaci rozhraní API ARM.
Poznámka:
Aplikace může mít současně přiřazené systémové i uživatelem přiřazené identity. V tomto případě by vlastnost typu byla SystemAssigned,UserAssigned.
Konfigurace cílového prostředku
U některých prostředků je potřeba nakonfigurovat přiřazení rolí pro spravovanou identitu vaší aplikace pro udělení přístupu. V opačném případě se volání z vaší aplikace do služeb, jako je Azure Key Vault a Azure SQL Database, zamítnou, i když pro tuto identitu použijete platný token. Další informace o řízení přístupu na základě role v Azure (Azure RBAC) najdete v tématu Co je RBAC? Další informace o tom, které prostředky podporují tokeny Microsoft Entra, najdete v tématu Služby Azure, které podporují ověřování Microsoft Entra.
Důležité
Back-endové služby pro spravované identity uchovávají mezipaměť pro identifikátor URI prostředku přibližně po dobu 24 hodin. Pokud aktualizujete zásady přístupu konkrétního cílového prostředku a okamžitě načtete token pro tento prostředek, můžete token uložený v mezipaměti získat se zastaralými oprávněními, dokud nevyprší platnost tohoto tokenu. Vynucení aktualizace tokenu se nepodporuje.
Připojení ke službám Azure v kódu aplikace
Pomocí spravovaných identit může aplikace získat tokeny pro přístup k prostředkům Azure, které používají ID Microsoft Entra, jako je Azure SQL Database, Azure Key Vault a Azure Storage. Tyto tokeny představují aplikaci, která přistupuje k prostředku, a ne k žádnému konkrétnímu uživateli aplikace.
Container Apps poskytuje interně přístupný koncový bod REST pro načtení tokenů. Koncový bod REST je k dispozici v aplikaci se standardním požadavkem HTTP GET , který můžete odeslat pomocí obecného klienta HTTP ve vašem upřednostňovaném jazyce. Klientská knihovna Azure Identity poskytuje pro .NET, JavaScript, Java a Python abstrakci tohoto koncového bodu REST. K dalším službám Azure se můžete připojit přidáním objektu přihlašovacích údajů do klienta specifického pro službu.
Poznámka:
Pokud používáte klientskou knihovnu Azure Identity, musíte explicitně zadat ID klienta spravované identity přiřazené uživatelem.
Při připojování ke zdrojům dat Azure SQL pomocí Entity Framework Core zvažte použití Microsoft.Data.SqlClient, které poskytuje speciální připojovací řetězec pro připojení spravovaných identit.
Pro aplikace .NET je nejjednodušší způsob, jak pracovat se spravovanou identitou, prostřednictvím klientské knihovny Azure Identity pro .NET. Další informace najdete v následujících materiálech:
Odkazované příklady používají DefaultAzureCredential. Tento objekt je ve většině scénářů efektivní, protože stejný model funguje v Azure (se spravovanými identitami) a na místním počítači (bez spravovaných identit).
Pro Node.js aplikace je nejjednodušší způsob, jak pracovat se spravovanou identitou, prostřednictvím klientské knihovny Azure Identity pro JavaScript. Další informace najdete v následujících materiálech:
Odkazované příklady používají DefaultAzureCredential. Tento objekt je ve většině scénářů efektivní, protože stejný model funguje v Azure (se spravovanými identitami) a na místním počítači (bez spravovaných identit).
Další příklady kódu klientské knihovny Azure Identity pro JavaScript najdete v příkladech identit Azure.
Pro aplikace v Pythonu je nejjednodušší způsob, jak pracovat se spravovanou identitou, prostřednictvím klientské knihovny Azure Identity pro Python. Další informace najdete v následujících materiálech:
Odkazované příklady používají DefaultAzureCredential. Tento objekt je ve většině scénářů efektivní, protože stejný model funguje v Azure (se spravovanými identitami) a na místním počítači (bez spravovaných identit).
Pro aplikace a funkce v Javě je nejjednodušší způsob, jak pracovat se spravovanou identitou, prostřednictvím klientské knihovny Azure Identity pro Javu. Další informace najdete v následujících materiálech:
Odkazované příklady používají DefaultAzureCredential. Tento objekt je ve většině scénářů efektivní, protože stejný model funguje v Azure (se spravovanými identitami) a na místním počítači (bez spravovaných identit).
Další příklady kódu klientské knihovny Azure Identity pro Javu najdete v tématu Příklady identit Azure.
Pomocí následujícího skriptu načtěte token z místního koncového bodu zadáním identifikátoru URI prostředku služby Azure. Nahraďte zástupný symbol identifikátorem URI prostředku a získejte token.
Nezpracovaný požadavek HTTP GET vypadá jako v následujícím příkladu.
Získejte adresu URL koncového bodu tokenu IDENTITY_ENDPOINT z proměnné prostředí. x-identity-header obsahuje identifikátor GUID uložený v IDENTITY_HEADER proměnné prostředí.
GET http://localhost:42356/msi/token?resource=https://vault.azure.net&api-version=2019-08-01 HTTP/1.1
x-identity-header: 853b9a84-5bfa-4b22-a3f3-0b9a43d9ad8a
Tato odpověď je stejná jako odpověď pro požadavek přístupového tokenu microsoft Entra service-to-service. Pokud chcete získat přístup ke službě Key Vault, přidejte hodnotu access_token připojení klienta k trezoru.
Referenční informace ke koncovému bodu REST
Aplikace kontejneru se spravovanou identitou zveřejňuje koncový bod identity definováním dvou proměnných prostředí:
IDENTITY_ENDPOINT: Místní adresa URL, ze které může vaše aplikace kontejneru požadovat tokeny.
IDENTITY_HEADER: Hlavička, která pomáhá zmírnit útoky SSRF (server-side request forgery). Hodnota se otočí platformou.
Pokud chcete získat token pro prostředek, vytvořte do koncového bodu požadavek HTTP GET , včetně následujících parametrů:
Název parametru
V
Popis
resource
Dotaz
Identifikátor URI prostředku Microsoft Entra prostředku, pro který má být token získán. Prostředek může být jednou ze služeb Azure, které podporují ověřování Microsoft Entra nebo jakýkoli jiný identifikátor URI prostředku.
verze-api
Dotaz
Verze rozhraní API tokenu, která se má použít. Použijte "2019-08-01" nebo novější.
HLAVIČKA X-IDENTITY-HEADER
Hlavička
Hodnota IDENTITY_HEADER proměnné prostředí. Tato hlavička zmírní útoky na požadavky na straně serveru (SSRF).
client_id
Dotaz
(Volitelné) ID klienta identity přiřazené uživatelem, které se má použít. Nelze použít u požadavku, který obsahuje principal_id, mi_res_idnebo object_id. Pokud jsou vynechány všechny parametry ID (client_id, principal_id, object_ida mi_res_id) , použije se identita přiřazená systémem.
principal_id
Dotaz
(Volitelné) ID objektu zabezpečení identity přiřazené uživatelem, které se má použít. object_id je alias, který se místo toho může použít. Nejde použít u požadavku, který zahrnuje client_id, mi_res_id nebo object_id. Pokud jsou vynechány všechny parametry ID (client_id, principal_id, object_ida mi_res_id) , použije se identita přiřazená systémem.
mi_res_id
Dotaz
(Volitelné) ID prostředku Azure identity přiřazené uživatelem, které se má použít. Nelze použít u požadavku, který obsahuje principal_id, client_idnebo object_id. Pokud jsou vynechány všechny parametry ID (client_id, principal_id, object_ida mi_res_id) , použije se identita přiřazená systémem.
Důležité
Pokud se pokoušíte získat tokeny pro identity přiřazené uživatelem, musíte zahrnout jednu z volitelných vlastností. Jinak se služba tokenů pokusí získat token pro identitu přiřazenou systémem, která může nebo nemusí existovat.
Zobrazení spravovaných identit
Spravované identity přiřazené systémem a uživatelem můžete zobrazit pomocí následujícího příkazu Azure CLI. Výstup zobrazuje typ spravované identity, ID tenanta a ID objektu zabezpečení všech spravovaných identit přiřazených k vaší aplikaci kontejneru.
az containerapp identity show --name <APP_NAME> --resource-group <GROUP_NAME>
Odebrání spravované identity
Když odeberete identitu přiřazenou systémem, odstraní se z ID Microsoft Entra. Identity přiřazené systémem se také automaticky odeberou z ID Microsoft Entra při odstranění samotného prostředku aplikace kontejneru. Odebrání spravovaných identit přiřazených uživatelem z aplikace kontejneru je neodebere z ID Microsoft Entra.