Authentifizieren von Azure Batch-Diensten mit Microsoft Entra ID

Azure Batch unterstützt die Authentifizierung mit Microsoft Entra ID, dem mehrmandantenfähigen cloudbasierten Verzeichnis- und Identitätsverwaltungsdienst von Microsoft. Azure verwendet Microsoft Entra ID für die Authentifizierung seiner eigenen Kunden, Dienstadministratoren und Organisationsbenutzer.

Die empfohlene Methode zum Authentifizieren Azure Batch Apps ist die Verwendung der Azure Identity-Clientbibliothek, die tokenbasierte Authentifizierungsklassen (z. B. DefaultAzureCredential, ManagedIdentityCredential, ClientSecretCredential und InteractiveBrowserCredential) bereitstellt, die konsistent funktionieren, unabhängig davon, ob Ihre App lokal, Azure oder lokal ausgeführt wird. Eine Übersicht über empfohlene Authentifizierungsstrategien finden Sie unter:

In diesem Artikel werden zwei häufige Szenarien für die Authentifizierung für Azure Batch mit Microsoft Entra ID beschrieben:

  • Die integrierte (interaktive) Authentifizierung authentifiziert einen Benutzer, der mit einer Anwendung interagiert. Verwenden Sie anmeldeinformationen wie InteractiveBrowserCredential oder DefaultAzureCredential (die über Entwicklertoolanmeldungen wie Azure CLI, Visual Studio und Visual Studio Code verkettet werden können).

  • Die Dienstprinzipal- oder verwaltete Identitätsauthentifizierung authentifiziert eine unbeaufsichtigte Anwendung. Verwenden Sie anmeldeinformationen wie ManagedIdentityCredential für Apps, die auf Azure gehostet werden, oder ClientSecretCredential / ClientCertificateCredential für Apps, die sich mit dem Geheimen oder Zertifikat einer registrierten Anwendung authentifizieren.

Weitere Informationen zu Microsoft Entra ID finden Sie in der Microsoft Entra Documentation.

Sammeln der Endpunkte für die Authentifizierung

Zum Authentifizieren von Batch-Anwendungen mit Microsoft Entra ID müssen Sie den Microsoft Entra-Endpunkt und den Batch-Ressourcenendpunkt in Ihren Code einschließen.

Microsoft Entra Endpunkt

Der Microsoft Entra Authority-Basis-Endpunkt ist https://login.microsoftonline.com/. Verwenden Sie für die Authentifizierung bei Microsoft Entra ID diesen Endpunkt mit der Mandanten-ID, die den für die Authentifizierung zu verwendenden Microsoft Entra-Mandanten identifiziert:

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

Sie können Ihre Mandanten-ID auf der Microsoft Entra ID-Seite im Azure-Portal abrufen. Sie können auch im linken Navigationsbereich Eigenschaften auswählen und die Mandanten-ID auf der Seite Eigenschaften anzeigen.

Screenshot der Mandanten-ID im Azure-Portal.

Wichtig

  • Der mandantenspezifische Microsoft Entra-Endpunkt ist erforderlich, wenn Sie einen Service Principal zur Authentifizierung verwenden.

  • Wenn Sie mithilfe der integrierten Authentifizierung authentifizieren, wird der mandantenspezifische Endpunkt empfohlen, ist aber optional. Sie können auch den allgemeinen Microsoft Entra-Endpunkt verwenden, um eine allgemeine Schnittstelle zum Erfassen von Anmeldeinformationen bereitzustellen, wenn kein bestimmter Mandant angegeben ist. Der gemeinsame Endpunkt ist https://login.microsoftonline.com/common.

Weitere Informationen zu Endpunkten in Microsoft Entra finden Sie unter Authentifizierung im Vergleich zu Autorisierung.

Batch-Ressourcenendpunkt

Verwenden Sie den Batch-Ressourcenendpunkt https://batch.core.windows.net/, um ein Token zum Authentifizieren von Anforderungen für den Batch-Dienst abzurufen.

