Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Zalecaną metodą uwierzytelniania aplikacji hostowanej na platformie Azure w innych zasobach platformy Azure jest użycie tożsamości zarządzanej. Takie podejście jest obsługiwane w przypadku większości usług platformy Azure, w tym aplikacji hostowanych w usługach Azure App Service, Azure Container Apps i Azure Virtual Machines. Dowiedz się więcej o różnych technikach uwierzytelniania i podejściach na stronie przeglądu uwierzytelniania . W sekcjach z wyprzedzeniem dowiesz się:
- Podstawowe pojęcia dotyczące tożsamości zarządzanej
- Jak utworzyć tożsamość zarządzaną przypisaną przez system dla aplikacji
- Jak przypisać role do tożsamości zarządzanej przypisanej przez system
- Jak uwierzytelniać się przy użyciu tożsamości zarządzanej przypisanej przez system z kodu aplikacji
Podstawowe pojęcia dotyczące tożsamości zarządzanej
Tożsamość zarządzana umożliwia aplikacji bezpieczne łączenie się z innymi zasobami platformy Azure bez używania kluczy tajnych lub innych wpisów tajnych aplikacji. Wewnętrznie platforma Azure śledzi tożsamość 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.
Istnieją dwa typy tożsamości zarządzanych, które należy wziąć pod uwagę podczas konfigurowania hostowanej aplikacji:
- Tożsamości zarządzane przypisane przez system są włączone bezpośrednio w zasobie platformy Azure i są powiązane z cyklem życia. Po usunięciu zasobu platforma Azure automatycznie usunie tożsamość. Tożsamości przypisane przez system zapewniają minimalistyczne podejście do korzystania z tożsamości zarządzanych.
- Tożsamości zarządzane przypisane przez użytkownika są tworzone jako autonomiczne zasoby platformy Azure i zapewniają większą elastyczność i możliwości. Są one idealne w przypadku rozwiązań obejmujących wiele zasobów platformy Azure, które muszą współdzielić tę samą tożsamość i uprawnienia. Jeśli na przykład wiele maszyn wirtualnych musi uzyskać dostęp do tego samego zestawu zasobów platformy Azure, tożsamość zarządzana przypisana przez użytkownika zapewnia możliwość ponownego obsługi i zoptymalizowane zarządzanie.
Wskazówka
Dowiedz się więcej na temat wybierania tożsamości zarządzanych przypisanych przez system i zarządzania nimi w artykule Zalecenia dotyczące najlepszych rozwiązań dotyczących tożsamości zarządzanej i zarządzania nimi.
W poniższych sekcjach opisano kroki włączania i używania przypisanej przez system tożsamości zarządzanej dla aplikacji hostowanej na platformie Azure. Jeśli chcesz użyć tożsamości zarządzanej przypisanej przez użytkownika, odwiedź artykuł Tożsamości zarządzane przypisane przez użytkownika , aby uzyskać więcej informacji.
Włączanie tożsamości zarządzanej przypisanej przez system w zasobie hostingu platformy Azure
Aby rozpocząć korzystanie z tożsamości zarządzanej przypisanej przez system z aplikacją, włącz tożsamość w zasobie platformy Azure hostująca aplikację, taką jak usługa Azure App Service, aplikacja kontenera platformy Azure lub maszyna wirtualna platformy Azure.
Tożsamość zarządzaną przypisaną przez system dla zasobu platformy Azure można włączyć przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure.
W witrynie Azure Portal przejdź do zasobu, który hostuje kod aplikacji, taki jak usługa Azure App Service lub wystąpienie aplikacji kontenera platformy Azure.
Na stronie Przegląd zasobu rozwiń węzeł Ustawienia i wybierz pozycję Tożsamość w obszarze nawigacji.
Na stronie Tożsamość przełącz suwak Stan na wł.
Wybierz pozycję Zapisz, aby zastosować zmiany.
Przypisywanie ról do tożsamości zarządzanej
Następnie określ, które role potrzebuje Twoja aplikacja, i przypisz te role do tożsamości zarządzanej. Role można przypisać do tożsamości zarządzanej w następujących zakresach:
- Zasób: przypisane role mają zastosowanie tylko do tego konkretnego zasobu.
- Grupa zasobów: przypisane role mają zastosowanie do wszystkich zasobów zawartych w grupie zasobów.
- Subskrypcja: przypisane role mają zastosowanie do wszystkich zasobów zawartych w subskrypcji.
W poniższym przykładzie pokazano, jak przypisywać role w zakresie grupy zasobów, ponieważ wiele aplikacji zarządza wszystkimi powiązanymi zasobami platformy Azure przy użyciu jednej grupy zasobów.
Przejdź do strony Przegląd grupy zasobów zawierającej aplikację z tożsamością zarządzaną przypisaną przez system.
Wybierz pozycję Kontrola dostępu (Zarządzanie dostępem i tożsamościami) w obszarze nawigacji po lewej stronie.
Na stronie Kontrola dostępu (zarządzanie dostępem i tożsamościami) wybierz pozycję + Dodaj w górnym menu, a następnie wybierz pozycję Dodaj przypisanie roli , aby przejść do strony Dodawanie przypisania roli .
Na stronie Dodawanie przypisania roli przedstawiono przepływ pracy z kartami, wieloetapowy w celu przypisania ról do tożsamości. Na początkowej karcie Rola użyj pola wyszukiwania u góry, aby zlokalizować rolę, którą chcesz przypisać do tożsamości.
Wybierz rolę z wyników, a następnie wybierz przycisk Dalej , aby przejść do karty Członkowie .
Dla opcji Przypisz dostęp do wybierz pozycję Tożsamość zarządzana.
Dla opcji Członkowie wybierz pozycję + Wybierz członków , aby otworzyć panel Wybieranie tożsamości zarządzanych .
Na panelu Wybieranie tożsamości zarządzanych użyj list rozwijanych Subskrypcja i Tożsamość zarządzana , aby filtrować wyniki wyszukiwania tożsamości. Użyj pola wyszukiwania Wybierz , aby zlokalizować tożsamość systemową włączoną dla zasobu platformy Azure hostowania aplikacji.
Wybierz tożsamość i wybierz pozycję Wybierz w dolnej części panelu, aby kontynuować.
Wybierz pozycję Przejrzyj i przypisz w dolnej części strony.
Na ostatniej karcie Przeglądanie i przypisywanie wybierz pozycję Przejrzyj i przypisz , aby ukończyć przepływ pracy.
Uwierzytelnianie w usługach platformy Azure z aplikacji
Biblioteka tożsamości platformy Azure udostępnia różne poświadczenia — implementacjeTokenCredential dostosowane do obsługi różnych scenariuszy i przepływów uwierzytelniania firmy Microsoft Entra. Ponieważ tożsamość zarządzana jest niedostępna w przypadku uruchamiania lokalnego, kroki z wyprzedzeniem pokazują, które poświadczenia mają być używane w którym scenariuszu:
-
Lokalne środowisko deweloperskie: podczas tworzenia lokalnego użyj klasy o nazwie DefaultAzureCredential dla wstępnie skonfigurowanego łańcucha poświadczeń.
DefaultAzureCredentialodnajduje poświadczenia użytkownika z lokalnego narzędzia lub środowiska IDE, takiego jak interfejs wiersza polecenia platformy Azure lub program Visual Studio Code. Zapewnia również elastyczność i wygodę ponawiania prób, czas oczekiwania na odpowiedzi i obsługę wielu opcji uwierzytelniania. Aby dowiedzieć się więcej, odwiedź artykuł Uwierzytelnianie w usługach platformy Azure podczas lokalnego programowania . -
Aplikacje hostowane na platformie Azure: gdy aplikacja jest uruchomiona na platformie Azure, użyj polecenia
ManagedIdentityCredential, aby bezpiecznie odnaleźć tożsamość zarządzaną skonfigurowaną dla aplikacji. Określenie tego dokładnego typu poświadczeń uniemożliwia nieoczekiwane pobieranie innych dostępnych poświadczeń.
Implementowanie kodu
W projekcie JavaScript dodaj pakiet @azure/identity . W wybranym terminalu przejdź do katalogu projektu aplikacji i uruchom następujące polecenia:
npm install @azure/identity
Dostęp do usług platformy Azure jest uzyskiwany przy użyciu wyspecjalizowanych klas klientów z różnych bibliotek klienckich zestawu Azure SDK. W index.jsprogramie wykonaj następujące kroki, aby skonfigurować uwierzytelnianie oparte na tokenach:
Zaimportuj
@azure/identitypakiet.Przekaż odpowiednie
TokenCredentialwystąpienie do klienta:- Użyj
DefaultAzureCredentialpolecenia , gdy aplikacja jest uruchomiona lokalnie - Użyj
ManagedIdentityCredentialpolecenia , gdy aplikacja jest uruchomiona na platformie Azure.
import { BlobServiceClient } from '@azure/storage-blob'; import { ManagedIdentityCredential, DefaultAzureCredential } from '@azure/identity'; 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") { return new BlobServiceClient(url, new ManagedIdentityCredential()); } else { return new BlobServiceClient(url, new DefaultAzureCredential()); } } async function main() { try { const blobServiceClient = createBlobServiceClient(); const containerClient = blobServiceClient.getContainerClient(process.env.AZURE_STORAGE_CONTAINER_NAME); 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); });- Użyj
Implementowanie kodu
W projekcie JavaScript dodaj pakiet @azure/identity . W wybranym terminalu przejdź do katalogu projektu aplikacji i uruchom następujące polecenia:
npm install @azure/identity @types/node
Dostęp do usług platformy Azure jest uzyskiwany przy użyciu wyspecjalizowanych klas klientów z różnych bibliotek klienckich zestawu Azure SDK. W index.jsprogramie wykonaj następujące kroki, aby skonfigurować uwierzytelnianie oparte na tokenach:
Zaimportuj
@azure/identitypakiet.Przekaż odpowiednie
TokenCredentialwystąpienie do klienta:- Użyj
DefaultAzureCredentialpolecenia , gdy aplikacja jest uruchomiona lokalnie - Użyj
ManagedIdentityCredentialpolecenia , gdy aplikacja jest uruchomiona na platformie Azure.
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") { return new BlobServiceClient(url, new ManagedIdentityCredential()); } 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); });- Użyj
Powyższy kod działa inaczej w zależności od środowiska, w którym jest uruchomiony:
- Na lokalnej stacji roboczej programistycznej
DefaultAzureCredentialw zmiennych środowiskowych dla jednostki usługi aplikacji lub w lokalnie zainstalowanych narzędziach deweloperskich, takich jak Visual Studio Code, dla zestawu poświadczeń dewelopera. - Po wdrożeniu na platformie Azure odnajduje konfiguracje tożsamości zarządzanej w
ManagedIdentityCredentialcelu automatycznego uwierzytelniania w innych usługach.