Sdílet prostřednictvím


Ověřte JavaScriptové aplikace hostované na Azure ke zdrojům Azure pomocí uživatelsky přiřazené řízené identity

Doporučeným přístupem k ověření Azure hostované aplikace u jiných prostředků Azure je použití managed identity. Tento přístup je podporován pro většinu služeb Azure, včetně aplikací hostovaných na Azure App Service, Azure Container Apps a Azure Virtual Machines. Další informace o různých technikách ověřování a přístupech najdete na stránce přehledu ověřování . V dalších částech se dozvíte:

  • Základní koncepty spravované identity
  • Vytvoření spravované identity přiřazené uživatelem pro vaši aplikaci
  • Přiřazení rolí spravované identitě přiřazené uživatelem
  • Jak autentizovat pomocí uživatelsky přiřazené spravované identity z kódu vaší aplikace

Základní koncepty spravované identity

Spravovaná identita umožňuje aplikaci bezpečně připojit k dalším Azure prostředkům bez použití tajných klíčů nebo jiných tajných kódů aplikací. Interně Azure sleduje identitu a prostředky, ke kterým se může připojit. Azure tyto informace používá k automatickému získání tokenů Microsoft Entra pro aplikaci, aby se mohla připojit k dalším Azure prostředkům.

Při konfiguraci hostované aplikace je potřeba zvážit dva typy spravovaných identit:

  • Systemem přiřazené spravované identity jsou povoleny přímo na prostředku Azure a jsou vázány na jeho životní cyklus. Po odstranění prostředku Azure automaticky odstraní identitu za vás. Identity přiřazené systémem poskytují minimalistický přístup k používání spravovaných identit.
  • Uživatelsky přiřazené spravované identity se vytvářejí jako samostatné prostředky Azure a nabízejí větší flexibilitu a schopnosti. Jsou ideální pro řešení zahrnující více Azure prostředků, které potřebují sdílet stejnou identitu a oprávnění. Pokud například více virtuálních počítačů potřebuje přístup ke stejné sadě Azure prostředků, poskytuje spravovaná identita přiřazená uživatelem možnost opakovaného použití a optimalizovanou správu.

Návod

Další informace o výběru a správě spravovaných identit přiřazených systémem a přiřazených uživatelem najdete v článku s doporučeními k osvědčeným postupům spravované identity .

Následující části popisují postup povolení a použití spravované identity přiřazené uživatelem pro Azure hostované aplikace. Pokud potřebujete použít spravovanou identitu přiřazenou systémem, další informace najdete v článku o spravovaných identitách přiřazených systémem .

Vytvořit uživatelsky přiřazenou spravovanou identitu

Spravované identity přiřazené uživatelem se ve vašem Azure předplatném vytvářejí jako samostatné prostředky pomocí portálu Azure nebo Azure CLI. Azure CLI příkazy je možné spouštět v Azure Cloud Shell nebo na pracovní stanici s nainstalovaným Azure CLI.

  1. Na portálu Azure zadejte na hlavním panelu hledání Spravované identity a v části Services vyberte odpovídající výsledek.

  2. Na stránce Spravované identity vyberte + Vytvořit.

    Snímek obrazovky zobrazující stránku pro správu spravovaných identit přiřazených uživatelem

  3. Na stránce Vytvořit spravovanou identitu přiřazenou uživatelem vyberte předplatné, skupinu prostředků a oblast spravované identity přiřazené uživatelem a zadejte název.

  4. Vyberte Zkontrolovat a vytvořit , abyste zkontrolovali a ověřili vaše vstupy.

    Snímek obrazovky znázorňující formulář pro vytvoření spravované identity přiřazené uživatelem

  5. Výběrem možnosti Vytvořit vytvořte spravovanou identitu přiřazenou uživatelem.

  6. Po vytvoření identity vyberte Pokračovat k prostředku.

  7. Na stránce Přehled nové identity zkopírujte hodnotu ID klienta , která se použije pro pozdější použití při konfiguraci kódu aplikace.

Přiřazení spravované identity k aplikaci

Spravovanou identitu přiřazenou uživatelem je možné přidružit k jednomu nebo více prostředkům Azure. Všechny prostředky, které používají tuto identitu, získají oprávnění spojená s rolemi identity.

  1. Na portálu Azure přejděte k prostředku, který je hostitelem kódu aplikace, jako je Azure App Service nebo instance Azure Container Apps.

  2. Na stránce Přehled prostředku rozbalte Nastavení a v navigaci vyberte Identita .

  3. Na stránce Identita přepněte na záložku Uživatelem přiřazené.

  4. Výběrem + Přidat otevřete panel Přidat spravovanou identitu přiřazenou uživatelem .

  5. Na panelu Přidat uživatelsky přiřazenou spravovanou identitu použijte rozevírací seznam Předplatné k filtrování výsledků hledání mezi vašimi identitami. Pomocí vyhledávacího pole Uživateli přiřazené spravované identity vyhledejte spravovanou identitu přiřazenou uživatelem, kterou jste povolili pro prostředek Azure hostující vaši aplikaci.

  6. Vyberte identitu a pokračujte výběrem možnosti Přidat v dolní části panelu.

    Snímek obrazovky znázorňující přidružení spravované identity přiřazené uživatelem k aplikaci

