Jak używać tożsamości zarządzanych dla usług App Service i Azure Functions
Uwaga
Od 1 czerwca 2024 r. wszystkie nowo utworzone aplikacje usługi App Service będą miały możliwość wygenerowania unikatowej domyślnej nazwy hosta przy użyciu konwencji <app-name>-<random-hash>.<region>.azurewebsites.net
nazewnictwa . Istniejące nazwy aplikacji pozostaną niezmienione.
Przykład: myapp-ds27dh7271aah175.westus-01.azurewebsites.net
Aby uzyskać więcej informacji, zapoznaj się z unikatową domyślną nazwą hosta zasobu usługi App Service.
W tym artykule pokazano, jak utworzyć tożsamość zarządzaną dla aplikacji usługi App Service i usługi Azure Functions oraz jak używać jej do uzyskiwania dostępu do innych zasobów.
Ważne
Ponieważ tożsamości zarządzane nie obsługują scenariuszy obejmujących wiele katalogów, nie będą zachowywać się zgodnie z oczekiwaniami, jeśli aplikacja zostanie zmigrowana 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.
Uwaga
Tożsamości zarządzane nie są dostępne dla aplikacji wdrożonych w usłudze Azure Arc.
Tożsamość zarządzana firmy Microsoft Entra ID umożliwia aplikacji łatwy dostęp do innych chronionych zasobów firmy Microsoft, takich jak Azure Key Vault. Tożsamość jest zarządzana przez platformę Azure i nie wymaga aprowizacji ani rotacji żadnych wpisów tajnych. 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.
Aplikacja może mieć korzystać z dwóch typów 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, a jedna tożsamość przypisana przez użytkownika może być przypisana 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 miejsca wdrożenia w portalu, przejdź najpierw do miejsca. Aby znaleźć tożsamość zarządzaną aplikacji internetowej lub miejsca wdrożenia w dzierżawie usługi Microsoft Entra w witrynie Azure Portal, wyszukaj ją bezpośrednio na stronie Przegląd dzierżawy. Zazwyczaj nazwa miejsca jest podobna do <app-name>/slots/<slot-name>
.
W tym filmie wideo pokazano, jak używać tożsamości zarządzanych dla usługi App Service.
Kroki opisane w filmie wideo zostały również opisane w poniższych sekcjach.
Dodawanie tożsamości przypisanej przez system
- Witryna Azure Portal
- Interfejs wiersza polecenia platformy Azure
- Azure PowerShell
- Szablon usługi ARM
Uzyskaj dostęp do ustawień aplikacji w witrynie Azure Portal w grupie Ustawienia w okienku nawigacji po lewej stronie.
Wybierz Tożsamość.
Na karcie Przypisane przez system przełącz pozycję Stan na Włączone. Kliknij przycisk Zapisz.
Dodawanie tożsamości przypisanej przez użytkownika
Utworzenie aplikacji z tożsamością przypisaną przez użytkownika wymaga utworzenia tożsamości, a następnie dodania jej identyfikatora zasobu do konfiguracji aplikacji.
- Witryna Azure Portal
- Interfejs wiersza polecenia platformy Azure
- Azure PowerShell
- Szablon usługi ARM
Najpierw należy utworzyć zasób tożsamości przypisanej przez użytkownika.
Utwórz zasób tożsamości zarządzanej przypisanej przez użytkownika zgodnie z tymi instrukcjami.
Na lewej stronie nawigacji aplikacji przewiń w dół do grupy Ustawienia .
Wybierz Tożsamość.
Wybierz pozycję Dodaj przypisane przez> użytkownika.
Wyszukaj utworzoną wcześniej tożsamość, wybierz ją i wybierz pozycję Dodaj.
Po wybraniu pozycji Dodaj aplikacja zostanie ponownie uruchomiona.
Konfigurowanie zasobu docelowego
Może być konieczne skonfigurowanie zasobu docelowego, aby zezwolić na dostęp z aplikacji lub funkcji. Jeśli na przykład zażądasz tokenu dostępu do usługi Key Vault, musisz również dodać zasady dostępu, które obejmują tożsamość zarządzaną aplikacji lub funkcji. W przeciwnym razie wywołania usługi Key Vault zostaną odrzucone, nawet jeśli używasz prawidłowego tokenu. To samo dotyczy usługi Azure SQL Database. 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.
Ważne
Usługi zaplecza dla tożsamości zarządzanych utrzymują pamięć podręczną na identyfikator URI zasobu przez około 24 godziny. Oznacza to, że wprowadzenie zmian w grupie lub członkostwie roli tożsamości zarządzanej może potrwać kilka godzin. 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 odczekenie kilku godzin na zasób platformy Azure przy użyciu tożsamości w celu uzyskania poprawnego dostępu. 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 chronionych przez 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, który 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 dostarczonych 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 do usługi firmy Microsoft. Aby uzyskać dostęp do usługi Key Vault, należy dodać wartość access_token
do połączenia klienta z magazynem.
Aby uzyskać więcej informacji na temat punktu końcowego REST, zobacz Dokumentacja punktu końcowego REST.
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.
- Witryna Azure Portal
- Interfejs wiersza polecenia platformy Azure
- Azure PowerShell
- Szablon usługi ARM
W lewym obszarze nawigacyjnym strony aplikacji przewiń w dół do grupy Ustawienia .
Wybierz Tożsamość. Następnie wykonaj kroki na podstawie typu tożsamości:
- Tożsamość przypisana przez system: na karcie Przypisane przez system przełącz pozycję Stan na Wyłączone. Kliknij przycisk Zapisz.
- Tożsamość przypisana przez użytkownika: wybierz kartę Przypisane przez użytkownika, zaznacz pole wyboru tożsamości i wybierz pozycję Usuń. Wybierz Tak, aby potwierdzić.
Uwaga
Istnieje również ustawienie aplikacji, które można ustawić, WEBSITE_DISABLE_MSI, co powoduje wyłączenie lokalnej usługi tokenu. Jednak pozostawia tożsamość na miejscu, a narzędzia nadal będą pokazywać tożsamość zarządzaną jako "włączone" lub "włączone". W związku z tym użycie tego ustawienia nie jest zalecane.
Dokumentacja 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 służący do eliminowania ataków fałszerskich żądań po stronie serwera (SSRF). Wartość jest obracana przez platformę.
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, w tym następujące parametry:
Nazwa parametru W opis zasób Query Identyfikator URI zasobu Microsoft Entra zasobu, dla którego należy uzyskać token. Może to być jedna z usług platformy Azure, które obsługują uwierzytelnianie Firmy Microsoft Entra lub dowolny inny identyfikator URI zasobu. api-version Query Wersja interfejsu API tokenu do użycia. Użyj witryny 2019-08-01
.X-IDENTITY-HEADER Nagłówek Wartość zmiennej środowiskowej IDENTITY_HEADER. Ten nagłówek służy do eliminowania ataków fałszerskich żądań po stronie serwera (SSRF). client_id Query (Opcjonalnie) Identyfikator klienta tożsamości przypisanej przez użytkownika do użycia. Nie można użyć w żądaniu zawierającym principal_id
element ,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 Query (Opcjonalnie) Identyfikator podmiotu zabezpieczeń tożsamości przypisanej przez użytkownika do użycia. object_id
jest aliasem, który może zamiast tego być używany. Nie można używać w żądaniu zawierającym client_id, mi_res_id lub object_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 Query (Opcjonalnie) Identyfikator zasobu platformy Azure tożsamości przypisanej przez użytkownika do użycia. Nie można użyć w żądaniu zawierającym principal_id
element ,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, musisz uwzględnić jedną z opcjonalnych właściwości. W przeciwnym razie usługa tokenu podejmie próbę uzyskania tokenu dla tożsamości przypisanej przez system, co może lub nie istnieje.
Następne kroki
- Samouczek: nawiązywanie połączenia z usługą SQL Database z usługi App Service bez wpisów tajnych przy użyciu tożsamości zarządzanej
- Bezpieczne uzyskiwanie dostępu do usługi Azure Storage przy użyciu tożsamości zarządzanej
- Bezpieczne wywoływanie programu Microsoft Graph przy użyciu tożsamości zarządzanej
- Bezpieczne łączenie z usługami przy użyciu wpisów tajnych usługi Key Vault