Azure Batch-services verifiëren met Microsoft Entra ID

Azure Batch ondersteunt verificatie met Microsoft Entra ID, de multitenant cloudgebaseerde directory- en identiteitsbeheerservice van Microsoft. Azure gebruikt Microsoft Entra ID om zijn eigen klanten, servicebeheerders en organisatiegebruikers te verifiëren.

De aanbevolen manier om Azure Batch apps te verifiëren, is het gebruik van de Azure Identity-clientbibliotheek, biedt verificatieklassen op basis van tokens (zoals DefaultAzureCredential, ManagedIdentityCredential, ClientSecretCredential en InteractiveBrowserCredential) die consistent werken, ongeacht of uw app lokaal, op Azure of on-premises wordt uitgevoerd. Zie voor een overzicht van aanbevolen verificatiestrategieën:

In dit artikel worden twee veelvoorkomende scenario's beschreven voor verificatie bij Azure Batch met Microsoft Entra ID:

  • Geïntegreerde (interactieve) verificatie verifieert een gebruiker die interactie heeft met een toepassing. Gebruik een referentie zoals InteractiveBrowserCredential of DefaultAzureCredential (die kan worden gekoppeld via aanmeldingen voor ontwikkelaarshulpprogramma's, zoals Azure CLI, Visual Studio en Visual Studio Code).

  • Authenticatie met een service-principal of beheerde identiteit authenticeert een toepassing zonder gebruikersinteractie. Gebruik een referentie zoals ManagedIdentityCredential voor apps die worden gehost op Azure of ClientSecretCredential / ClientCertificateCredential voor apps die worden geverifieerd met het geheim of certificaat van een geregistreerde toepassing.

Zie de Microsoft Entra-documentatie voor meer informatie over Microsoft Entra-id.

Eindpunten verzamelen voor verificatie

Als u Batch-toepassingen wilt verifiëren met Microsoft Entra-id, moet u het Microsoft Entra-eindpunt en het Batch-resource-eindpunt in uw code opnemen.

Microsoft Entra-eindpunt

Het basiseindpunt van Microsoft Entra-autoriteit is https://login.microsoftonline.com/. Als u wilt verifiëren met Microsoft Entra ID, gebruikt u dit eindpunt met de tenant-id die de Microsoft Entra-tenant identificeert die moet worden gebruikt voor verificatie:

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

U kunt uw tenant-id ophalen op de hoofdpagina van Microsoft Entra ID in Azure Portal. U kunt ook Eigenschappen selecteren in het linkernavigatievenster en de tenant-idbekijken op de pagina Eigenschappen.

Schermopname van de tenant-id in de Azure-portal.

Belangrijk

  • Het tenantspecifieke Microsoft Entra-eindpunt is vereist wanneer u zich verifieert met behulp van een service-principal.

  • Wanneer u verifieert met behulp van geïntegreerde verificatie, wordt het tenantspecifieke eindpunt aanbevolen, maar optioneel. U kunt ook het algemene Microsoft Entra-eindpunt gebruiken om een algemene interface voor het verzamelen van referenties te bieden wanneer er geen specifieke tenant is opgegeven. Het algemene eindpunt is https://login.microsoftonline.com/common.

Zie Verificatie versus autorisatie voor meer informatie over Microsoft Entra-eindpunten.

Batch-resource-eindpunt

Gebruik het Batch-resource-eindpunt https://batch.core.windows.net/ om een token te verkrijgen voor het verifiëren van aanvragen bij de Batch-service.

Uw applicatie registreren bij een tenant

De eerste stap bij het gebruik van Microsoft Entra-verificatie is het registreren van uw toepassing in een Microsoft Entra-tenant. Nadat uw toepassing is geregistreerd, kunt u in uw code de referenties van de Azure Identity-bibliotheek gebruiken om Microsoft Entra-tokens voor de Batch-service te verkrijgen. Het registreren van uw toepassing is vereist voor vertrouwelijke clientstromen (service-principal) en voor elke interactieve stroom die een tenantspecifieke app-registratie nodig heeft.

Tip

Als uw code gebruikmaakt van DefaultAzureCredential en zich aanmeldt via een ontwikkelhulpprogramma (Azure CLI, Azure PowerShell, Visual Studio of Visual Studio Code) of een beheerde identiteit, hoeft u geen afzonderlijke toepassing te registreren. De referentie gebruikt de identiteit die al in die omgeving is geconfigureerd.

Wanneer u uw toepassing registreert, geeft u informatie over uw toepassing op bij Microsoft Entra ID. Microsoft Entra-id biedt vervolgens een toepassings-id, ook wel een client-id genoemd, die u gebruikt om uw toepassing tijdens runtime te koppelen aan Microsoft Entra-id. Voor meer informatie over de toepassings-id, zie Toepassings- en service-principalobjecten in Microsoft Entra ID.

Volg de stappen bij Een toepassing registreren om uw Batch-toepassing te registreren.

Nadat u uw toepassing hebt geregistreerd, ziet u de toepassings-id (client) op de overzichtspagina van de toepassing.

Schermopname van de toepassings-id die wordt weergegeven in Azure Portal.

Geïntegreerde verificatie configureren

Als u wilt verifiëren met geïntegreerde verificatie, moet u uw toepassing toestemming geven om verbinding te maken met de Batch-service-API. Met deze stap kan uw toepassing Microsoft Entra ID gebruiken voor het verifiëren van aanroepen naar de Batch-service-API.

Nadat u uw toepassing hebt geregistreerd, volgt u deze stappen om de toepassing toegang te verlenen tot de Batch-service:

  1. Zoek en selecteer app-registraties in Azure Portal.
  2. Selecteer uw toepassing op de pagina App-registraties.
  3. Selecteer API-machtigingen in de linkernavigatiebalk op de pagina van uw toepassing.
  4. Selecteer Een machtiging toevoegen op de pagina API-machtigingen.
  5. Selecteer Azure Batch op de pagina Api-machtigingen aanvragen.
  6. Op de Azure Batch pagina, onder Machtigingen selecteren, selecteer het selectievakje naast user_impersonation en selecteer vervolgens Machtigingen toevoegen.

Op de pagina API-machtigingen ziet u nu dat uw Microsoft Entra-toepassing toegang heeft tot Zowel Microsoft Graph als Azure Batch. Machtigingen worden automatisch aan Microsoft Graph verleend wanneer u een app registreert bij Microsoft Entra-id.

Een service-principal configureren

Als u een toepassing wilt verifiëren die zonder toezicht wordt uitgevoerd, gebruikt u een service-principal. Wanneer uw toepassing wordt geverifieerd met behulp van een service-principal, worden zowel de toepassings-id als een geheime sleutel naar Microsoft Entra-id verzonden.

Nadat u uw toepassing hebt geregistreerd, volgt u deze stappen in Azure Portal om een service-principal te configureren:

  1. Vraag een geheim aan voor uw toepassing.
  2. Wijs op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) toe aan uw toepassing.