Registrieren Ihrer Anwendung bei einem Mandanten

Der erste Schritt zur Verwendung der Microsoft Entra-Authentifizierung ist die Registrierung Ihrer Anwendung in einem Microsoft Entra-Mandanten. Nachdem Ihre Anwendung registriert wurde, können Sie die Azure Identity Library Anmeldeinformationen aus Ihrem Code verwenden, um Microsoft Entra Token für den Batchdienst abzurufen. Die Registrierung Ihrer Anwendung ist für Abläufe mit vertraulichen Clients (Service Principals) sowie für jeden interaktiven Ablauf erforderlich, der eine mandantenspezifische App-Registrierung benötigt.

Tip

Wenn Ihr Code DefaultAzureCredential verwendet und sich über ein Entwicklertool (Azure CLI, Azure PowerShell, Visual Studio oder Visual Studio Code) oder eine verwaltete Identität anmeldet, müssen Sie keine separate Anwendung registrieren – die Anmeldeinformationen verwenden die identität, die in dieser Umgebung bereits konfiguriert ist.

Wenn Sie Ihre Anwendung registrieren, liefern Sie Microsoft Entra ID Informationen über Ihre Anwendung. Microsoft Entra ID stellt dann eine Anwendungs-ID bereit, eine sogenannte Client-ID, mit der Sie Ihre Anwendung zur Laufzeit Microsoft Entra ID zuordnen können. Weitere Informationen zur Anwendungs-ID finden Sie unter Anwendungs- und Dienstprinzipalobjekte in Microsoft Entra ID.

Führen Sie zum Registrieren Ihrer Batch-Anwendung die Schritte unter Registrieren einer Anwendung aus.

Nachdem Sie Ihre Anwendung registriert haben, können Sie die Anwendungs-ID (Client-ID) auf der Seite Übersicht der Anwendung sehen.

Screenshot der Anwendungs-ID im Azure-Portal.

Konfigurieren der integrierten Authentifizierung

Zum Authentifizieren mit der integrierter Authentifizierung müssen Sie Ihrer Anwendung die Berechtigung zum Herstellen der Verbindung mit der Batch-Dienst-API erteilen. Dieser Schritt ermöglicht es Ihrer Anwendung, Microsoft Entra ID zu verwenden, um Aufrufe der Batch-Dienst-API zu authentifizieren.

Nachdem Sie Ihre Anwendung registriert haben, führen Sie diese Schritte aus, um der Anwendung Zugriff auf den Batch-Dienst zu gewähren:

  1. Suchen Sie im Azure-Portal nach App-Registrierungen, und wählen Sie dies aus.
  2. Wählen Sie auf der Seite App-Registrierungen Ihre Anwendung aus.
  3. Wählen Sie auf der Seite Ihrer Anwendung im linken Navigationsbereich API-Berechtigungen aus.
  4. Wählen Sie auf der Seite API-Berechtigungen die Option Berechtigung hinzufügen aus.
  5. Wählen Sie auf der Seite API-Berechtigungen anfordern die Option Azure Batch aus.
  6. Aktivieren Sie auf der Seite Azure Batch unter Berechtigungen auswählen das Kontrollkästchen neben user_impersonation, und wählen Sie dann Berechtigungen hinzufügen aus.

Die Seite API-Berechtigungen zeigt jetzt, dass Ihre Microsoft Entra-Anwendung Zugriff sowohl auf Microsoft Graph als auch Azure Batch hat. Berechtigungen für Microsoft Graph werden automatisch gewährt, wenn Sie eine App bei Microsoft Entra ID registrieren.

Konfigurieren eines Dienstprinzipals

Um eine Anwendung zu authentifizieren, die unbeaufsichtigt ausgeführt wird, verwenden Sie einen Dienstprinzipal. Wenn sich Ihre Anwendung mit einem Dienstprinzipal authentifiziert, sendet sie sowohl die Anwendungs-ID als auch einen geheimen Schlüssel an Microsoft Entra ID.

