Jak používat spravované identity pro App Service a Azure Functions

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

Důležité

Vzhledem k tomu, že spravované identity nepodporují scénáře napříč adresáři, nebudou se chovat podle očekávání, pokud se vaše aplikace migruje mezi předplatnými nebo tenanty. Pokud chcete po tomto přesunu spravované identity znovu vytvořit spravované identity, přečtěte si téma Automaticky se vytvoří spravované identity, 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.

Poznámka:

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

Spravovaná identita z Microsoft Entra ID umožňuje vaší aplikaci snadný přístup k dalším prostředkům chráněným Microsoft Entra, jako je Azure Key Vault. Identitu spravuje platforma Azure a nevyžaduje, abyste zřizovali nebo rotovali tajné kódy. Další informace o spravovaných identitách v Microsoft Entra ID najdete v tématu Spravované identity pro prostředky Azure.

Vaší aplikaci je možné udělit dva typy identit:

  • Identita přiřazená systémem je svázaná s vaší aplikací a při odstranění aplikace 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ý je možné přiřadit k vaší aplikaci. Aplikace může mít více identit přiřazených uživatelem.

Konfigurace spravované identity je specifická pro slot. Pokud chcete nakonfigurovat spravovanou identitu pro slot nasazení na portálu, nejprve přejděte do slotu. Pokud chcete najít spravovanou identitu pro webovou aplikaci nebo slot nasazení v tenantovi Microsoft Entra z webu Azure Portal, vyhledejte ji přímo na stránce Přehled vašeho tenanta. Název slotu je obvykle podobný <app-name>/slots/<slot-name>.

V tomto videu se dozvíte, jak používat spravované identity pro Službu App Service.

Kroky ve videu jsou popsané také v následujících částech.

Přidání identity přiřazené systémem

  1. V levém navigačním panelu stránky aplikace se posuňte dolů ke skupině Nastavení.

  2. Vyberte Identitu.

  3. Na kartě Přiřazený systém přepněte stav na Zapnuto. Klikněte na Uložit.

    Screenshot that shows where to switch Status to On and then select Save.

Přidání identity přiřazené uživatelem

Vytvoření aplikace s identitou přiřazenou uživatelem vyžaduje, abyste identitu vytvořili a pak do konfigurace aplikace přidali její identifikátor prostředku.

Nejprve budete muset vytvořit prostředek identity přiřazený uživatelem.

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

  2. V levém navigačním panelu stránky aplikace se posuňte dolů ke skupině Nastavení.

  3. Vyberte Identitu.

  4. Vyberte Přidat přiřazený>uživatelem.

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

    Managed identity in App Service

    Jakmile vyberete Přidat, aplikace se restartuje.

Konfigurace cílového prostředku

Možná budete muset nakonfigurovat cílový prostředek tak, aby umožňoval přístup z vaší aplikace nebo funkce. Pokud například požadujete token pro přístup ke službě Key Vault, musíte také přidat zásadu přístupu, která zahrnuje spravovanou identitu vaší aplikace nebo funkce. Jinak budou vaše volání do služby Key Vault odmítnuta, i když použijete platný token. Totéž platí pro Azure SQL Database. 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é identity může aplikace získat tokeny pro prostředky Azure, které jsou chráněné 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.

App Service a Azure Functions poskytují interně přístupný koncový bod REST pro načtení tokenu . 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 a zjednodušuje vývojové prostředí. 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.

Nezpracovaný požadavek HTTP GET 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: localhost:4141
X-IDENTITY-HEADER: 853b9a84-5bfa-4b22-a3f3-0b9a43d9ad8a

Ukázková odpověď může vypadat nějak takto:

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": "5E29463D-71DA-4FE0-8E69-999B57DB23B0"
}

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.

Další informace o koncovém bodu REST najdete v referenčních informacích ke koncovému bodu REST.

Odebrání 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.

  1. V levém navigačním panelu stránky aplikace se posuňte dolů ke skupině Nastavení.

  2. Vyberte Identitu. Pak postupujte podle kroků založených na typu identity:

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

Poznámka:

K dispozici je také nastavení aplikace, které je možné nastavit, WEBSITE_DISABLE_MSI, což pouze zakáže místní službu tokenů. Ponechá ale identitu na místě a nástroje budou dál zobrazovat spravovanou identitu jako zapnutou nebo povolenou. V důsledku toho se použití tohoto nastavení nedoporučuje.

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 místní služby tokenů.
  • IDENTITY_HEADER – hlavička, která pomáhá zmírnit útoky SSRF (server-side request forgery). Hodnota se otočí platformou.

IDENTITY_ENDPOINT je místní adresa URL, ze které může vaše aplikace požadovat tokeny. Pokud chcete získat token pro prostředek, proveďte požadavek HTTP GET na tento koncový bod, 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. Může to být jedna ze služeb Azure, které podporují ověřování Microsoft Entra nebo jakýkoli jiný identifikátor URI prostředků.
verze-api Dotaz Verze rozhraní API tokenu, která se má použít. Použijte 2019-08-01.
HLAVIČKA X-IDENTITY-HEADER Hlavička Hodnota proměnné prostředí IDENTITY_HEADER. Tato hlavička slouží ke zmírnění útoků SSRF (server-side request forgery).
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, msi_res_idnebo object_id. Pokud jsou vynechány všechny parametry ID (client_id, principal_id, object_ida msi_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. Nelze použít u požadavku, který zahrnuje client_id, msi_res_id nebo object_id. Pokud jsou vynechány všechny parametry ID (client_id, principal_id, object_ida msi_res_id) , použije se identita přiřazená systémem.
msi_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 msi_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.

Další kroky