Sdílet prostřednictvím


Použití spravovaných identit pro App Service a Azure Functions

V tomto článku se dozvíte, jak vytvořit spravovanou identitu pro aplikace Azure App Service a Azure Functions a jak ji použít pro přístup k dalším prostředkům.

Spravovaná identita z Microsoft Entra ID umožňuje vaší aplikaci snadno přistupovat k dalším prostředkům chráněným microsoftem Entra, jako je Azure Key Vault. Platforma Azure spravuje identitu, takže nemusíte zřizovat ani obměňovat tajné kódy. Další informace o spravovaných identitách v Microsoft Entra ID najdete v tématu Spravované identity pro prostředky Azure.

Aplikaci můžete udělit dva typy identit:

  • Identita přiřazená systémem je svázaná s aplikací a je odstraněna, pokud je aplikace odstraněna. 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ý je možné přiřadit k vaší aplikaci. Aplikace může mít více identit přiřazených uživatelem. Jednu identitu přiřazenou uživatelem je možné přiřadit k několika prostředkům Azure, jako jsou dvě aplikace App Service.

Konfigurace spravované identity je specifická pro slot. Pokud chcete nakonfigurovat spravovanou identitu pro slot nasazení, přejděte nejprve do slotu na portálu. Pokud chcete najít spravovanou identitu pro webovou aplikaci nebo nasazovací slot v tenantovi Microsoft Entra na webu Azure Portal, vyhledejte ji přímo na stránce Přehled vašeho tenanta.

Poznámka:

Spravované identity nejsou dostupné pro aplikace nasazené v Azure Arc.

Protože spravované identity nepodporují scénáře napříč adresáři, nechovají se podle očekávání, pokud se vaše aplikace migruje mezi předplatnými nebo tenanty. Pokud chcete po takovém přesunu znovu vytvořit spravované identity, přečtěte si téma Automatické vytvoření spravovaných identit, pokud přesunu předplatné do jiného adresáře? Podřízené prostředky také musí mít aktualizované zásady přístupu, aby používaly novou identitu.

Požadavky

Pokud chcete provést kroky v tomto článku, musíte mít minimální sadu oprávnění k prostředkům Azure. Konkrétní oprávnění, která potřebujete, se liší v závislosti na vašem scénáři. Následující tabulka shrnuje nejběžnější scénáře:

