Uwierzytelnianie aplikacji hostowanych na platformie Azure do zasobów platformy Azure przy użyciu zestawu Azure SDK dla języka JavaScript

Jeśli aplikacja jest hostowana na platformie Azure (przy użyciu usługi takiej jak usługa aplikacja systemu Azure Service, Azure Virtual Machines lub Azure Container Instances), zalecanym podejściem do uwierzytelniania aplikacji w zasobach platformy Azure jest użycie tożsamości zarządzanej.

Tożsamość zarządzana zapewnia tożsamość aplikacji, aby aplikacja łączyła się z innymi zasobami platformy Azure bez konieczności używania wpisu tajnego (takiego jak parametry połączenia klucza). Wewnętrznie platforma Azure zna tożsamość aplikacji i zasoby, z którymi może się łączyć. Platforma Azure używa tych informacji do automatycznego uzyskiwania tokenów usługi Microsoft Entra dla aplikacji, aby umożliwić jej łączenie się z innymi zasobami platformy Azure, a wszystko to bez konieczności zarządzania (tworzenia lub obracania) wpisów tajnych uwierzytelniania.

Typy tożsamości zarządzanych

Istnieją dwa typy tożsamości zarządzanych:

  • Tożsamości zarządzane przypisane przez system — pojedynczy zasób platformy Azure
  • Tożsamości zarządzane przypisane przez użytkownika — wiele zasobów platformy Azure

W tym artykule opisano kroki włączania i używania tożsamości zarządzanej przypisanej przez system dla aplikacji. Jeśli musisz użyć tożsamości zarządzanej przypisanej przez użytkownika, zobacz artykuł Zarządzanie tożsamościami zarządzanymi przypisanymi przez użytkownika, aby zobaczyć, jak utworzyć tożsamość zarządzaną przypisaną przez użytkownika.

Tożsamości zarządzane przypisane przez system dla pojedynczego zasobu

Tożsamości zarządzane przypisane przez system są udostępniane i powiązane bezpośrednio z zasobem platformy Azure. Po włączeniu tożsamości zarządzanej w zasobie platformy Azure uzyskasz tożsamość zarządzaną przypisaną przez system dla tego zasobu. Jest on powiązany z cyklem życia zasobu platformy Azure. Po usunięciu zasobu platforma Azure automatycznie usunie tożsamość. Ponieważ wystarczy włączyć tożsamość zarządzaną dla zasobu platformy Azure hostowania kodu, jest to najprostszy typ tożsamości zarządzanej do użycia.

Tożsamości zarządzane przypisane przez użytkownika dla wielu zasobów

Koncepcyjnie ta tożsamość jest autonomicznym zasobem platformy Azure. Jest to najczęściej używane, gdy rozwiązanie ma wiele obciążeń uruchamianych w wielu zasobach platformy Azure, które muszą współdzielić tę samą tożsamość i te same uprawnienia. Jeśli na przykład rozwiązanie zawiera składniki uruchomione w wielu wystąpieniach usługi App Service i maszyn wirtualnych, a wszystkie te elementy potrzebują dostępu do tego samego zestawu zasobów platformy Azure, tworzenie i używanie tożsamości zarządzanej przypisanej przez użytkownika w tych zasobach miałoby sens.

1 — Przypisane przez system: Włącz w hostowanej aplikacji

Pierwszym krokiem jest włączenie tożsamości zarządzanej w zasobie platformy Azure hostowania aplikacji. Jeśli na przykład hostujesz aplikację Django przy użyciu usługi aplikacja systemu Azure Service, musisz włączyć tożsamość zarządzaną dla tej aplikacji internetowej usługi App Service. Jeśli używasz maszyny wirtualnej do hostowania aplikacji, możesz zezwolić maszynie wirtualnej na korzystanie z tożsamości zarządzanej.

Tożsamość zarządzaną można włączyć dla zasobu platformy Azure przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure.

