Uwierzytelnianie usług Azure Batch za pomocą Microsoft Entra ID

Azure Batch obsługuje uwierzytelnianie za pomocą Microsoft Entra ID, wielodostępnej usługi katalogowej i zarządzania tożsamościami działającej w chmurze od Microsoftu. Azure używa Microsoft Entra ID do uwierzytelniania swoich klientów, administratorów usług i użytkowników organizacyjnych.

Zalecanym sposobem uwierzytelniania aplikacji Azure Batch jest użycie biblioteki klienta Azure Identity Które udostępnia klasy uwierzytelniania oparte na tokenach (takie jak DefaultAzureCredential, ManagedIdentityCredential, ClientSecretCredential i InteractiveBrowserCredential), które działają spójnie, niezależnie od tego, czy aplikacja działa lokalnie, Azure, czy lokalnie. Aby zapoznać się z omówieniem zalecanych strategii uwierzytelniania, zobacz:

W tym artykule opisano dwa typowe scenariusze uwierzytelniania w Azure Batch za pomocą Microsoft Entra ID:

  • Zintegrowane (interaktywne) uwierzytelnianie uwierzytelnia użytkownika, który wchodzi w interakcję z aplikacją. Użyj poświadczeń, takich jak InteractiveBrowserCredential lub DefaultAzureCredential (które mogą łączyć się za pośrednictwem logów narzędzi deweloperskich, takich jak Azure CLI, Visual Studio i Visual Studio Code).

  • Uwierzytelnianie za pomocą nazwy głównej usługi lub tożsamości zarządzanej uwierzytelnia aplikację działającą bez nadzoru. Użyj poświadczeń, takich jak ManagedIdentityCredential dla aplikacji hostowanych w Azure lub ClientSecretCredential / ClientCertificateCredential dla aplikacji uwierzytelniających się przy użyciu wpisu tajnego lub certyfikatu zarejestrowanej aplikacji.

Aby uzyskać więcej informacji o Microsoft Entra ID, zobacz dokumentację Microsoft Entra.

Zbierz punkty końcowe do uwierzytelniania

Aby uwierzytelniać aplikacje Batch za pomocą identyfikatora Microsoft Entra, musisz uwzględnić w swoim kodzie punkt końcowy Microsoft Entra oraz punkt końcowy zasobów Batch.

punkt końcowy Microsoft Entra

Podstawowy punkt końcowy władzy Microsoft Entra to https://login.microsoftonline.com/. Aby uwierzytelnić się za pomocą Microsoft Entra ID, użyj tego punktu końcowego wraz z identyfikatorem dzierżawy, który identyfikuje dzierżawę Microsoft Entra używaną do uwierzytelniania.

https://login.microsoftonline.com/<tenant-id>

Możesz uzyskać identyfikator najemcy z głównej strony Microsoft Entra ID w portalu Azure. Możesz także wybrać Właściwości w lewym panelu nawigacyjnym i zobaczyć Identyfikator dzierżawcy na stronie Właściwości.

Zrzut ekranu identyfikatora dzierżawcy w portalu Azure.

Ważne

  • Konieczny jest punkt końcowy Microsoft Entra specyficzny dla dzierżawcy, gdy uwierzytelniasz się za pomocą jednostki usługi.

  • Podczas uwierzytelniania przy użyciu uwierzytelniania zintegrowanego zalecany jest punkt końcowy właściwy dla danej dzierżawy, ale jest on opcjonalny. Możesz również użyć wspólnego punktu końcowego Microsoft Entra, aby zapewnić ogólny interfejs wprowadzania poświadczeń, gdy nie podano określonego dzierżawcy. Wspólny punkt końcowy to https://login.microsoftonline.com/common.

Aby uzyskać więcej informacji na temat punktów końcowych Microsoft Entra, zobacz Authentication vs. authorization.

Końcówka zbioru zasobów

Aby uzyskać token do uwierzytelniania żądań do usługi Batch, użyj końcowego punktu zasobu Batch https://batch.core.windows.net/.

Zarejestruj swoją aplikację u najemcy

Pierwszym krokiem w korzystaniu z uwierzytelniania Microsoft Entra jest zarejestrowanie aplikacji w dzierżawie Microsoft Entra. Po zarejestrowaniu aplikacji możesz użyć poświadczeń z biblioteki Azure Identity w kodzie, aby uzyskać tokeny Microsoft Entra dla usługi Batch. Zarejestrowanie aplikacji jest wymagane w przypadku przepływów klienta poufnego (jednostki usługi) oraz wszelkich przepływów interaktywnych, które wymagają rejestracji aplikacji specyficznej dla danej dzierżawy.