Scénář Požadovaná oprávnění Příklad předdefinovaných rolí
Vytvoření identity přiřazené systémem Microsoft.Web/sites/write nad aplikací nebo Microsoft.Web/sites/slots/write nad slotem Přispěvatel webu
Vytvořte identitu přiřazenou uživatelem Microsoft.ManagedIdentity/userAssignedIdentities/write nad skupinou prostředků, ve které chcete vytvořit identitu Přispěvatel spravované identity
Přiřaďte aplikaci identitu přiřazenou uživatelem Microsoft.Web/sites/write nad aplikací, Microsoft.Web/sites/slots/write nad slotem, nebo
Microsoft.ManagedIdentity/userAssignedIdentities/*/assign/action přes identitu
Přispěvatel webu a operátor spravované identity
Vytvoření rolí Azure Microsoft.Authorization/roleAssignments/write přes rozsah určeného prostředku Správce řízení přístupu na základě role nebo správce uživatelských přístupů

Přidejte systémem přiřazenou identitu

Pokud chcete povolit spravovanou identitu přiřazenou systémem, postupujte podle následujících pokynů.

  1. Na webu Azure Portal přejděte na stránku vaší aplikace.

  2. V nabídce vlevo vyberte Nastavení>Identity.

  3. Na kartě Systém přiřazený přepněte Stav na Zapnuto. Pak vyberte Uložit.

Přidejte uživatelsky přiřazenou identitu

Pokud chcete vytvořit aplikaci s identitou přiřazenou uživatelem, vytvořte identitu a pak do konfigurace aplikace přidejte její identifikátor prostředku.

  1. Podle těchto pokynů vytvořte prostředek identity spravované uživatelem.

  2. V nabídce vlevo na stránce vaší aplikace vyberte Nastavení>identity.

  3. Vyberte Přiřazený uživatel a pak vyberte Přidat.

  4. Vyhledejte identitu, kterou jste vytvořili dříve, vyberte ji a pak vyberte Přidat.

Po dokončení těchto kroků se aplikace restartuje.

Konfigurace cílového prostředku

Potřebujete nakonfigurovat cílový prostředek tak, aby umožňoval přístup z vaší aplikace. U většiny služeb Azure nakonfigurujete cílový prostředek vytvořením přiřazení role.

Některé služby používají jiné mechanismy než řízení přístupu na základě role v Azure. Informace o tom, jak nakonfigurovat přístup pomocí identity, najdete v dokumentaci pro každý cílový prostředek. 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.

Pokud například požadujete token pro přístup k tajnému kódu ve službě Azure Key Vault, musíte také vytvořit přiřazení role, které spravované identitě umožní pracovat s tajnými kódy v cílovém trezoru. Jinak Key Vault vaše volání odmítne, i když použijete platný token. Totéž platí pro Azure SQL Database a další služby.

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 a můžou trvat až tuto dobu, než se změny ve skupině nebo členství role spravované identity projeví. V současné době není možné vynutit aktualizaci tokenu spravované identity před vypršením jeho platnosti. Pokud změníte členství ve skupině nebo roli spravované identity a přidáte nebo odeberete oprávnění, možná budete muset počkat až 24 hodin, než prostředek Azure používá identitu, aby měl správný přístup.

Alternativy ke skupinám nebo členstvím rolí najdete v tématu Omezení používání spravovaných identit pro autorizaci.

Připojení ke službám Azure v kódu aplikace

Díky spravované identitě může aplikace získat tokeny pro prostředky Azure, které pomáhá Microsoft Entra ID chránit, 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.

App Service a Azure Functions poskytují interně přístupný koncový bod REST pro načtení tokenu . Ke koncovému bodu REST můžete přistupovat z aplikace pomocí standardního požadavku HTTP GET . Požadavek můžete implementovat pomocí obecného klienta HTTP v každém jazyce.

Klientská knihovna Azure Identity poskytuje pro .NET, JavaScript, Java a Python abstrakci tohoto koncového bodu REST a zjednodušuje vývojové prostředí. Připojení k jiným službám Azure je stejně jednoduché jako přidání objektu přihlašovacích údajů do klienta specifického pro službu.

Nezpracovaný požadavek HTTP GET používá dvě zadané proměnné prostředí a vypadá jako v následujícím příkladu:

GET /MSI/token?resource=https://vault.azure.net&api-version=2019-08-01 HTTP/1.1
Host: <ip-address-:-port-in-IDENTITY_ENDPOINT>
X-IDENTITY-HEADER: <value-of-IDENTITY_HEADER>

Ukázková odpověď může vypadat jako v následujícím příkladu:

HTTP/1.1 200 OK
Content-Type: application/json

{
    "access_token": "eyJ0eXAi…",
    "expires_on": "1586984735",
    "resource": "https://vault.azure.net",
    "token_type": "Bearer",
    "client_id": "00001111-aaaa-2222-bbbb-3333cccc4444"
}

Tato odpověď je stejná jako odpověď na 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 ke klientskému připojení k trezoru.

Další informace o koncovém bodu REST najdete v referenčních informacích k koncovému bodu REST dále v tomto článku.

Odstraňte identitu

Když odeberete identitu přiřazenou systémem, odstraní se z ID Microsoft Entra. Identita přiřazená systémem se také automaticky odebere ze služby Microsoft Entra ID při odstranění samotného prostředku aplikace.

  1. V nabídce vlevo na stránce vaší aplikace vyberte Nastavení>identity.

  2. Postupujte podle kroků založených na typu identity:

    • Pro identitu přiřazenou systémem: Na kartě Přiřazený systém přepněte Stav na Vypnuto. Pak vyberte Uložit.
    • Pro identitu přiřazenou uživatelem: Vyberte kartu Uživatelem přiřazená, zaškrtněte políčko pro identitu a poté vyberte Odebrat. Potvrďte výběrem možnosti Ano.

Poznámka:

Můžete také nastavit nastavení aplikace, které zakáže pouze službu místního tokenu: WEBSITE_DISABLE_MSI. Identita ale zůstává zachována. Nástroje stále zobrazují spravovanou identitu jako zapnutou nebo povolenou. V důsledku toho nedoporučujeme toto nastavení používat.

Referenční informace ke koncovému bodu REST

Aplikace se spravovanou identitou zpřístupňuje tento koncový bod definováním dvou proměnných prostředí:

  • IDENTITY_ENDPOINT: Adresa URL služby místního tokenu.
  • IDENTITY_HEADER: Hlavička, která mohla by pomoci zmírnit útoky na padělání požadavků na straně serveru (SSRF). Platforma otáčí hodnotu.

Proměnná IDENTITY_ENDPOINT je místní adresa URL, ze které může aplikace požadovat tokeny. Pokud chcete získat token pro prostředek, odešlete na tento koncový bod požadavek HTTP GET. Zahrňte následující parametry:

Název parametru V Popis
resource Dotaz Identifikátor URI prostředku Microsoft Entra, pro který má být token získán. Tento prostředek může zahrnovat jednu ze služeb Azure, které podporují ověřování Microsoft Entra nebo některý jiný identifikátor URI.
api-version Dotaz Verze rozhraní API tokenu, která se má použít. Použijte 2019-08-01.
X-IDENTITY-HEADER Hlavička Hodnota proměnné prostředí IDENTITY_HEADER. Tato hlavička slouží ke zmírnění útoků SSRF.
client_id Dotaz (Volitelné) ID klienta uživatelsky přiřazené identity, které se má použít. Nejde ho 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é) Hlavní ID identity přiřazené uživatelem, které se má použít. Parametr object_id je alias, který lze použít místo toho. Nejde ho použít u požadavku, který obsahuje client_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.
mi_res_id Dotaz (Volitelné) ID prostředku Azure uživatelsky přiřazené identity, které se má použít. Nejde ho 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, uveďte 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.

Podívejte se na následující kurzy: