Ověřování javascriptových aplikací ve službách Azure během místního vývoje pomocí instančních objektů

Při vytváření cloudových aplikací musí vývojáři ladit a testovat aplikace na místní pracovní stanici. Když je aplikace spuštěná na pracovní stanici vývojáře během místního vývoje, musí se stále ověřovat u všech služeb Azure, které aplikace používá. Tento článek popisuje, jak nastavit vyhrazené objekty instančního objektu aplikace, které se mají používat při místním vývoji.

Diagram znázorňující, jak javascriptová aplikace během místního vývoje používá přihlašovací údaje vývojáře k připojení k Azure získáním těchto přihlašovacích údajů místně nainstalovaných vývojových nástrojů.

Vyhrazené instanční objekty aplikací pro místní vývoj umožňují dodržovat princip nejnižších oprávnění během vývoje aplikací. Vzhledem k tomu, že oprávnění jsou vymezená přesně na to, co je potřeba pro aplikaci během vývoje, brání kód aplikace v náhodném přístupu k prostředku Azure určenému pro použití jinou aplikací. Tato metoda také zabraňuje výskytu chyb při přesunu aplikace do produkčního prostředí, protože aplikace byla v vývojovém prostředí přeprivilegovaná.

Instanční objekt aplikace se nastaví pro aplikaci, když je aplikace zaregistrovaná v Azure. Při registraci aplikací pro místní vývoj se doporučuje:

  • Vytvořte samostatné registrace aplikací pro každého vývojáře, který na aplikaci pracuje. Tato metoda vytvoří samostatné instanční objekty aplikací pro každého vývojáře, které budou používat při místním vývoji, a zabrání vývojářům sdílet přihlašovací údaje pro jeden instanční objekt aplikace.
  • Vytvořte samostatné registrace aplikací pro každou aplikaci. Tím se vymenou oprávnění aplikace jenom na to, co aplikace potřebuje.

Během místního vývoje se proměnné prostředí nastaví s identitou instančního objektu aplikace. Sada Azure SDK pro JavaScript čte tyto proměnné prostředí a používá tyto informace k ověření aplikace v prostředcích Azure, které potřebuje.

1. Registrace aplikace v Azure

Objekty instančního objektu aplikace se vytvářejí s registrací aplikace v Azure. Instanční objekty můžete vytvářet pomocí webu Azure Portal nebo Azure CLI.

Přihlaste se k webu Azure Portal a postupujte podle těchto kroků.

Pokyny Snímek obrazovky
Na webu Azure Portal:
  1. Na panelu hledání v horní části webu Azure Portal zadejte registrace aplikací.
  2. Vyberte položku označenou Registrace aplikací pod nadpisem Služby v nabídce, která se zobrazí pod panelem hledání.
Snímek obrazovky znázorňující, jak pomocí horního panelu hledání na webu Azure Portal najít a přejít na Registrace aplikací stránku
Na stránce Registrace aplikací vyberte + Nová registrace. Snímek obrazovky znázorňující umístění tlačítka Nová registrace na stránce Registrace aplikací
Na stránce Zaregistrovat aplikaci vyplňte formulář následujícím způsobem.
  1. Název → Zadejte název registrace aplikace v Azure. Tento název se doporučuje zahrnout název aplikace, uživatel, pro který je registrace aplikace, a identifikátor, jako je "dev", který označuje, že registrace aplikace se používá v místním vývoji.
  2. Podporované typy účtů → Účty pouze v tomto organizačním adresáři.
Vyberte Zaregistrovat a zaregistrujte aplikaci a vytvořte instanční objekt aplikace.
Snímek obrazovky znázorňující, jak vyplnit stránku Registrace aplikace tak, že aplikaci pojmenujete a zadáte podporované typy účtů jako účty pouze v tomto organizačním adresáři.
Na stránce Registrace aplikace pro vaši aplikaci:
  1. ID aplikace (klienta) → Toto je ID aplikace, které bude aplikace používat pro přístup k Azure během místního vývoje. Tuto hodnotu zkopírujte do dočasného umístění v textovém editoru, protože ji budete potřebovat v dalším kroku.
  2. ID adresáře (tenanta) → Tuto hodnotu bude vaše aplikace potřebovat také při ověřování v Azure. Zkopírujte tuto hodnotu do dočasného umístění v textovém editoru, bude ji také potřeba v dalším kroku.
  3. Přihlašovací údaje klienta → Před ověřením aplikace v Azure a používáním služeb Azure musíte pro aplikaci nastavit přihlašovací údaje klienta. Vyberte Přidat certifikát nebo tajný klíč a přidejte přihlašovací údaje pro vaši aplikaci.
