Tożsamości zarządzane w usłudze Azure Container Apps

Tożsamość zarządzana z identyfikatora Entra firmy Microsoft umożliwia aplikacji kontenera dostęp do innych chronionych zasobów firmy Microsoft. 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.

Aplikację kontenera można przyznać dwóm typom tożsamości:

  • Tożsamość przypisana przez system jest powiązana z aplikacją kontenera i jest usuwana po usunięciu aplikacji kontenera. 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 kontenera i innych zasobów. Aplikacja kontenera może mieć wiele tożsamości przypisanych przez użytkownika. Tożsamość istnieje do momentu ich usunięcia.

Dlaczego warto używać tożsamości zarządzanej?

Tożsamość zarządzana w uruchomionej aplikacji kontenera umożliwia uwierzytelnianie w dowolnej usłudze obsługującej uwierzytelnianie firmy Microsoft Entra.

Za pomocą tożsamości zarządzanych:

Typowe przypadki użycia

Tożsamości przypisane przez system są najlepsze w przypadku obciążeń, które:

  • znajdują się w jednym zasobie
  • potrzebują niezależnych tożsamości

Tożsamości przypisane przez użytkownika są idealne dla obciążeń, które:

  • uruchamianie na wielu zasobach i może współużytkować jedną tożsamość
  • potrzebna wstępna autoryzacja do bezpiecznego zasobu

Ograniczenia

Używanie tożsamości zarządzanych w regułach skalowania nie jest obsługiwane. Nadal musisz uwzględnić parametry połączenia lub klucz w secretRef regule skalowania.

Kontenery inicjowania nie mogą uzyskiwać dostępu do tożsamości zarządzanych.

Konfigurowanie tożsamości zarządzanych

Tożsamości zarządzane można skonfigurować za pomocą:

  • Azure Portal
  • interfejsu wiersza polecenia platformy Azure,
  • szablon usługi Azure Resource Manager (ARM)

Gdy tożsamość zarządzana zostanie dodana, usunięta lub zmodyfikowana w uruchomionej aplikacji kontenera, aplikacja nie zostanie automatycznie uruchomiona ponownie i nie zostanie utworzona nowa poprawka.

Uwaga

Podczas dodawania tożsamości zarządzanej do aplikacji kontenera wdrożonej przed 11 kwietnia 2022 r. należy utworzyć nową poprawkę.

Dodawanie tożsamości przypisanej przez system

  1. W lewym obszarze nawigacji strony aplikacji kontenera przewiń w dół do grupy Ustawienia.

  2. Wybierz pozycję Tożsamość.

  3. Na karcie Przypisane przez system przełącz pozycję Stan na Włączone. Wybierz pozycję Zapisz.

Screenshot of system-assigned identities.

Dodawanie tożsamości przypisanej przez użytkownika

Skonfigurowanie aplikacji kontenera przy użyciu tożsamości przypisanej przez użytkownika wymaga, aby najpierw utworzyć tożsamość, a następnie dodać jej identyfikator zasobu do konfiguracji aplikacji kontenera. Tożsamości przypisane przez użytkownika można tworzyć za pośrednictwem witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure. Aby uzyskać informacje na temat tworzenia tożsamości przypisanych przez użytkownika i zarządzania nimi, zobacz Zarządzanie tożsamościami zarządzanymi przypisanymi przez użytkownika.

Najpierw należy utworzyć zasób tożsamości przypisanej przez użytkownika.

  1. Utwórz zasób tożsamości zarządzanej przypisanej przez użytkownika zgodnie z instrukcjami opisanymi w temacie Zarządzanie tożsamościami zarządzanymi przypisanymi przez użytkownika.

  2. Na lewej stronie nawigacji aplikacji kontenera przewiń w dół do grupy Ustawienia.

  3. Wybierz pozycję Tożsamość.

  4. Na karcie Przypisane przez użytkownika wybierz pozycję Dodaj.

  5. Wyszukaj utworzoną wcześniej tożsamość i wybierz ją. Wybierz Dodaj.

Screenshot of user-assigned identities.

Konfigurowanie zasobu docelowego

W przypadku niektórych zasobów należy skonfigurować przypisania ról dla tożsamości zarządzanej aplikacji w celu udzielenia dostępu. W przeciwnym razie wywołania z aplikacji do usług, takich jak Azure Key Vault i Azure SQL Database, zostaną odrzucone, nawet jeśli używasz prawidłowego tokenu dla tej tożsamości. Aby dowiedzieć się więcej na temat kontroli dostępu opartej na rolach (RBAC) platformy Azure, zobacz Co to jest kontrola dostępu oparta na rolach?. 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. Jeśli zaktualizujesz zasady dostępu określonego zasobu docelowego i natychmiast pobierzesz token dla tego zasobu, możesz nadal uzyskać buforowany token z nieaktualnymi uprawnieniami do momentu wygaśnięcia tego tokenu. Obecnie nie ma możliwości wymuszenia odświeżania tokenu.

Połączenie do usług platformy Azure w kodzie aplikacji

Dzięki tożsamościom zarządzanym aplikacja może uzyskiwać tokeny umożliwiające dostęp do zasobów platformy Azure korzystających z identyfikatora 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 Container Apps udostępnia wewnętrznie dostępny punkt końcowy REST do 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. Połączenie do innych usług platformy Azure jest tak proste, jak dodanie obiektu poświadczeń do klienta specyficznego dla usługi.

Uwaga

W przypadku korzystania z biblioteki klienta tożsamości platformy Azure należy określić identyfikator klienta tożsamości zarządzanej przypisanej przez użytkownika.

Uwaga

Podczas nawiązywania połączenia ze źródłami danych usługi Azure SQL przy użyciu programu Entity Framework Core rozważ użycie elementu Microsoft.Data.SqlClient, który zapewnia specjalne parametry połączenia na potrzeby łączności tożsamości zarządzanej.

W przypadku aplikacji platformy .NET najprostszym sposobem pracy z tożsamością zarządzaną jest użycie biblioteki klienta tożsamości platformy Azure dla platformy .NET. Aby uzyskać informacje, zobacz odpowiednie nagłówki dokumentacji biblioteki klienta:

W połączonych przykładach użyto polecenia DefaultAzureCredential. Jest to przydatne w większości scenariuszy, ponieważ ten sam wzorzec działa na platformie Azure (z tożsamościami zarządzanymi) i na komputerze lokalnym (bez tożsamości zarządzanych).

Wyświetlanie tożsamości zarządzanych

Tożsamości zarządzane przypisane przez system i przypisane przez użytkownika można wyświetlić przy użyciu następującego polecenia interfejsu wiersza polecenia platformy Azure. Dane wyjściowe przedstawiają typ tożsamości zarządzanej, identyfikatory dzierżawy i identyfikatory podmiotów zabezpieczeń wszystkich tożsamości zarządzanych przypisanych do aplikacji kontenera.

az containerapp identity show --name <APP_NAME> --resource-group <GROUP_NAME>

Usuwanie tożsamości zarządzanej

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 kontenera. Usunięcie tożsamości zarządzanych przypisanych przez użytkownika z aplikacji kontenera nie powoduje usunięcia ich z identyfikatora Entra firmy Microsoft.

  1. W lewym obszarze nawigacji strony aplikacji przewiń w dół do grupy Ustawienia.

  2. Wybierz pozycję 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. Wybierz pozycję 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ć.

Następne kroki