Ověřování služeb Azure Batch pomocí Microsoft Entra ID

Azure Batch podporuje ověřování pomocí Microsoft Entra ID, cloudového adresáře a služby správy identit od Microsoftu. Azure používá Microsoft Entra ID k ověřování vlastních zákazníků, správců služeb a uživatelů organizace.

Doporučeným způsobem ověřování Azure Batch aplikací je použití klientské knihovny Azure Identity, poskytuje třídy ověřování založené na tokenech (například DefaultAzureCredential, ManagedIdentityCredential, ClientSecretCredential a InteractiveBrowserCredential), které fungují konzistentně bez ohledu na to, jestli vaše aplikace běží místně, Azure nebo místně. Přehled doporučených strategií ověřování najdete tady:

Tento článek popisuje dva běžné scénáře ověřování v Azure Batch pomocí Microsoft Entra ID:

  • Integrované (interaktivní) ověřování ověřuje uživatele, který pracuje s aplikací. Použijte přihlašovací údaje, jako jsou InteractiveBrowserCredential nebo DefaultAzureCredential (které může využívat přihlášení z vývojářských nástrojů, jako jsou Azure CLI, Visual Studio a Visual Studio Code).

  • Ověřování pomocí instančního objektu služby nebo spravované identity slouží k ověřování bezobslužné aplikace. Pro aplikace hostované na Azure použijte přihlašovací údaje, jako je ManagedIdentityCredential nebo ClientSecretCredential / ClientCertificateCredential pro aplikace, které se ověřují tajným kódem nebo certifikátem registrované aplikace.

Další informace o Microsoft Entra ID naleznete v dokumentaci Microsoft Entra.

Sběr koncových bodů pro ověřování

Pokud chcete ověřovat aplikace Batch pomocí MICROSOFT Entra ID, musíte do kódu zahrnout koncový bod Microsoft Entra a koncový bod prostředku Batch.

Koncový bod Microsoft Entra

Základní koncový bod autority Microsoft Entra je https://login.microsoftonline.com/. Pokud chcete provést ověření pomocí Microsoft Entra ID, použijte tento koncový bod s ID tenanta Microsoft Entra, který se má použít pro ověřování.

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

ID tenanta můžete získat z hlavní stránky ID Microsoft Entra na webu Azure Portal. V levém navigačním panelu můžete také vybrat vlastnosti a zobrazit ID tenanta na stránce Vlastnosti.

Snímek obrazovky s ID tenanta na webu Azure Portal

Důležité

  • Koncový bod Microsoft Entra určený pro konkrétního tenanta je vyžadován při ověřování pomocí služebního hlavního jména.

  • Při ověřování pomocí integrovaného ověřování se doporučuje, ale je volitelné, použít koncový bod specifický pro nájemce. Můžete také použít společný koncový bod Microsoft Entra k poskytnutí obecného rozhraní pro shromažďování přihlašovacích údajů, pokud není zadaný konkrétní tenant. Běžným koncovým bodem je https://login.microsoftonline.com/common.

Další informace o koncových bodech Microsoft Entra najdete v části Ověřování vs. autorizace.

Koncový bod zdroje Batch

Pomocí koncového bodu https://batch.core.windows.net/ prostředku Batch získejte token pro ověřování požadavků ve službě Batch.

Zaregistrujte svou aplikaci u tenantu

Prvním krokem při použití ověřování Microsoft Entra je registrace aplikace v tenantovi Microsoft Entra. Po registraci aplikace můžete ve svém kódu použít přihlašovací údaje z knihovny Azure Identity k získání tokenů Microsoft Entra pro službu Batch. Registrace vaší aplikace je vyžadována pro toky důvěrného klienta (instančního objektu služby) a pro jakýkoli interaktivní tok, který vyžaduje registraci aplikace specifickou pro tenanta.

Tip

Pokud váš kód používá DefaultAzureCredential a přihlásí se prostřednictvím vývojářského nástroje (Azure CLI, Azure PowerShell, Visual Studio nebo Visual Studio Code) nebo spravované identity, nemusíte registrovat samostatnou aplikaci – přihlašovací údaje používají identitu, která je už v daném prostředí nakonfigurovaná.