Snímek obrazovky po dokončení registrace aplikace s umístěním ID aplikace, ID tenanta
Na stránce Certifikáty a tajné kódy vyberte + Nový tajný klíč klienta. Snímek obrazovky znázorňující umístění odkazu, které se má použít k vytvoření nového tajného klíče klienta na stránce certifikátů a tajných kódů
Dialogové okno Pro přidání tajného klíče klienta se zobrazí na pravé straně stránky. V tomto dialogovém okně:
  1. Popis → Zadejte hodnotu Current.
  2. Vyprší → Vyberte hodnotu 24 měsíců.
Chcete-li přidat tajný kód, vyberte Přidat .
Snímek obrazovky zobrazující stránku, na které se přidá nový tajný klíč klienta pro instanční objekt aplikace vytvořený procesem registrace aplikace
Na stránce Certifikáty a tajné kódy se zobrazí hodnota tajného klíče klienta.

Tuto hodnotu zkopírujte do dočasného umístění v textovém editoru, protože ji budete potřebovat v dalším kroku.

DŮLEŽITÉ: Toto je jediný čas, kdy uvidíte tuto hodnotu. Po opuštění nebo aktualizaci této stránky už tuto hodnotu neuvidíte. Můžete přidat další tajné kódy klienta bez zneplatnění tohoto tajného klíče klienta, ale tuto hodnotu znovu neuvidíte.
Snímek obrazovky zobrazující stránku s vygenerovaným tajným kódem klienta

2. Vytvoření skupiny zabezpečení Microsoft Entra pro místní vývoj

Vzhledem k tomu, že v aplikaci obvykle pracuje více vývojářů, doporučujeme vytvořit skupinu Microsoft Entra, která zapouzdří role (oprávnění), které aplikace potřebuje v místním vývoji, a ne přiřazovat role k jednotlivým objektům instančního objektu. To nabízí následující výhody.

  • Každý vývojář má jistotu, že má přiřazené stejné role, protože role jsou přiřazené na úrovni skupiny.
  • Pokud je pro aplikaci potřeba nová role, stačí ji přidat jenom do skupiny Microsoft Entra pro aplikaci.
  • Pokud se nový vývojář připojí k týmu, vytvoří se nový instanční objekt aplikace pro vývojáře a přidá se do skupiny, aby vývojář získal správná oprávnění pro práci s aplikací.
Pokyny Snímek obrazovky
Na webu Azure Portal přejděte na stránku s ID Microsoft Entra tak, že do vyhledávacího pole v horní části stránky zadáte ID Microsoft Entra a pak v části služby vyberete ID Microsoft Entra. Snímek obrazovky znázorňující, jak pomocí horního panelu hledání na webu Azure Portal vyhledat a přejít na stránku MICROSOFT Entra ID
Na stránce Microsoft Entra ID vyberte skupiny z levé nabídky. Snímek obrazovky znázorňující umístění položky nabídky Skupiny v nabídce vlevo na stránce Výchozí adresář Microsoft Entra ID
Na stránce Všechny skupiny vyberte Možnost Nová skupina. Snímek obrazovky znázorňující umístění tlačítka Nová skupina na stránce Všechny skupiny
Na stránce Nová skupina:
  1. Typ skupiny → Zabezpečení
  2. Název skupiny → název skupiny zabezpečení, obvykle vytvořený z názvu aplikace. Je také užitečné do názvu skupiny zahrnout řetězec, jako je local-dev , aby bylo možné určit účel skupiny.
  3. Popis skupiny → Popis účelu skupiny.
  4. Vyberte odkaz Žádné členy vybrané v části Členové a přidejte do skupiny členy.
Snímek obrazovky znázorňující, jak vytvořit novou skupinu Microsoft Entra pro aplikaci
V dialogovém okně Přidat členy :
  1. Pomocí vyhledávacího pole vyfiltrujte seznam hlavních názvů v seznamu.
  2. Vyberte instanční objekty aplikace pro místní vývoj pro tuto aplikaci. Při výběru objektů budou zobrazené šedě a přesunou se do seznamu Vybraných položek v dolní části dialogového okna.
  3. Po dokončení vyberte tlačítko Vybrat .