Nachdem Sie die Anwendung registrieren, befolgen Sie diese Schritte im Azure-Portal, um einen Dienstprinzipal zu konfigurieren:

  1. Fordern Sie ein Geheimnis für Ihre Anwendung an.
  2. Weisen Sie der Anwendung die rollenbasierte Zugriffssteuerung von Azure (role-bases access control, Azure-RBAC) zu.

Anfordern eines Geheimnisses für Ihre Anwendung

Führen Sie die folgenden Schritte aus, um den geheimen Schlüssel zu erstellen und zu kopieren, um ihn in Ihrem Code zu verwenden:

  1. Suchen Sie im Azure-Portal nach App-Registrierungen, und wählen Sie dies aus.
  2. Wählen Sie auf der Seite App-Registrierungen Ihre Anwendung aus.
  3. Wählen Sie auf der Seite Ihrer Anwendung im linken Navigationsbereich Zertifikate und Geheimnisse aus.
  4. Wählen Sie auf der Seite Zertifikate und Geheimnisse die Option Neuer geheimer Clientschlüssel aus.
  5. Geben Sie auf der Seite Geheimen Clientschlüssel hinzufügen eine Beschreibung ein, und wählen Sie eine Ablauffrist für das Geheimnis aus.
  6. Wählen Sie Hinzufügen aus, um das Geheimnis zu erstellen und auf der Seite Zertifikate und Geheimnisse anzuzeigen.
  7. Kopieren Sie den gemeinen Wert an einen sicheren Ort, da Sie nach dem Verlassen dieser Seite nicht mehr darauf zugreifen können. Wenn Sie den Zugriff auf Ihren Schlüssel verlieren, können Sie einen neuen generieren.

Zuweisen von Azure-RBAC in Ihrer Anwendung

Führen Sie diese Schritte aus, um Ihrer Anwendung eine Azure RBAC-Rolle zuzuweisen. Weitere Informationen finden Sie unter Rollenbasierte Zugriffssteuerung für den Azure Batch-Dienst.

  1. Navigieren Sie im Azure-Portal zu dem Batch-Konto, das Ihre Anwendung verwendet.
  2. Wählen Sie im linken Navigationsbereich Zugriffssteuerung (IAM) aus.
  3. Wählen Sie auf der Seite Zugriffssteuerung (IAM) die Option Rollenzuweisung hinzufügen aus.
  4. Wählen Sie auf der Seite Rollenzuweisung hinzufügen die Registerkarte Rolle und dann eine der in Azure Batch integrierten RBAC-Rollen als Rolle für Ihre App aus.
  5. Wählen Sie die Registerkarte Mitglieder und dann unter Mitglieder die Option Mitglieder auswählen aus.
  6. Suchen Sie auf dem Bildschirm Mitglieder auswählen nach Ihrer Anwendung wählen Sie diese aus, und wählen Sie dann Auswählen aus.
  7. Wählen Sie auf der Seite Rollenzuweisung hinzufügen die Option Überprüfen + zuweisen aus.

Ihre Anwendung sollte jetzt auf der Registerkarte Rollenzuweisungen auf der Seite Zugriffssteuerung (IAM) des Batch-Kontos angezeigt werden.

Codebeispiele

Die Codebeispiele in diesem Abschnitt zeigen, wie Sie sich bei Azure Batch mit Microsoft Entra ID mithilfe von Anmeldeinformationen aus der Azure Identitätsbibliothek authentifizieren. In den Beispielen werden .NET und Python verwendet, die gleichen Muster gelten jedoch für andere Azure SDK Sprachen.

Hinweis

Ein Microsoft Entra-Authentifizierungstoken läuft nach einer Stunde ab. Wenn Sie ein langlebiges BatchClient-Objekt verwenden, speichert und aktualisiert die von Ihnen bereitgestellte Azure IdentityTokenCredential das Token transparent zwischen, sodass ein neues Token nur bei Bedarf von Microsoft Entra ID abgerufen wird. Weitere Informationen zu Token in Microsoft Entra ID finden Sie unter Sicherheitstoken.

