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ý se dá přiřadit k vaší aplikaci kontejneru a dalším prostředkům. Aplikace typu kontejner může mít více identit přiřazených uživatelem. Identita existuje, 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.
Identity přiřazené systémem jsou nejvhodnější pro úlohy, které:
jsou obsaženy v rámci jednoho prostředku.
potřeba nezávislých identit
Identity přiřazené uživatelem jsou ideální pro úlohy, které:
spustit na více prostředcích a může sdílet jednu identitu.
potřeba předběžné autorizace k zabezpečenému prostředku
Omezení
Použití spravovaných identit v pravidlech škálování se nepodporuje. Do pravidla škálování budete muset zahrnout připojovací řetězec nebo klíčsecretRef.
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.
V levém navigačním panelu stránky aplikace kontejneru se posuňte dolů ke skupině Nastavení.
Vyberte Identitu.
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 vlastnost typu 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ů budete muset nakonfigurovat přiřazení rolí pro spravovanou identitu vaší aplikace, abyste udělili přístup. Jinak se volání z vaší aplikace do služeb, jako je Azure Key Vault a Azure SQL Database, zamítne, 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ěť na 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. V současné době neexistuje způsob, jak vynutit aktualizaci tokenu.
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 přístupný z aplikace pomocí standardního příkazu HTTP GET, který je možné implementovat s obecným klientem HTTP v každém jazyce. Klientská knihovna Azure Identity poskytuje pro .NET, JavaScript, Java a Python abstrakci tohoto koncového bodu REST. Připojení do jiných služeb Azure je stejně jednoduché jako přidání objektu přihlašovacích údajů do klienta specifického pro službu.
Poznámka:
Pokud používáte klientskou knihovnu Azure Identity, musí být zadáno ID klienta spravované identity přiřazené uživatelem.
Pro aplikace .NET je nejjednodušší způsob, jak pracovat se spravovanou identitou, prostřednictvím klientské knihovny Azure Identity pro .NET. Informace najdete v příslušných záhlavích dokumentace klientské knihovny:
Odkazované příklady používají DefaultAzureCredential. Je užitečná pro většinu scénářů, 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 Node.js je nejjednodušší způsob, jak pracovat se spravovanou identitou, prostřednictvím klientské knihovny Azure Identity pro JavaScript. Informace najdete v příslušných záhlavích dokumentace klientské knihovny:
Odkazované příklady používají DefaultAzureCredential. Je užitečná pro většinu scénářů, 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. Informace najdete v příslušných záhlavích dokumentace klientské knihovny:
Odkazované příklady používají DefaultAzureCredential. Je užitečná pro většinu scénářů, 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. Informace najdete v příslušných záhlavích dokumentace klientské knihovny:
Odkazované příklady používají DefaultAzureCredential. Je užitečná pro většinu scénářů, 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. Pro přístup ke službě Key Vault pak přidáte 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 (SSRF) na straně serveru. 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
In
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.