Wskazówka

Jeśli kod używa DefaultAzureCredential i loguje się za pomocą narzędzia deweloperskiego (Azure CLI, Azure PowerShell, Visual Studio lub Visual Studio Code) lub tożsamości zarządzanej, nie musisz rejestrować oddzielnej aplikacji — poświadczenie używa tożsamości już skonfigurowanej w tym środowisku.

Kiedy rejestrujesz swoją aplikację, podajesz informacje o niej usłudze Microsoft Entra ID. Microsoft Entra ID następnie zapewnia identyfikator aplikacji (ID aplikacji), nazywany również identyfikatorem klienta (ID klienta), który służy do powiązania aplikacji z Microsoft Entra ID podczas działania. Aby uzyskać więcej informacji na temat identyfikatora aplikacji, zobacz Obiekty aplikacji i obiektów usługi głównej w Microsoft Entra ID.

Aby zarejestrować aplikację usługi Batch, wykonaj kroki opisane w temacie Rejestrowanie aplikacji.

Po zarejestrowaniu aplikacji możesz zobaczyć identyfikator Aplikacji (klienta) na stronie Przegląd aplikacji.

Zrzut ekranu identyfikatora aplikacji pokazany w portalu Azure.

Skonfiguruj zintegrowane uwierzytelnianie

Aby uwierzytelniać przy użyciu zintegrowanego uwierzytelniania, musisz nadać swojej aplikacji uprawnienie do łączenia się z interfejsem API usługi Batch. Ten krok pozwala Twojej aplikacji używać Microsoft Entra ID do uwierzytelniania wywołań do interfejsu API usługi Batch.

Po zarejestrowaniu aplikacji, wykonaj następujące kroki, aby przyznać aplikacji dostęp do usługi Batch:

  1. W portalu Azure wyszukaj i wybierz rejestracje aplikacji.
  2. Na stronie Rejestracje aplikacji wybierz swoją aplikację.
  3. Na stronie swojej aplikacji wybierz Uprawnienia API z lewego menu nawigacyjnego.
  4. Na stronie Uprawnienia interfejsu API wybierz pozycję Dodaj uprawnienie.
  5. Na stronie Żądanie uprawnień interfejsu API wybierz pozycję Azure Batch.
  6. Na stronie Azure Batch, w sekcji Wybierz uprawnienia, zaznacz pole wyboru obok user_impersonation, a następnie wybierz Dodaj uprawnienia.

Uprawnienia API teraz pokazują, że aplikacja Microsoft Entra ma dostęp do Microsoft Graph i Azure Batch. Uprawnienia są automatycznie przyznawane usłudze Microsoft Graph po zarejestrowaniu aplikacji za pomocą Microsoft Entra ID.

Konfiguracja obiektu zabezpieczeń usługi

Aby uwierzytelnić aplikację działającą bez nadzoru, należy użyć nazwy głównej usługi. Gdy aplikacja uwierzytelnia się przy użyciu jednostki usługi głównej, wysyła do Microsoft Entra ID zarówno identyfikator aplikacji, jak i klucz tajny.

Po zarejestrowaniu swojej aplikacji wykonaj następujące kroki w portalu Azure, aby skonfigurować nazwę główną usługi:

  1. Poproś o klucz tajny dla swojej aplikacji.
  2. Przypisz oparty na rolach system kontroli dostępu Azure (Azure RBAC) do swojej aplikacji.

Poproś o tajny klucz dla swojej aplikacji

Aby utworzyć i skopiować klucz tajny do użycia w kodzie, wykonaj następujące kroki:

  1. W portalu Azure wyszukaj i wybierz rejestracje aplikacji.
  2. Na stronie Rejestracje aplikacji wybierz swoją aplikację.
  3. Na stronie swojej aplikacji wybierz Certyfikaty i tajemnice z lewego menu nawigacyjnego.
  4. Na stronie Certyfikaty & tajemnice wybierz Nowy klient tajemnic.
  5. Na stronie Dodawanie klucza tajnego klienta wprowadź opis i wybierz okres wygaśnięcia klucza tajnego.
  6. Wybierz pozycję Dodaj , aby utworzyć wpis tajny i wyświetlić go na stronie Certyfikaty i wpisy tajne .
  7. Skopiuj wartość tajną w bezpieczne miejsce, ponieważ po opuszczeniu tej strony nie będzie już można uzyskać do niej dostępu. Jeśli utracisz dostęp do klucza, możesz wygenerować nowy.