Při registraci aplikace zadáte informace o vaší aplikaci do Microsoft Entra ID. Microsoft Entra ID pak poskytuje ID aplikace, označované také jako ID klienta, které používáte k přidružení aplikace k Microsoft Entra ID za běhu. Další informace o ID aplikace najdete v tématu Objekty aplikace a objekty hlavních služeb v Microsoft Entra ID.

Pokud chcete zaregistrovat aplikaci Batch, postupujte podle pokynů v části Registrace aplikace.

Po registraci aplikace se id aplikace (klienta) zobrazí na stránce Přehled aplikace.

Snímek obrazovky s ID aplikace zobrazené na webu Azure Portal

Konfigurace integrovaného ověřování

Pokud se chcete ověřit pomocí integrovaného ověřování, musíte aplikaci udělit oprávnění pro připojení k rozhraní API služby Batch. Tento krok umožňuje vaší aplikaci používat ID Microsoft Entra k ověřování volání rozhraní API služby Batch.

Po registraci aplikace následujícím postupem udělte aplikaci přístup ke službě Batch:

  1. Na webu Azure Portal vyhledejte a vyberte registrace aplikací.
  2. Na stránce Registrace aplikací vyberte aplikaci.
  3. Na stránce vaší aplikace vyberte v levém navigačním panelu oprávnění rozhraní API.
  4. Na stránce oprávnění rozhraní API vyberte Přidat oprávnění.
  5. Na stránce Požadovat oprávnění rozhraní API vyberte Azure Batch.
  6. Na stránce Azure Batch v části Vybrat oprávnění zaškrtněte políčko vedle user_impersonation a pak vyberte Přidat oprávnění.

Na stránce oprávnění rozhraní API se teď zobrazuje, že vaše aplikace Microsoft Entra má přístup k Microsoft Graphu i službě Azure Batch. Oprávnění se Microsoft Graphu udělí automaticky při registraci aplikace v Microsoft Entra ID.

Konfigurace služebního principalu

K ověření aplikace, která běží bezobslužně, použijete služebního principála. Když se vaše aplikace ověří pomocí služebního principála, odešle jak ID aplikace, tak i tajný klíč do Microsoft Entra ID.

Po registraci aplikace nakonfigurujte instanční objekt pomocí následujícího postupu na webu Azure Portal:

  1. Požádejte o tajný kód pro vaši aplikaci.
  2. Přiřaďte aplikaci řízení přístupu na základě role v Azure (Azure RBAC).

Vyžádání tajného kódu pro vaši aplikaci

Pomocí následujícího postupu vytvořte a zkopírujte tajný klíč, který chcete použít v kódu:

  1. Na webu Azure Portal vyhledejte a vyberte registrace aplikací.
  2. Na stránce Registrace aplikací vyberte aplikaci.
  3. Na stránce aplikace vyberte v levém navigačním panelu certifikáty a tajné kódy .
  4. Na stránce Certifikáty a tajné kódy vyberte Nový tajný klíč klienta.
  5. Na stránce Přidat tajný klíč klienta zadejte popis a vyberte dobu vypršení platnosti tajného klíče.
  6. Výběrem možnosti Přidat vytvořte tajný klíč a zobrazte ho na stránce Certifikáty a tajné kódy .
  7. Zkopírujte hodnotu tajného kódu na bezpečné místo, protože po opuštění této stránky k ní nebudete mít přístup znovu. Pokud ztratíte přístup ke svému klíči, můžete vygenerovat nový.

Přiřazení Azure RBAC k aplikaci

Pomocí těchto kroků přiřaďte vaší aplikaci roli Azure RBAC. Další informace najdete v tématu Řízení přístupu na základě role pro službu Azure Batch.

  1. Na webu Azure Portal přejděte k účtu Batch, který vaše aplikace používá.
  2. V levém navigačním panelu vyberte Řízení přístupu (IAM ).
  3. Na stránce Řízení přístupu (IAM) vyberte Přidat přiřazení role.
  4. Na stránce Přidat přiřazení role vyberte kartu Role a pak vyberte jednu z vestavěných RBAC rolí Azure Batch pro vaši aplikaci.
  5. Vyberte kartu Členové a v části Členové vyberte Vybrat členy.
  6. Na obrazovce Vybrat členy vyhledejte a vyberte svou aplikaci a poté zvolte Vybrat.
  7. Na stránce Přidat přiřazení role vyberte Zkontrolovat a přiřadit.