Snímek obrazovky s dialogovým oknem Přidat členy znázorňující, jak vybrat instanční objekty aplikace, které se mají zahrnout do skupiny
Zpět na stránce Nová skupina vyberte Vytvořit a vytvořte skupinu.

Skupina se vytvoří a budete přesměrováni zpět na stránku Všechny skupiny . Zobrazení skupiny může trvat až 30 sekund a možná budete muset stránku aktualizovat kvůli ukládání do mezipaměti na webu Azure Portal.
Snímek obrazovky se stránkou Nová skupina znázorňující, jak proces dokončit výběrem tlačítka Vytvořit

3. Přiřazení rolí k aplikaci

Dále musíte určit, jaké role (oprávnění) vaše aplikace potřebuje k jakým prostředkům, a přiřadit tyto role k aplikaci. V tomto příkladu jsou role přiřazeny ke skupině Microsoft Entra vytvořené v kroku 2. Role je možné přiřadit roli v oboru prostředku, skupiny prostředků nebo předplatného. Tento příklad ukazuje, jak přiřadit role v oboru skupiny prostředků, protože většina aplikací seskupuje všechny prostředky Azure do jedné skupiny prostředků.

Pokyny Snímek obrazovky
Vyhledejte skupinu prostředků pro vaši aplikaci vyhledáním názvu skupiny prostředků pomocí vyhledávacího pole v horní části webu Azure Portal.

Přejděte do skupiny prostředků tak, že v dialogovém okně vyberete název skupiny prostředků pod nadpisem Skupiny prostředků.
Snímek obrazovky znázorňující, jak pomocí horního vyhledávacího pole na webu Azure Portal vyhledat a přejít do skupiny prostředků, ke které chcete přiřadit role (oprávnění).
Na stránce skupiny prostředků v nabídce vlevo vyberte Řízení přístupu (IAM ). Snímek obrazovky se stránkou skupiny prostředků zobrazující umístění položky nabídky Řízení přístupu (IAM).
Na stránce Řízení přístupu (IAM):
  1. Vyberte kartu Přiřazení rolí.
  2. V horní nabídce vyberte + Přidat a potom přidejte přiřazení role z výsledné rozevírací nabídky.
Snímek obrazovky znázorňující, jak přejít na kartu Přiřazení rolí a umístění tlačítka použitého k přidání přiřazení rolí do skupiny prostředků
Na stránce Přidat přiřazení role jsou uvedeny všechny role, které je možné přiřadit skupině prostředků.
  1. Pomocí vyhledávacího pole vyfiltrujte seznam na lépe spravovatelnou velikost. Tento příklad ukazuje, jak filtrovat role objektů blob služby Storage.
  2. Vyberte roli, kterou chcete přiřadit.
    Výběrem možnosti Další přejdete na další obrazovku.
Snímek obrazovky znázorňující, jak filtrovat a vybrat přiřazení rolí, která se mají přidat do skupiny prostředků
Další stránka Přidat přiřazení role umožňuje určit, k jakému uživateli se má role přiřadit.
  1. V části Přiřadit přístup vyberte Uživatele, skupinu nebo instanční objekt.
  2. Vyberte a vyberte členy v části Členové.
Otevře se dialogové okno na pravé straně webu Azure Portal.
Snímek obrazovky znázorňující přepínač pro výběr přiřazení role ke skupině Microsoft Entra a odkaz použitý k výběru skupiny pro přiřazení role
V dialogovém okně Vybrat členy :
  1. Textové pole Vybrat lze použít k filtrování seznamu uživatelů a skupin ve vašem předplatném. V případě potřeby zadejte několik prvních znaků místní vývojové skupiny Microsoft Entra, kterou jste pro aplikaci vytvořili.
  2. Vyberte místní skupinu Microsoft Entra pro vývoj přidruženou k vaší aplikaci.
Pokračujte výběrem možnosti Vybrat v dolní části dialogového okna.
Snímek obrazovky znázorňující, jak filtrovat a vybrat skupinu Microsoft Entra pro aplikaci v dialogovém okně Vybrat členy
Skupina Microsoft Entra se zobrazí jako vybraná na obrazovce Přidat přiřazení role.

Výběrem možnosti Zkontrolovat a přiřadit přejděte na poslední stránku a pak proces dokončete opětovnou kontrolou a přiřazením .
Snímek obrazovky zobrazující dokončenou stránku Přidat přiřazení role a umístění tlačítka Zkontrolovat a přiřadit použité k dokončení procesu