Przypisz role Azure RBAC do aplikacji

Postępuj zgodnie z tymi krokami, aby przypisać rolę Azure RBAC do swojej aplikacji. Aby uzyskać więcej informacji, zobacz Role-based access control for Azure Batch service.

  1. W portalu Azure przejdź do konta Batch, z którego korzysta Twoja aplikacja.
  2. Wybierz Access control (IAM) z lewego menu nawigacyjnego.
  3. Na stronie Kontrola dostępu (IAM) wybierz Dodaj przypisanie roli.
  4. Na stronie Dodaj przypisanie roli wybierz kartę Rola, a następnie wybierz jedną z wbudowanych ról RBAC usługi Azure Batch jako rolę dla swojej aplikacji.
  5. Wybierz kartę Członkowie, a następnie wybierz Wybierz członków w sekcji Członkowie.
  6. Na ekranie Wybierz członków wyszukaj i wybierz swoją aplikację, a następnie wybierz Wybierz.
  7. Wybierz pozycję Przejrzyj + przypisz na stronie Dodaj przypisanie roli.

Twoja aplikacja powinna teraz pojawić się na karcie Przypisania ról na stronie Kontrola dostępu (IAM) konta Batch.

Przykłady kodu

Przykłady kodu w tej sekcji pokazują, jak uwierzytelniać się w Azure Batch za pomocą Microsoft Entra ID przy użyciu poświadczeń z biblioteki Azure Identity. W przykładach są używane .NET i Python, ale te same wzorce dotyczą innych języków Azure SDK.

Uwaga

Token uwierzytelniający Microsoft Entra wygasa po jednej godzinie. Jeśli używasz obiektu BatchClient o długim czasie życia, dostarczone przez Ciebie poświadczenie Azure IdentityTokenCredential automatycznie zapisuje token w pamięci podręcznej i odświeża go, więc nowy token jest pobierany z Microsoft Entra ID tylko wtedy, gdy jest to konieczne. Aby uzyskać więcej informacji na temat tokenów w Microsoft Entra ID, zobacz Security tokens.

Wskazówka

W większości scenariuszy użyj DefaultAzureCredential. Automatycznie podejmuje próbę wielu metod uwierzytelniania (tożsamość zarządzana, zmienne środowiskowe, logowania narzędzi deweloperskich itd.), dlatego ten sam kod działa lokalnie podczas programowania, w Azure lub lokalnie. Zobacz Authenticate .NET apps and Authenticate Python apps aby uzyskać wskazówki dotyczące wybierania odpowiednich poświadczeń.

Przykład kodu: Uwierzytelnianie w Azure Batch z .NET

