Udostępnij przez


Uwierzytelnianie aplikacji języka Python hostowanych na platformie Azure do zasobów platformy Azure przy użyciu przypisanej przez system tożsamości zarządzanej

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 nadchodzących sekcjach 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ę z kodu aplikacji, używając tożsamości zarządzanej przypisanej przez system

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 oraz innych sekretów 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 i przypisane przez system są włączane bezpośrednio na zasobie Azure i powiązane z jego cyklem życia. Po usunięciu zasobu platforma Azure automatycznie usunie Twoją 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 Azure i oferują większą elastyczność oraz 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ądzanych przypisanych przez użytkownika, aby uzyskać więcej informacji.

Włącz tożsamość zarządzaną przypisaną przez system w zasobie hostowanym na platformie Azure

Aby rozpocząć korzystanie z systemowo przypisanej tożsamości zarządzanej z aplikacją, włącz tożsamość w zasobie platformy Azure hostującym aplikację, takim jak usługa Azure App Service, usługa Azure Container Apps 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.

  1. W portalu Azure przejdź do zasobu, który hostuje kod Twojej aplikacji, na przykład instancję Azure App Service lub Azure Container App.

  2. Na stronie przeglądu zasobu rozwiń Ustawienia i wybierz pozycję Tożsamość z menu nawigacyjnego.

  3. Na stronie Identity przełącz suwak Status na Włącz.

  4. Wybierz pozycję Zapisz, aby zastosować zmiany.

    Zrzut ekranu przedstawiający sposób włączania tożsamości zarządzanej przypisanej przez system w aplikacji kontenera.

Nadaj role 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: Role przypisane 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.

  1. Przejdź do strony Przegląd grupy zasobów zawierającej aplikację z przypisaną przez system tożsamością zarządzaną.

  2. Wybierz pozycję Kontrola dostępu (IAM) na lewym panelu nawigacyjnym.

  3. Na stronie Kontrola dostępu (IAM) wybierz pozycję + Dodaj w górnym menu, a następnie wybierz pozycję Dodaj przydział roli, aby przejść do strony Dodaj przydział roli.

    Zrzut ekranu przedstawiający sposób uzyskiwania dostępu do strony przypisywania roli tożsamości.

  4. Strona Dodawanie przypisania roli przedstawia wieloetapowy proces z zakładkami do przypisywania ról tożsamościom. Na początkowej karcie Rola użyj pola wyszukiwania u góry, aby zlokalizować rolę, którą chcesz przypisać tożsamości.

  5. Wybierz rolę z wyników, a następnie wybierz pozycję Dalej, aby przejść do karty Członków.

  6. Dla opcji Przypisz dostęp do wybierz opcję Tożsamość zarządzana.

  7. W przypadku opcji członkowie, wybierz + Wybierz członków, aby otworzyć panel Wybierz tożsamości zarządzane.

  8. Na panelu Wybierz zarządzane tożsamości, użyj list rozwijanych Subskrypcja i Zarządzana tożsamość, aby filtrować wyniki wyszukiwania dla Twoich tożsamości. Użyj pola wyszukiwania Wybierz, aby zlokalizować tożsamość systemową włączoną dla zasobu Azure, który hostuje aplikację.

    Zrzut ekranu przedstawiający proces przypisywania tożsamości zarządzanej.

  9. Wybierz tożsamość i wybierz pozycję Wybierz w dolnej części panelu, aby kontynuować.

  10. Wybierz opcję Przejrzyj i przypisz na dole strony.

  11. Na ostatniej karcie Przeglądanie i przypisywanie wybierz pozycję Przeglądanie i przypisywanie, aby zakończyć przepływ pracy.

Uwierzytelnianie w usługach platformy Azure z aplikacji

Biblioteka Azure Identity udostępnia różne poświadczenia— implementacje TokenCredential dostosowane do obsługi różnych scenariuszy i przepływów uwierzytelniania Microsoft Entra. Ponieważ tożsamość zarządzana jest niedostępna w przypadku uruchamiania lokalnego, poniższe kroki wyjaśniają, które poświadczenia mają być używane w którym scenariuszu.

  • lokalne środowisko deweloperskie: podczas tworzenia lokalnego tylkoużyj klasy o nazwie DefaultAzureCredential dla wstępnie skonfigurowanego łańcucha poświadczeń. DefaultAzureCredential odnajduje 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, zapoznaj się z artykułem Uwierzytelnianie w usługach Azure podczas lokalnego tworzenia oprogramowania.
  • Aplikacje hostowane na platformie Azure: gdy aplikacja jest uruchomiona na platformie Azure, użyj funkcji 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

Dodaj pakiet azure-identity do aplikacji, przechodząc do katalogu projektu aplikacji i uruchamiając następujące polecenie:

pip 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 poniższym przykładzie kodu pokazano, jak utworzyć wystąpienie poświadczeń i używać jej z klientem usługi Azure SDK. W kodzie aplikacji wykonaj następujące kroki, aby uwierzytelnić się przy użyciu tożsamości zarządzanej:

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

W poniższym przykładzie pokazano uwierzytelnianie BlobServiceClient przy użyciu tożsamości zarządzanej przypisanej przez system:

from azure.identity import ManagedIdentityCredential
from azure.storage.blob import BlobServiceClient

# Authenticate using system-assigned managed identity
credential = ManagedIdentityCredential()

blob_service_client = BlobServiceClient(
    account_url="https://<account-name>.blob.core.windows.net",
    credential=credential
)

Podczas opracowywania lokalnego można użyć DefaultAzureCredential funkcji odnajdywania poświadczeń z lokalnych narzędzi deweloperskich. Po wdrożeniu na platformie Azure przełącz się na ManagedIdentityCredential w scenariuszach produkcyjnych:

import os
from azure.identity import DefaultAzureCredential, ManagedIdentityCredential
from azure.storage.blob import BlobServiceClient

# Use ManagedIdentityCredential in Azure, DefaultAzureCredential locally
if os.getenv("WEBSITE_HOSTNAME"):
    credential = ManagedIdentityCredential()
else:
    credential = DefaultAzureCredential()

blob_service_client = BlobServiceClient(
    account_url="https://<account-name>.blob.core.windows.net",
    credential=credential
)