4. Nastavení proměnných místního vývojového prostředí

Objekt DefaultAzureCredential vyhledá informace instančního objektu v sadě proměnných prostředí za běhu. Vzhledem k tomu, že většina vývojářů pracuje na více aplikacích, doporučuje se použít balíček, jako je dotenv , pro přístup k prostředí ze .env souboru uloženého v adresáři aplikace během vývoje. Tím se vymenou proměnné prostředí používané k ověření aplikace v Azure tak, aby je mohly používat pouze tato aplikace.

Soubor .env se nikdy nezaškrtá do správy zdrojového kódu, protože obsahuje tajný klíč aplikace pro Azure. Standardní soubor .gitignore pro JavaScript automaticky vyloučí .env soubor ze vrácení se změnami.

Pokud chcete balíček použít dotenv , nejprve nainstalujte balíček do aplikace.

npm install dotenv

Potom vytvořte soubor v kořenovém .env adresáři aplikace. Nastavte hodnoty proměnných prostředí s hodnotami získanými z procesu registrace aplikace následujícím způsobem:

  • AZURE_CLIENT_ID → hodnota ID aplikace.
  • AZURE_TENANT_ID → hodnota ID tenanta.
  • AZURE_CLIENT_SECRET → heslo nebo přihlašovací údaje vygenerované pro aplikaci.
AZURE_CLIENT_ID=00000000-0000-0000-0000-000000000000
AZURE_TENANT_ID=11111111-1111-1111-1111-111111111111
AZURE_CLIENT_SECRET=abcdefghijklmnopqrstuvwxyz

Nakonec v spouštěcím kódu pro vaši aplikaci použijte knihovnu dotenv ke čtení proměnných prostředí ze .env souboru při spuštění.

import 'dotenv/config'

5. Implementace defaultAzureCredential ve vaší aplikaci

K ověřování klientských objektů sady Azure SDK v Azure by vaše aplikace měla používat DefaultAzureCredential třídu z @azure/identity balíčku. V tomto scénáři DefaultAzureCredential zjistí proměnné AZURE_CLIENT_IDAZURE_TENANT_IDprostředí a nastaví a AZURE_CLIENT_SECRET načtou tyto proměnné, aby získaly informace o instančním objektu aplikace pro připojení k Azure.

Začněte přidáním balíčku @azure/identity do aplikace.

npm install @azure/identity

V dalším kroku pro libovolný javascriptový kód, který ve vaší aplikaci vytvoří objekt klienta sady Azure SDK, budete chtít:

  1. Naimportujte třídu DefaultAzureCredential z @azure/identity modulu.
  2. Vytvoření objektu DefaultAzureCredential
  3. DefaultAzureCredential Předejte objekt konstruktoru klientského objektu sady Azure SDK.

Příklad je znázorněn v následujícím segmentu kódu.

// Azure authentication dependency
import { DefaultAzureCredential } from '@azure/identity';

// Azure resource management dependency
import { SubscriptionClient } from "@azure/arm-subscriptions";

// Acquire credential
const tokenCredential = new DefaultAzureCredential();

async function listSubscriptions() {
  try {

    // use credential to authenticate with Azure SDKs
    const client = new SubscriptionClient(tokenCredential);

    // get details of each subscription
    for await (const item of client.subscriptions.list()) {
      const subscriptionDetails = await client.subscriptions.get(
        item.subscriptionId
      );
      /* 
        Each item looks like:
      
        {
          id: '/subscriptions/123456',
          subscriptionId: '123456',
          displayName: 'YOUR-SUBSCRIPTION-NAME',
          state: 'Enabled',
          subscriptionPolicies: {
            locationPlacementId: 'Internal_2014-09-01',
            quotaId: 'Internal_2014-09-01',
            spendingLimit: 'Off'
          },
          authorizationSource: 'RoleBased'
        },
    */
      console.log(subscriptionDetails);
    }
  } catch (err) {
    console.error(JSON.stringify(err));
  }
}

listSubscriptions()
  .then(() => {
    console.log("done");
  })
  .catch((ex) => {
    console.log(ex);
  });

DefaultAzureCredential automaticky rozpozná mechanismus ověřování nakonfigurovaný pro aplikaci a získá potřebné tokeny pro ověření aplikace v Azure. Pokud aplikace používá více než jednoho klienta sady SDK, lze stejný objekt přihlašovacích údajů použít s každým objektem klienta sady SDK.