Vaše aplikace by se teď měla zobrazit na kartě Přiřazení rolí na stránce Řízení přístupu (IAM) účtu Batch.

Příklady kódu

Příklady kódu v této části ukazují, jak ověřit Azure Batch pomocí Microsoft Entra ID pomocí přihlašovacích údajů z knihovny identit Azure. Příklady používají .NET a Python, ale stejné vzory platí i pro jiné jazyky Azure SDK.

Poznámka:

Platnost ověřovacího tokenu Microsoft Entra vyprší po jedné hodině. Pokud používáte objekt BatchClient s dlouhou životností, vámi zadané Azure IdentityTokenCredential transparentně ukládá token do mezipaměti a obnovuje ho, takže se nový token z Microsoft Entra ID získá pouze v případě potřeby. Pro více informací o tokenech v Microsoft Entra ID, viz Security tokens.

Tip

Pro většinu scénářů použijte DefaultAzureCredential. Automaticky zkouší více metod ověřování (spravovaná identita, proměnné prostředí, přihlášení vývojářských nástrojů atd.), takže stejný kód funguje bez ohledu na to, jestli se vaše aplikace spouští místně během vývoje, v Azure nebo v místním prostředí. Pokyny k výběru správných přihlašovacích údajů najdete v tématech Ověřování aplikací .NET a Ověřování aplikací v Pythonu.

Příklad kódu: Ověření vůči Azure Batch pomocí .NET

Tento příklad používá Azure.Compute.Batch společně s knihovnou Azure.Identity.

  1. Nainstalujte balíčky NuGet Azure.Compute.Batch a Azure.Identity.

  2. Deklarujte v kódu následující using příkazy:

    using Azure.Compute.Batch;
    using Azure.Core;
    using Azure.Identity;
    
  3. Informace o koncovém bodu účtu Batch:

    private const string BatchAccountUrl = "https://<myaccount>.<mylocation>.batch.azure.com";
    
  4. Vytvořte přihlašovací údaje a předejte je konstruktoru BatchClient . Použijte klienta pro následné operace se službou Batch.

    Pohodné znění: DefaultAzureCredential – funguje místně s přihlášeními vývojářských nástrojů (Azure CLI, Visual Studio, Visual Studio Code) a používá spravovanou identitu automaticky při spuštění aplikace na Azure:

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

    Interaktivní (integrované) přihlášení – vyzve uživatele, aby se přihlásil přes systémový prohlížeč. Tuto možnost použijte, když aplikace musí interaktivně ověřit konkrétního uživatele:

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

    Instanční objekt (tajný klíč klienta) – používá se pro bezobslužné aplikace, které se ověřují tajným kódem registrace aplikace:

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

    Spravovaná identita – použijte, když vaše aplikace běží na prostředku Azure (jako je virtuální počítač, App Service nebo kontejnerová aplikace), která má spravovanou identitu přiřazenou systémem nebo přiřazenou uživatelem:

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

Příklad kódu: Ověření pro Azure Batch z Python

Tento příklad používá klienta azure-batch s přihlašovacími údaji z knihovny azure-identity . Starší azure.common.credentials.ServicePrincipalCredentials třída je zastaralá. Místo toho použijte azure-identity přihlašovací údaje.

  1. Nainstalujte požadované balíčky:

    pip install azure-batch azure-identity
    
  2. Použijte koncový bod svého účtu Batch a rozsah prostředků služby Batch:

    BATCH_ACCOUNT_URL = "https://<myaccount>.<mylocation>.batch.azure.com"
    BATCH_SCOPE = "https://batch.core.windows.net/.default"
    
  3. Vytvořte přihlašovací údaje a předejte je do BatchServiceClient.

    Doporučeno: DefaultAzureCredential — funguje místně s přihlášeními do vývojářských nástrojů a při spuštění v Azure automaticky používá spravovanou identitu:

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

    Interaktivní (integrované) přihlášení – vyzve uživatele, aby se přihlásil přes systémový prohlížeč:

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

    Instanční objekt aplikace (tajný klíč klienta) – používá se pro bezobslužné aplikace:

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

    Spravovaná identita – použijte ji, když vaše aplikace běží na prostředku Azure se spravovanou identitou:

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

Další kroky