W tym przykładzie użyto Azure.Compute.Batch z biblioteką Azure.Identity.

  1. Zainstaluj pakiety Azure.Compute.Batch i Azure.Identity NuGet.

  2. Zadeklaruj następujące using instrukcje w swoim kodzie:

    using Azure.Compute.Batch;
    using Azure.Core;
    using Azure.Identity;
    
  3. Odwołaj się do punktu końcowego konta usługi Batch:

    private const string BatchAccountUrl = "https://<myaccount>.<mylocation>.batch.azure.com";
    
  4. Utwórz poświadczenie i przekaż je do konstruktora BatchClient . Użyj klienta do kolejnych operacji względem usługi Batch.

    Zalecane: DefaultAzureCredential — działa lokalnie z logowaniem przy użyciu narzędzi deweloperskich (Azure CLI, Visual Studio, Visual Studio Code) i automatycznie używa tożsamości zarządzanej, gdy aplikacja działa na platformie Azure:

    TokenCredential credential = new DefaultAzureCredential();
    
    BatchClient client = new BatchClient(new Uri(BatchAccountUrl), credential);
    
    await foreach (BatchJob job in client.GetJobsAsync())
    {
        Console.WriteLine(job.Id);
    }
    

    Logowanie interakcyjne (zintegrowane) — monituje użytkownika o zalogowanie się za pośrednictwem przeglądarki systemowej. Użyj tej funkcji, gdy aplikacja musi uwierzytelniać określonego użytkownika interaktywnie:

    TokenCredential credential = new InteractiveBrowserCredential(
        new InteractiveBrowserCredentialOptions
        {
            TenantId = "<tenant-id>",
            ClientId = "<application-id>",      // optional; required only if you registered your own app
            RedirectUri = new Uri("http://localhost")
        });
    
    BatchClient client = new BatchClient(new Uri(BatchAccountUrl), credential);
    

    Jednostka usługi (klucz tajny klienta) — używana w przypadku aplikacji działających bez nadzoru, które uwierzytelniają się za pomocą klucza tajnego skonfigurowanego w rejestracji aplikacji:

    TokenCredential credential = new ClientSecretCredential(
        tenantId: "<tenant-id>",
        clientId: "<application-id>",
        clientSecret: "<client-secret>");
    
    BatchClient client = new BatchClient(new Uri(BatchAccountUrl), credential);
    

    Tożsamość zarządzana — użyj, gdy aplikacja działa w zasobie platformy Azure (takim jak maszyna wirtualna, usługa App Service lub Container App), który ma tożsamość zarządzaną przypisaną przez system lub przez użytkownika:

    // System-assigned managed identity
    TokenCredential credential = new ManagedIdentityCredential();
    
    // Or, user-assigned managed identity
    // TokenCredential credential = new ManagedIdentityCredential(clientId: "<user-assigned-client-id>");
    
    BatchClient client = new BatchClient(new Uri(BatchAccountUrl), credential);
    

Przykład kodu: Uwierzytelnianie do Azure Batch z Python

W tym przykładzie użyto klienta azure-batch z poświadczeniami z biblioteki azure-identity . Dotychczasowa klasa azure.common.credentials.ServicePrincipalCredentials jest przestarzała; zamiast niej użyj poświadczeń azure-identity.

  1. Zainstaluj wymagane pakiety:

    pip install azure-batch azure-identity
    
  2. Określ punkt końcowy konta usługi Batch i zakres zasobów usługi Batch:

    BATCH_ACCOUNT_URL = "https://<myaccount>.<mylocation>.batch.azure.com"
    BATCH_SCOPE = "https://batch.core.windows.net/.default"
    
  3. Utwórz poświadczenie i przekaż je do BatchServiceClient.

    Zalecane: DefaultAzureCredential — działa lokalnie z logowaniami za pomocą narzędzi deweloperskich i automatycznie używa tożsamości zarządzanej podczas uruchamiania na platformie Azure:

    from azure.batch import BatchServiceClient
    from azure.identity import DefaultAzureCredential
    
    credential = DefaultAzureCredential()
    
    batch_client = BatchServiceClient(
        credentials=credential,
        batch_url=BATCH_ACCOUNT_URL,
    )
    

    Logowanie interakcyjne (zintegrowane) — monituje użytkownika o zalogowanie się za pośrednictwem przeglądarki systemowej:

    from azure.batch import BatchServiceClient
    from azure.identity import InteractiveBrowserCredential
    
    credential = InteractiveBrowserCredential(
        tenant_id="<tenant-id>",
        client_id="<application-id>",  # optional; required only if you registered your own app
    )
    
    batch_client = BatchServiceClient(
        credentials=credential,
        batch_url=BATCH_ACCOUNT_URL,
    )
    

    Jednostka usługi (klucz tajny klienta) — używana w przypadku aplikacji nienadzorowanych:

    from azure.batch import BatchServiceClient
    from azure.identity import ClientSecretCredential
    
    credential = ClientSecretCredential(
        tenant_id="<tenant-id>",
        client_id="<application-id>",
        client_secret="<client-secret>",
    )
    
    batch_client = BatchServiceClient(
        credentials=credential,
        batch_url=BATCH_ACCOUNT_URL,
    )
    

    Tożsamość zarządzana — użyj, gdy aplikacja działa w zasobie platformy Azure z tożsamością zarządzaną:

    from azure.batch import BatchServiceClient
    from azure.identity import ManagedIdentityCredential
    
    # System-assigned managed identity
    credential = ManagedIdentityCredential()
    
    # Or, user-assigned managed identity
    # credential = ManagedIdentityCredential(client_id="<user-assigned-client-id>")
    
    batch_client = BatchServiceClient(
        credentials=credential,
        batch_url=BATCH_ACCOUNT_URL,
    )
    

Następne kroki