Een geheim aanvragen voor uw toepassing

Volg deze stappen om de geheime sleutel te maken en te kopiëren die u in uw code wilt gebruiken:

  1. Zoek en selecteer app-registraties in Azure Portal.
  2. Selecteer uw toepassing op de pagina App-registraties.
  3. Selecteer certificaten en geheimen in de linkernavigatiebalk op de pagina van uw toepassing.
  4. Selecteer Nieuw clientgeheim op de pagina Certificaten en geheimen.
  5. Op de pagina Een client-id toevoegen voert u een beschrijving in en selecteert u een verloopperiode voor het id.
  6. Selecteer Toevoegen om het geheim te maken en weer te geven op de pagina Certificaten en geheimen .
  7. Kopieer de geheime waarde naar een veilige plaats, omdat u deze niet meer kunt openen nadat u deze pagina hebt verlaten. Als u geen toegang meer hebt tot uw sleutel, kunt u een nieuwe genereren.

Azure RBAC toewijzen aan uw toepassing

Volg deze stappen om een Azure RBAC-rol toe te wijzen aan uw toepassing. Zie Op rollen gebaseerd toegangsbeheer voor de Azure Batch-service voor meer informatie.

  1. Navigeer in Azure Portal naar het Batch-account dat uw toepassing gebruikt.
  2. Selecteer Toegangsbeheer (IAM) in de linkernavigatie.
  3. Selecteer Op de pagina Toegangsbeheer (IAM) de optie Roltoewijzing toevoegen.
  4. Selecteer op de pagina Roltoewijzing toevoegen het tabblad Rol en selecteer vervolgens een van de ingebouwde RBAC-rollen van Azure Batch de rol voor uw app.
  5. Selecteer het tabblad Leden en selecteer leden onder Leden.
  6. Zoek op het Leden selecteren scherm naar uw toepassing en selecteer deze, en selecteer vervolgens Selecteren.
  7. Selecteer Beoordelen en toewijzen op de pagina Roltoewijzing toevoegen.