Přiřazení rolí ke spravované identitě

Dále určete, které role vaše aplikace potřebuje, a přiřaďte tyto role spravované identitě. Spravované identitě můžete přiřadit role v následujících oborech:

  • Prostředek: Přiřazené role se vztahují pouze na tento konkrétní prostředek.
  • Skupina prostředků: Přiřazené role se vztahují na všechny prostředky obsažené ve skupině prostředků.
  • Předplatné: Přiřazené role se vztahují na všechny prostředky obsažené v předplatném.

Následující příklad ukazuje, jak přiřadit role v oboru skupiny prostředků, protože mnoho aplikací spravuje všechny související Azure prostředky pomocí jedné skupiny prostředků.

  1. Přejděte na stránku Přehled skupiny prostředků, která obsahuje aplikaci se spravovanou identitou přiřazenou uživatelem.

  2. V levém navigačním panelu vyberte Řízení přístupu (IAM ).

  3. Na stránce Řízení přístupu (IAM) v horní nabídce vyberte + Přidat a pak zvolte Přidat přiřazení role a přejděte na stránku Přidat přiřazení role .

    Snímek obrazovky znázorňující, jak získat přístup ke stránce přiřazení role identity

  4. Stránka Přidat přiřazení role představuje vícestupňový pracovní postup se záložkami pro přiřazení rolí identitám. Na úvodní kartě Role vyhledejte pomocí vyhledávacího pole v horní části roli, kterou chcete přiřadit k identitě.

  5. Ve výsledcích vyberte roli a pak zvolte Další a přejděte na kartu Členové .

  6. U možnosti Přiřadit přístup vyberte Spravovaná identita.

  7. U možnosti Členové zvolte + Vybrat členy a otevřete panel Vybrat spravované identity .

  8. Na panelu Vybrat spravované identity použijte rozevírací nabídky Předplatné a Spravovaná identita ke filtrování výsledků hledání pro vaše identity. Pomocí vyhledávacího pole Select vyhledejte spravovanou identitu přiřazenou uživatelem, kterou jste povolili pro prostředek Azure hostující vaši aplikaci.

    Snímek obrazovky znázorňující proces přiřazení spravované identity

  9. Vyberte identitu a pokračujte výběrem možnosti Vybrat v dolní části panelu.

  10. V dolní části stránky vyberte Zkontrolovat a přiřadit .

  11. Na poslední kartě Revize a přiřazení vyberte Zkontrolovat a přiřadit a dokončete pracovní postup.

Autentizace ke službám Azure z vaší aplikace

Knihovna identit Azure poskytuje různé pověření – implementace upravené tak, aby podporovaly různé scénáře a ověřovací tok služby Microsoft Entra. Vzhledem k tomu, že spravovaná identita není při místním spuštění dostupná, následující kroky ukazují, kterou pověření použít v jednotlivých případech.

  • Místní vývojové prostředí: Pouze při místním vývoji použijte třídu DefaultAzureCredential pro jasně vymezený a předkonfigurovaný řetězec přihlašovacích údajů. DefaultAzureCredential zjišťuje přihlašovací údaje uživatele z místního nástroje nebo integrovaného vývojového prostředí ( například Azure CLI nebo Visual Studio Code). Poskytuje také flexibilitu a pohodlí pro opakování, doby čekání na odpovědi a podporu více možností ověřování. Další informace najdete v článku Autentizace ke službám Azure během místního vývoje.
  • Azure hostované aplikace: Když aplikace běží v Azure, použijte ManagedIdentityCredential k bezpečnému zjištění spravované identity nakonfigurované pro vaši aplikaci. Zadáním tohoto přesného typu přihlašovacích údajů zabráníte neočekávanému vyzvednutí dalších dostupných přihlašovacích údajů.

Implementace kódu

V projektu JavaScriptu přidejte balíček @azure/identity . V terminálu podle vašeho výběru přejděte do adresáře projektu aplikace a spusťte následující příkazy:

npm install @azure/identity

Azure služby jsou přístupné pomocí specializovaných klientských tříd z různých Azure SDK klientských knihoven. Provedením index.jsnásledujících kroků nakonfigurujte ověřování na základě tokenu:

  1. Importujte @azure/identity balíček.
  2. Předejte klientovi příslušnou TokenCredential instanci:
    • Použijte DefaultAzureCredential , když je vaše aplikace spuštěná místně.
    • Při spuštění aplikace v Azure použijte ManagedIdentityCredential a nakonfigurujte ID klienta, ID prostředku nebo ID objektu.