Instrukcje Zrzut ekranu
Przejdź do zasobu, który hostuje kod aplikacji w witrynie Azure Portal.

Możesz na przykład wpisać nazwę zasobu w polu wyszukiwania w górnej części strony i przejść do niego, wybierając ją w oknie dialogowym.
Zrzut ekranu przedstawiający sposób używania górnego paska wyszukiwania w witrynie Azure Portal do lokalizowania i przechodzenia do zasobu na platformie Azure.
Na stronie zasobu wybierz element menu Tożsamość z menu po lewej stronie.

Wszystkie zasoby platformy Azure obsługujące tożsamość zarządzaną będą miały element menu Tożsamość , mimo że układ menu może się nieco różnić.
Zrzut ekranu przedstawiający lokalizację elementu menu Tożsamość w menu po lewej stronie dla zasobu platformy Azure.
Na stronie Tożsamość:
  1. Zmień suwak Stan na Włączone.
  2. Wybierz pozycję Zapisz.
Okno dialogowe potwierdzenia weryfikuje, czy chcesz włączyć tożsamość zarządzaną dla usługi. Odpowiedz tak , aby włączyć tożsamość zarządzaną dla zasobu platformy Azure.
Zrzut ekranu przedstawiający sposób włączania tożsamości zarządzanej dla zasobu platformy Azure na stronie Tożsamość zasobu.

2 — Przypisywanie ról do tożsamości zarządzanej

Następnie należy określić, jakich ról (uprawnień) potrzebuje twoja aplikacja, i przypisać tożsamość zarządzaną do tych ról na platformie Azure. Tożsamość zarządzana może mieć przypisane role w zakresie zasobu, grupy zasobów lub subskrypcji. W tym przykładzie pokazano, jak przypisywać role w zakresie grupy zasobów, ponieważ większość aplikacji grupuje wszystkie zasoby platformy Azure w jedną grupę zasobów.

Instrukcje Zrzut ekranu
Znajdź grupę zasobów dla aplikacji, wyszukując nazwę grupy zasobów przy użyciu pola wyszukiwania w górnej części witryny Azure Portal.

Przejdź do grupy zasobów, wybierając nazwę grupy zasobów pod nagłówkiem Grupy zasobów w oknie dialogowym.
Zrzut ekranu przedstawiający sposób używania górnego paska wyszukiwania w witrynie Azure Portal do lokalizowania i przechodzenia do grupy zasobów na platformie Azure.
Na stronie grupy zasobów wybierz pozycję Kontrola dostępu (Zarządzanie dostępem i tożsamościami) z menu po lewej stronie. Zrzut ekranu przedstawiający lokalizację elementu menu Kontrola dostępu (I A M) w menu po lewej stronie grupy zasobów platformy Azure.
Na stronie Kontrola dostępu (Zarządzanie dostępem i tożsamościami):
  1. Wybierz kartę Przypisania roli.
  2. Wybierz pozycję + Dodaj z górnego menu, a następnie pozycję Dodaj przypisanie roli z wyświetlonego menu rozwijanego.
Zrzut ekranu przedstawiający sposób przechodzenia do karty przypisania ról i lokalizacji przycisku używanego do dodawania przypisań ról do grupy zasobów.
Strona Dodawanie przypisania roli zawiera listę wszystkich ról, które można przypisać dla grupy zasobów.
  1. Użyj pola wyszukiwania, aby przefiltrować listę do bardziej możliwego do zarządzania rozmiaru. W tym przykładzie pokazano, jak filtrować role obiektów blob usługi Storage.
  2. Wybierz rolę, którą chcesz przypisać.
    Wybierz przycisk Dalej , aby przejść do następnego ekranu.
Zrzut ekranu przedstawiający sposób filtrowania i wybierania przypisań ról do dodania do grupy zasobów.
Następna strona Dodawanie przypisania roli umożliwia określenie, do którego użytkownika ma zostać przypisana rola.
  1. Wybierz pozycję Tożsamość zarządzana w obszarze Przypisz dostęp do.
  2. Wybierz pozycję + Wybierz członków w obszarze Członkowie
