Sdílet prostřednictvím


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

Poznámka:

Od 1. června 2024 budou mít všechny nově vytvořené aplikace App Service možnost vygenerovat jedinečný výchozí název hostitele pomocí zásad <app-name>-<random-hash>.<region>.azurewebsites.netvytváření názvů . Stávající názvy aplikací zůstanou beze změny.

Příklad: myapp-ds27dh7271aah175.westus-01.azurewebsites.net

Další podrobnosti najdete v tématu Jedinečný výchozí název hostitele pro prostředek služby App Service.

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 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 a jednu identitu přiřazenou uživatelem je možné přiřadit k více 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í 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. Přejděte k nastavení aplikace na webu Azure Portal ve skupině Nastavení v levém navigačním podokně.

  2. Vyberte Identita.

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

    Snímek obrazovky, který ukazuje, kam přepnout stav na Zapnuto, a pak vyberte Uložit.

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 Identita.

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

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

    Spravovaná identita ve službě 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ěť pro identifikátor URI prostředku přibližně po dobu 24 hodin. To znamená, že může trvat několik hodin, než se změny ve skupině nebo členství role spravované identity projeví. Dnes 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í, budete proto muset několik hodin počkat, než prostředek Azure pomocí identity bude mít 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

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í 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 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": "00001111-aaaa-2222-bbbb-3333cccc4444"
}

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 Identita. 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 V 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, 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. Nelze 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.

Další kroky