Uw toepassing moet nu worden weergegeven op het tabblad Roltoewijzingen van de pagina Toegangsbeheer (IAM) van het Batch-account.

Codevoorbeelden

In de codevoorbeelden in deze sectie ziet u hoe u zich kunt verifiëren bij Azure Batch met Microsoft Entra ID met behulp van referenties uit de Azure Identiteitsbibliotheek. In de voorbeelden worden .NET en Python gebruikt, maar dezelfde patronen zijn van toepassing op andere Azure SDK talen.

Notitie

Een Microsoft Entra-verificatietoken verloopt na één uur. Wanneer u een BatchClient-object met een lange levensduur gebruikt, slaat de Azure IdentityTokenCredential die u opgeeft het token automatisch in de cache op en vernieuwt deze het, zodat alleen wanneer nodig een nieuw token wordt opgehaald bij Microsoft Entra ID. Zie Beveiligingstokens voor meer informatie over tokens in Microsoft Entra ID.

Tip

Gebruik DefaultAzureCredentialvoor de meeste scenario's . Er worden automatisch meerdere verificatiemethoden (beheerde identiteit, omgevingsvariabelen, aanmeldingen voor ontwikkelaarshulpprogramma's enzovoort) geprobeerd, zodat dezelfde code werkt of uw app lokaal wordt uitgevoerd tijdens de ontwikkeling, op Azure of on-premises. Zie Authenticate .NET apps en Authenticate Python apps voor hulp bij het kiezen van de juiste referentie.

Codevoorbeeld: Verifiëren bij Azure Batch vanuit .NET

In dit voorbeeld wordt Azure.Compute.Batch gebruikt met de bibliotheek Azure.Identity.

  1. Installeer de nuGet-pakketten Azure.Compute.Batch en Azure.Identity.

  2. Declareer de volgende using instructies in uw code:

    using Azure.Compute.Batch;
    using Azure.Core;
    using Azure.Identity;
    
  3. Raadpleeg het eindpunt van uw Batch-account:

    private const string BatchAccountUrl = "https://<myaccount>.<mylocation>.batch.azure.com";
    
  4. Maak een referentie en geef deze door aan de BatchClient constructor. Gebruik de client voor volgende bewerkingen voor de Batch-service.

    Aanbeommen: DefaultAzureCredential werkt lokaal met aanmeldingen van hulpprogramma's voor ontwikkelaars (Azure CLI, Visual Studio, Visual Studio Code) en gebruikt automatisch beheerde identiteit wanneer de app wordt uitgevoerd op Azure:

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

    Interactieve (geïntegreerde) aanmelding : vraagt een gebruiker zich aan te melden via de systeembrowser. Gebruik deze optie wanneer uw app een specifieke gebruiker interactief moet verifiëren:

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

    Service-principal (clientgeheim) - gebruik voor apps zonder toezicht die worden geverifieerd met een app-registratiegeheim:

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

    Managed identity : gebruik deze optie wanneer uw app wordt uitgevoerd op een Azure resource (zoals een VM, App Service of Container App) met een door het systeem toegewezen of door de gebruiker toegewezen beheerde identiteit:

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

Codevoorbeeld: Verifiëren bij Azure Batch vanuit Python

In dit voorbeeld wordt de azure-batch-client met referenties uit de azure-identity-bibliotheek gebruikt. De verouderde azure.common.credentials.ServicePrincipalCredentials klasse is afgeschaft. Gebruik azure-identity in plaats daarvan referenties.

  1. Installeer de vereiste pakketten:

    pip install azure-batch azure-identity
    
  2. Raadpleeg het eindpunt van uw Batch-account en het Batch-resourcebereik:

    BATCH_ACCOUNT_URL = "https://<myaccount>.<mylocation>.batch.azure.com"
    BATCH_SCOPE = "https://batch.core.windows.net/.default"
    
  3. Maak aanmeldgegevens en geef deze door aan de BatchServiceClient.

    Aanbeommend: DefaultAzureCredential werkt lokaal met aanmeldingen van hulpprogramma's voor ontwikkelaars en gebruikt automatisch beheerde identiteit wanneer deze wordt uitgevoerd op Azure:

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

    Interactieve (geïntegreerde) aanmelding : vraagt een gebruiker zich aan te melden via de systeembrowser:

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

    service-principal (clientsecret) — gebruiken voor toepassingen zonder toezicht:

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

    Beheerde identiteit: gebruik deze optie wanneer uw app wordt uitgevoerd op een Azure-resource met een beheerde identiteit:

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

Volgende stappen