Zostanie otwarte okno dialogowe po prawej stronie witryny Azure Portal.
Zrzut ekranu przedstawiający sposób wybierania tożsamości zarządzanej jako typu użytkownika, który ma zostać przypisany do roli (uprawnienia) na stronie dodawania przypisań ról.
W oknie dialogowym Wybieranie tożsamości zarządzanych:
  1. Lista rozwijana Tożsamość zarządzana i Pole tekstowe Wybierz można użyć do filtrowania listy tożsamości zarządzanych w ramach subskrypcji. W tym przykładzie, wybierając pozycję App Service, wyświetlane są tylko tożsamości zarządzane skojarzone z usługą App Service.
  2. Wybierz tożsamość zarządzaną dla zasobu platformy Azure hostowania aplikacji.
Wybierz pozycję Wybierz w dolnej części okna dialogowego, aby kontynuować.
Zrzut ekranu przedstawiający sposób używania okna dialogowego wybierania tożsamości zarządzanych do filtrowania i wybierania tożsamości zarządzanej, do których ma zostać przypisana rola.
Tożsamość zarządzana jest wyświetlana jako wybrana na ekranie Dodawanie przypisania roli.

Wybierz pozycję Przejrzyj i przypisz , aby przejść do ostatniej strony, a następnie ponownie przejrzyj i przypisz, aby ukończyć proces.
Zrzut ekranu przedstawiający ekran dodawania ostatecznego przypisania roli, na którym użytkownik musi wybrać przycisk Przejrzyj i przypisz, aby sfinalizować przypisanie roli.

3 — Implementowanie wartości domyślnejAzureCredential w aplikacji

Klasa DefaultAzureCredential automatycznie wykryje, że tożsamość zarządzana jest używana i używa tożsamości zarządzanej do uwierzytelniania w innych zasobach platformy Azure. Zgodnie z opisem w artykule DefaultAzureCredential Omówienie uwierzytelniania zestawu Azure SDK dla języka JavaScript obsługuje wiele metod uwierzytelniania i określa metodę uwierzytelniania używaną w czasie wykonywania. W ten sposób aplikacja może używać różnych metod uwierzytelniania w różnych środowiskach bez implementowania kodu specyficznego dla środowiska.

Najpierw dodaj pakiet @azure/identity do aplikacji.

npm install @azure/identity

Następnie dla dowolnego kodu JavaScript, który tworzy obiekt klienta zestawu Azure SDK w aplikacji, chcesz:

  1. Zaimportuj klasę DefaultAzureCredential z modułu @azure/identity .
  2. Utwórz DefaultAzureCredential obiekt.
  3. Przekaż obiekt do konstruktora DefaultAzureCredential obiektu klienta zestawu Azure SDK.

Przykład jest pokazany w następującym segmencie kodu.

// connect-with-default-azure-credential.js
import { BlobServiceClient } from '@azure/storage-blob';
import { DefaultAzureCredential } from '@azure/identity';
import 'dotenv/config'

const accountName = process.env.AZURE_STORAGE_ACCOUNT_NAME;
if (!accountName) throw Error('Azure Storage accountName not found');

const blobServiceClient = new BlobServiceClient(
  `https://${accountName}.blob.core.windows.net`,
  new DefaultAzureCredential()
);

Gdy powyższy kod jest uruchamiany na lokalnej stacji roboczej podczas programowania lokalnego, metoda zestawu SDK, DefaultAzureCredential(), poszukaj zmiennych środowiskowych dla jednostki usługi aplikacji lub programu VS Code, interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell dla zestawu poświadczeń dewelopera, których można użyć do uwierzytelniania aplikacji do zasobów platformy Azure podczas programowania lokalnego. W ten sam kod może służyć do uwierzytelniania aplikacji w zasobach platformy Azure zarówno podczas programowania lokalnego, jak i podczas wdrażania na platformie Azure.