Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule pokazano, jak utworzyć tożsamość zarządzaną dla aplikacji usługi Azure App Service i usługi Azure Functions oraz jak używać jej do uzyskiwania dostępu do innych zasobów.
Tożsamość zarządzana z identyfikatora Entra firmy Microsoft umożliwia aplikacji łatwy dostęp do innych zasobów chronionych przez firmę Microsoft, takich jak Azure Key Vault. Platforma Azure zarządza identyfikacją, więc nie trzeba aprowizować ani wymieniać żadnych sekretów. Aby uzyskać więcej informacji na temat tożsamości zarządzanych w usłudze Microsoft Entra ID, zobacz Tożsamości zarządzane dla zasobów platformy Azure.
Do aplikacji można przyznać dwa typy tożsamości:
- Tożsamość przypisana przez system jest powiązana z aplikacją i jest usuwana, jeśli aplikacja zostanie usunięta. Aplikacja może mieć tylko jedną tożsamość przypisaną przez system.
- Tożsamość przypisana przez użytkownika to autonomiczny zasób platformy Azure, który można przypisać do aplikacji. Aplikacja może mieć wiele tożsamości przypisanych przez użytkownika. Jedną tożsamość przypisaną przez użytkownika można przypisać do wielu zasobów platformy Azure, takich jak dwie aplikacje usługi App Service.
Konfiguracja tożsamości zarządzanej jest specyficzna dla miejsca. Aby skonfigurować tożsamość zarządzaną dla slotu wdrożeniowego w portalu, najpierw przejdź do tego slotu. Aby znaleźć tożsamość zarządzaną dla swojej aplikacji internetowej lub miejsca wdrożenia w dzierżawie Microsoft Entra z portalu Azure, wyszukaj ją bezpośrednio na stronie Przegląd swojej dzierżawy.
Uwaga
Tożsamości zarządzane nie są dostępne dla aplikacji wdrożonych w Azure Arc.
Ponieważ tożsamości zarządzane nie obsługują scenariuszy obejmujących wiele katalogów, nie zachowują się zgodnie z oczekiwaniami, jeśli aplikacja jest migrowana między subskrypcjami lub dzierżawami. Aby ponownie utworzyć tożsamości zarządzane po takim przeniesieniu, zobacz Czy tożsamości zarządzane zostaną utworzone automatycznie, jeśli przeniesiem subskrypcję do innego katalogu? Zasoby podrzędne muszą również mieć zaktualizowane zasady dostępu, aby korzystać z nowej tożsamości.
Wymagania wstępne
Aby wykonać kroki opisane w tym artykule, musisz mieć minimalny zestaw uprawnień dla zasobów platformy Azure. Określone uprawnienia, których potrzebujesz, różnią się w zależności od scenariusza. Poniższa tabela zawiera podsumowanie najbardziej typowych scenariuszy:
Scenariusz | Wymagane uprawnienie | Przykładowe role wbudowane |
---|---|---|
Tworzenie tożsamości przypisanej przez system |
Microsoft.Web/sites/write nad aplikacją lub Microsoft.Web/sites/slots/write nad miejscem |
Współautor witryny sieci Web |
Tworzenie tożsamości przypisanej przez użytkownika |
Microsoft.ManagedIdentity/userAssignedIdentities/write za pośrednictwem grupy zasobów, w której ma zostać utworzona tożsamość |
Współtwórca z zarządzaną tożsamością |
Przypisywanie tożsamości przypisanej przez użytkownika do aplikacji |
Microsoft.Web/sites/write przez aplikację, Microsoft.Web/sites/slots/write przez miejsce lub Microsoft.ManagedIdentity/userAssignedIdentities/*/assign/action nad tożsamością |
Współtwórca witryny internetowej i Operator Tożsamości Zarządzanej |
Tworzenie przydziałów ról platformy Azure |
Microsoft.Authorization/roleAssignments/write nad docelowym zakresem zasobów |
Administrator kontroli dostępu opartej na rolach lub administrator dostępu użytkowników |
Dodawanie tożsamości przypisanej przez system
Aby włączyć tożsamość zarządzaną przypisaną przez system, wykonaj poniższe instrukcje.
W witrynie Azure Portal przejdź do strony aplikacji.
W menu po lewej stronie wybierz Ustawienia>Tożsamość.
Na karcie Przypisane przez system przełącz Stan na Włącz. Następnie wybierz opcję Zapisz.
Dodawanie tożsamości przypisanej przez użytkownika
Aby utworzyć aplikację z tożsamością przypisaną przez użytkownika, utwórz tożsamość, a następnie dodaj jej identyfikator zasobu do konfiguracji aplikacji.
Utwórz zasób tożsamości zarządzanej przypisanej użytkownikowi zgodnie z tymi instrukcjami.
W menu po lewej stronie strony aplikacji wybierz Ustawienia>Tożsamość.
Wybierz pozycję Przypisany użytkownik, a następnie wybierz pozycję Dodaj.
Wyszukaj utworzoną wcześniej tożsamość, wybierz ją, a następnie wybierz pozycję Dodaj.
Po wykonaniu tych kroków aplikacja zostanie ponownie uruchomiona.
Konfigurowanie zasobu docelowego
Musisz skonfigurować zasób docelowy, aby zezwolić na dostęp z Twojej aplikacji. W przypadku większości usług platformy Azure należy skonfigurować zasób docelowy, tworząc przypisanie roli.
Niektóre usługi używają mechanizmów innych niż kontrola dostępu oparta na rolach platformy Azure. Aby dowiedzieć się, jak skonfigurować dostęp przy użyciu tożsamości, zapoznaj się z dokumentacją dla każdego zasobu docelowego. Aby dowiedzieć się więcej o zasobach obsługujących tokeny firmy Microsoft Entra, zobacz Usługi platformy Azure, które obsługują uwierzytelnianie Firmy Microsoft Entra.
Jeśli na przykład zażądasz tokenu dostępu do wpisu tajnego w usłudze Azure Key Vault, musisz również utworzyć przypisanie roli, które umożliwia tożsamości zarządzanej pracę z wpisami tajnymi w magazynie docelowym. W przeciwnym razie usługa Key Vault odrzuca wywołania, nawet jeśli używasz prawidłowego tokenu. To samo dotyczy usługi Azure SQL Database i innych usług.
Ważne
Usługi backendu dla zarządzanych tożsamości utrzymują cache dla adresu URI zasobu przez około 24 godziny. Wprowadzenie zmian w członkostwie grupy lub roli tożsamości zarządzanej może zająć kilka godzin, zanim zaczną obowiązywać. Obecnie nie można wymusić odświeżenia tokenu tożsamości zarządzanej przed jego wygaśnięciem. Jeśli zmienisz grupę lub członkostwo w roli tożsamości zarządzanej w celu dodania lub usunięcia uprawnień, może być konieczne odczekanie kilku godzin, aby zasób platformy Azure korzystający z tej tożsamości uzyskał prawidłowy dostęp.
Aby uzyskać alternatywy dla grup lub członkostwa w rolach, zobacz Ograniczenie używania tożsamości zarządzanych do autoryzacji.
Nawiązywanie połączenia z usługami platformy Azure w kodzie aplikacji
Dzięki tożsamości zarządzanej aplikacja może uzyskiwać tokeny dla zasobów platformy Azure, które pomaga chronić identyfikator Entra firmy Microsoft, takich jak azure SQL Database, Azure Key Vault i Azure Storage. Te tokeny reprezentują aplikację, która uzyskuje dostęp do zasobu, a nie żadnego konkretnego użytkownika aplikacji.
Usługa App Service i usługa Azure Functions udostępniają wewnętrznie dostępny punkt końcowy REST na potrzeby pobierania tokenów. Dostęp do punktu końcowego REST można uzyskać z poziomu aplikacji przy użyciu standardowego żądania HTTP GET
. Żądanie można zaimplementować za pomocą ogólnego klienta HTTP w każdym języku.
W przypadku platform .NET, JavaScript, Java i Python biblioteka klienta tożsamości platformy Azure zapewnia abstrakcję dla tego punktu końcowego REST i upraszcza środowisko programistyczne. Nawiązywanie połączenia z innymi usługami platformy Azure jest tak proste, jak dodawanie obiektu poświadczeń do klienta specyficznego dla usługi.
Nieprzetworzone żądanie HTTP GET
używa dwóch podanych zmiennych środowiskowych i wygląda jak w poniższym przykładzie:
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>
Przykładowa odpowiedź może wyglądać następująco:
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"
}
Ta odpowiedź jest taka sama jak odpowiedź na żądanie tokenu dostępu serwisu-do-serwisu dla usługi Microsoft Entra. Aby uzyskać dostęp do usługi Key Vault, dodaj wartość access_token
do połączenia klienta z Key Vault.
Aby uzyskać więcej informacji na temat punktu końcowego REST, zobacz dokumentację punktu końcowego REST w dalszej części tego artykułu.
Usuwanie tożsamości
Po usunięciu tożsamości przypisanej przez system zostanie ona usunięta z identyfikatora Entra firmy Microsoft. Tożsamości przypisane przez system są również automatycznie usuwane z identyfikatora Entra firmy Microsoft po usunięciu samego zasobu aplikacji.
W menu po lewej stronie strony aplikacji wybierz Ustawienia>Tożsamość.
Wykonaj kroki na podstawie typu tożsamości:
- W przypadku tożsamości przypisanej przez system: na karcie Przypisane przez system przełącz pozycję Stan na Wyłączone. Następnie wybierz opcję Zapisz.
- W przypadku tożsamości przypisanej przez użytkownika: wybierz kartę Użytkownik, zaznacz pole wyboru tożsamości, a następnie wybierz pozycję Usuń. Wybierz Tak, aby potwierdzić.
Uwaga
Można również ustawić ustawienie aplikacji, które wyłącza tylko lokalną usługę tokenu: WEBSITE_DISABLE_MSI
. Jednak to pozostawia tożsamość nienaruszoną. Narzędzia nadal pokazują, że tożsamość zarządzana jest włączona lub aktywna. W związku z tym nie zalecamy używania tego ustawienia.
Referencja punktu końcowego REST
Aplikacja z tożsamością zarządzaną udostępnia ten punkt końcowy, definiując dwie zmienne środowiskowe:
-
IDENTITY_ENDPOINT
: adres URL lokalnej usługi tokenu. -
IDENTITY_HEADER
: nagłówek, który może pomóc w ograniczeniu ataków fałszerskich żądań po stronie serwera (SSRF). Platforma zmienia wartość.
Zmienna IDENTITY_ENDPOINT
to lokalny adres URL, z którego aplikacja może żądać tokenów. Aby uzyskać token dla zasobu, utwórz żądanie HTTP GET
do tego punktu końcowego. Uwzględnij następujące parametry:
Nazwa parametru W Opis resource
Zapytanie Identyfikator URI zasobu Microsoft Entra, dla którego należy uzyskać token. Ten zasób może być jedną z usług Azure obsługujących uwierzytelnianie Microsoft Entra lub dowolnym innym zasobem URI. api-version
Zapytanie Wersja API tokenu, która ma być używana. Użyj 2019-08-01
.X-IDENTITY-HEADER
Nagłówek Wartość zmiennej środowiskowej IDENTITY_HEADER
. Ten nagłówek służy do łagodzenia ataków SSRF.client_id
Zapytanie (Opcjonalnie) Identyfikator klienta tożsamości przypisanej przez użytkownika, który ma być użyty. Nie można go użyć na żądanie, które zawiera principal_id
,mi_res_id
lubobject_id
. Jeśli wszystkie parametry identyfikatora (client_id
,principal_id
,object_id
imi_res_id
) zostaną pominięte, zostanie użyta tożsamość przypisana przez system.principal_id
Zapytanie (Opcjonalnie) Główny identyfikator tożsamości przypisanej użytkownikowi do użycia. Parametr object_id
jest aliasem, którego można użyć zamiast tego. Nie można go użyć na żądanie, które zawieraclient_id
,mi_res_id
lubobject_id
. Jeśli wszystkie parametry identyfikatora (client_id
,principal_id
,object_id
imi_res_id
) zostaną pominięte, zostanie użyta tożsamość przypisana przez system.mi_res_id
Zapytanie (Opcjonalnie) Identyfikator zasobu Azure dla tożsamości przypisanej przez użytkownika, która ma być używana. Nie można go użyć na żądanie, które zawiera principal_id
,client_id
lubobject_id
. Jeśli wszystkie parametry identyfikatora (client_id
,principal_id
,object_id
imi_res_id
) zostaną pominięte, zostanie użyta tożsamość przypisana przez system.
Ważne
Jeśli próbujesz uzyskać tokeny dla tożsamości przypisanych przez użytkownika, dołącz jedną z opcjonalnych właściwości. W przeciwnym razie usługa tokenu próbuje uzyskać token dla tożsamości przypisanej przez system, która może istnieć lub nie.
Powiązana zawartość
Rozważ następujące przewodniki:
- Połączenie z bazą danych SQL z usługi .NET App Service bez sekretów przy użyciu tożsamości zarządzanej
- Uzyskiwanie dostępu do usług platformy Azure z poziomu aplikacji internetowej platformy .NET
- Uzyskiwanie dostępu do programu Microsoft Graph z zabezpieczonej aplikacji .NET jako aplikacji
- Zabezpieczanie połączenia usługi Cognitive Service z usługi App Service platformy .NET przy użyciu usługi Key Vault