Tip

Verwenden Sie für die meisten Szenarien DefaultAzureCredential. Es versucht automatisch mehrere Authentifizierungsmethoden (verwaltete Identität, Umgebungsvariablen, Entwicklertoolanmeldungen usw.), sodass derselbe Code funktioniert, unabhängig davon, ob Ihre App während der Entwicklung, bei Azure oder lokal lokal ausgeführt wird. Unter .NET-Apps authentifizieren und Python-Apps authentifizieren finden Sie Hinweise zur Auswahl der richtigen Anmeldeinformationen.

Codebeispiel: Authentifizierung bei Azure Batch über .NET

In diesem Beispiel werden Azure.Compute.Batch und die Azure.Identity-Bibliothek verwendet.

  1. Installieren Sie die Pakete Azure.Compute.Batch und Azure.Identity NuGet.

  2. Deklarieren Sie die folgenden using-Anweisungen in Ihrem Code:

    using Azure.Compute.Batch;
    using Azure.Core;
    using Azure.Identity;
    
  3. Verweisen Sie auf Ihren Batchkontoendpunkt:

    private const string BatchAccountUrl = "https://<myaccount>.<mylocation>.batch.azure.com";
    
  4. Erstellen Sie Anmeldeinformationen und übergeben Sie sie an den Konstruktor BatchClient. Verwenden Sie den Client für nachfolgende Vorgänge mit dem Batchdienst.

    Empfohlen: DefaultAzureCredential — funktioniert lokal mit Anmeldungen über Entwicklertools (Azure CLI, Visual Studio, Visual Studio Code) und verwendet automatisch die verwaltete Identität, wenn die App in Azure ausgeführt wird:

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

    Interaktive (integrierte) Anmeldung – fordert einen Benutzer auf, sich über den Systembrowser anzumelden. Verwenden Sie diese Vorgehensweise, wenn Ihre App einen bestimmten Benutzer interaktiv authentifizieren muss:

    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);
    

    Dienstprinzipal (geheimer Clientschlüssel) – Verwendung für unbeaufsichtigte Apps, die sich mit einem Geheimschlüssel für die App-Registrierung authentifizieren:

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

    Managed Identity – Wird verwendet, wenn Ihre App auf einer Azure Ressource (z. B. einer VM, app Service oder Container-App) ausgeführt wird, die über eine vom System zugewiesene oder vom Benutzer zugewiesene verwaltete Identität verfügt:

    // 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);
    

Codebeispiel: Authentifizieren bei Azure Batch von Python

In diesem Beispiel wird der Azure-Batch-Client mit Anmeldeinformationen aus der Azure-Identity-Bibliothek verwendet. Die Legacyklasse azure.common.credentials.ServicePrincipalCredentials ist veraltet. Verwenden Sie azure-identity stattdessen Anmeldeinformationen.

  1. Installieren Sie die erforderlichen Pakete:

    pip install azure-batch azure-identity
    
  2. Geben Sie den Endpunkt Ihres Batch-Kontos und den Ressourcenbereich von Batch an:

    BATCH_ACCOUNT_URL = "https://<myaccount>.<mylocation>.batch.azure.com"
    BATCH_SCOPE = "https://batch.core.windows.net/.default"
    
  3. Erstellen Sie eine Anmeldeinformation und übergeben Sie sie an BatchServiceClient.

    Empfohlen: DefaultAzureCredential – funktioniert lokal mit Anmeldungen über Entwicklertools und verwendet automatisch die verwaltete Identität, wenn sie auf Azure ausgeführt wird:

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

    Interaktive (integrierte) Anmeldung – fordert einen Benutzer auf, sich über den Systembrowser anzumelden:

    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,
    )
    

    Dienstprinzipal (geheimer Clientschlüssel) – Verwendung für unbeaufsichtigte Apps:

    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,
    )
    

    Managed Identity – Wird verwendet, wenn Ihre App auf einer Azure Ressource mit verwalteter Identität ausgeführt wird:

    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,
    )
    

Nächste Schritte