ID klienta slouží k identifikaci spravované identity při konfiguraci aplikací nebo služeb, které je potřeba ověřit pomocí této identity.

  1. Pomocí následujícího příkazu načtěte ID klienta přiřazené spravované identitě přiřazené uživatelem:

    az identity show \
        --resource-group <resource-group-name> \
        --name <identity-name> \
        --query 'clientId'
    
  2. Konfigurujte ManagedIdentityCredential s ID klienta:

    import { BlobServiceClient } from '@azure/storage-blob';
    import { ManagedIdentityCredential, DefaultAzureCredential } from '@azure/identity';
    
    console.log(process.env);
    
    function createBlobServiceClient() {
        const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME;
        if (!accountName) throw Error('Azure Storage accountName not found');
        const url = `https://${accountName}.blob.core.windows.net`;
    
        if (process.env.NODE_ENV === "production") {
            const clientId = process.env.AZURE_CLIENT_ID;
            if (!clientId) throw Error('AZURE_CLIENT_ID not found for Managed Identity');
            return new BlobServiceClient(url, new ManagedIdentityCredential(clientId));
        } else {
            return new BlobServiceClient(url, new DefaultAzureCredential());
        }
    }
    
    async function main() {
        try {
            const blobServiceClient = createBlobServiceClient();
            const containerClient = blobServiceClient.getContainerClient(process.env.AZURE_STORAGE_CONTAINER_NAME);
            // do something with client
            const properties = await containerClient.getProperties();
    
            console.log(properties);
        } catch (err) {
            console.error("Error retrieving container properties:", err.message);
            throw err;
        }
    }
    
    main().catch((err) => {
        console.error("Error running sample:", err.message);
        process.exit(1);
    });
    

Implementace kódu

V projektu TypeScript přidejte balíček @azure/identity . V terminálu podle vašeho výběru přejděte do adresáře projektu aplikace a spusťte následující příkazy:

npm install typescript @azure/identity @types/node

Azure služby jsou přístupné pomocí specializovaných klientských tříd z různých Azure SDK klientských knihoven. Provedením index.jsnásledujících kroků nakonfigurujte ověřování na základě tokenu:

  1. Importujte @azure/identity balíček.
  2. Předejte klientovi příslušnou TokenCredential instanci:
    • Použití DefaultAzureCredential při místním spuštění aplikace
    • Při spuštění aplikace v Azure použijte ManagedIdentityCredential a nakonfigurujte ID klienta, ID prostředku nebo ID objektu.

ID klienta slouží k identifikaci spravované identity při konfiguraci aplikací nebo služeb, které je potřeba ověřit pomocí této identity.

  1. Pomocí následujícího příkazu načtěte ID klienta přiřazené spravované identitě přiřazené uživatelem:

    az identity show \
        --resource-group <resource-group-name> \
        --name <identity-name> \
        --query 'clientId'
    
  2. Konfigurujte ManagedIdentityCredential s ID klienta:

    import { BlobServiceClient } from '@azure/storage-blob';
    import { ManagedIdentityCredential, DefaultAzureCredential } from '@azure/identity';
    
    function createBlobServiceClient(): BlobServiceClient {
        const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME;
        if (!accountName) throw Error('Azure Storage accountName not found');
        const url = `https://${accountName}.blob.core.windows.net`;
    
        if (process.env.NODE_ENV === "production") {
            const clientId = process.env.AZURE_CLIENT_ID;
            if (!clientId) throw Error('AZURE_CLIENT_ID not found for Managed Identity');
            return new BlobServiceClient(url, new ManagedIdentityCredential(clientId));
        } else {
            return new BlobServiceClient(url, new DefaultAzureCredential());
        }
    }
    
    async function main(): Promise<void> {
        try {
            const blobServiceClient = createBlobServiceClient();
            const containerClient = blobServiceClient.getContainerClient(process.env.AZURE_STORAGE_CONTAINER_NAME!);
            const properties = await containerClient.getProperties();
    
            console.log(properties);
        } catch (err: any) {
            console.error("Error retrieving container properties:", err.message);
            throw err;
        }
    }
    
    main().catch((err: Error) => {
        console.error("Error running sample:", err.message);
        process.exit(1);
    });
    

Předchozí kód se chová jinak v závislosti na prostředí, ve kterém je spuštěný:

  • Na místní vývojové pracovní stanici DefaultAzureCredential hledá v proměnných prostředí aplikační Service Principal nebo v lokálně nainstalovaných nástrojích pro vývojáře, jako je Visual Studio Code, přihlašovací údaje vývojáře.
  • Když se nasadí do Azure, ManagedIdentityCredential automaticky zjistí konfigurace spravované identity, které umožňují ověřování v jiných službách.