Sdílet prostřednictvím


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 s více tenanty. Azure používá Microsoft Entra ID k ověřování vlastních zákazníků, správců služeb a uživatelů organizace.

Tento článek popisuje dva způsoby použití ověřování Microsoft Entra se službou Azure Batch:

  • Integrované ověřování ověřuje uživatele, který pracuje s aplikací. Aplikace shromažďuje přihlašovací údaje uživatele a tyto přihlašovací údaje používá k autorizaci přístupu k prostředkům služby Batch.

  • Instanční objekt ověřuje bezobslužnou aplikaci. Instanční objekt definuje zásady a oprávnění pro aplikaci a představuje aplikaci pro přístup k prostředkům batch za běhu.

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

Shromáždění 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í ID Microsoft Entra, použijte tento koncový bod s ID tenanta, který identifikuje tenanta Microsoft Entra, který se má použít k 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.

Screenshot of the Tenant ID in the Azure portal.

Důležité

  • Koncový bod Microsoft Entra pro konkrétního tenanta se vyžaduje při ověřování pomocí instančního objektu.

  • Při ověřování pomocí integrovaného ověřování se doporučuje koncový bod specifický pro tenanta, ale volitelný. 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 okoncovýchch

Koncový bod prostředku 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.

Registrace aplikace v tenantovi

Prvním krokem při použití ověřování Microsoft Entra je registrace aplikace v tenantovi Microsoft Entra. Po registraci aplikace můžete z kódu volat knihovnu MSAL (Microsoft Authentication Library ). KNIHOVNA MSAL poskytuje rozhraní API pro ověřování pomocí ID Microsoft Entra z vaší aplikace. Registrace aplikace se vyžaduje bez ohledu na to, jestli používáte integrované ověřování nebo instanční objekt.

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 naleznete v tématu Objekty aplikace a instanční objekty 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.

Screenshot of the Application ID shown in the 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 Oprávnění rozhraní API požadavku 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 instančního objektu

K ověření aplikace, která běží bezobslužně, použijete instanční objekt. Když se vaše aplikace ověří pomocí instančního objektu, odešle ID aplikace 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. Podrobný postup najdete v tématu Přiřazení rolí Azure pomocí webu Azure Portal.

  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 roli Přispěvatel nebo Čtenář pro vaši aplikaci.
  5. Vyberte kartu Členové a v části Členové vyberte Vybrat členy.
  6. Na obrazovce Vybrat členy vyhledejte a vyberte aplikaci a pak vyberte 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řiřazení vlastní role

Vlastní role uděluje uživateli podrobné oprávnění k odesílání úloh, úkolů a dalších akcí. Pomocí vlastních rolí můžete uživatelům zabránit v provádění operací, které mají vliv na náklady, jako je vytváření fondů nebo úpravy uzlů.

Pomocí vlastní role můžete udělit nebo odepřít oprávnění k uživateli, skupině nebo instančnímu objektu Microsoftu pro následující operace RBAC služby Azure Batch:

  • Microsoft.Batch/batchAccounts/pools/write
  • Microsoft.Batch/batchAccounts/pools/delete
  • Microsoft.Batch/batchAccounts/pools/read
  • Microsoft.Batch/batchAccounts/jobSchedules/write
  • Microsoft.Batch/batchAccounts/jobSchedules/delete
  • Microsoft.Batch/batchAccounts/jobSchedules/read
  • Microsoft.Batch/batchAccounts/jobs/write
  • Microsoft.Batch/batchAccounts/jobs/delete
  • Microsoft.Batch/batchAccounts/jobs/read
  • Microsoft.Batch/batchAccounts/certificates/write
  • Microsoft.Batch/batchAccounts/certificates/delete
  • Microsoft.Batch/batchAccounts/certificates/read
  • Microsoft.Batch/batchAccounts/read pro jakoukoli operaci čtení
  • Microsoft.Batch/batchAccounts/listKeys/action pro libovolnou operaci

Vlastní role jsou určené uživatelům ověřeným ID Microsoft Entra, ne pro přihlašovací údaje účtu sdíleného klíče Batch. Přihlašovací údaje účtu Batch poskytují úplná oprávnění k účtu Batch. Úlohy, které používají automatické zařazování , vyžadují oprávnění na úrovni fondu.

Poznámka:

V poli je třeba zadat actions určitá přiřazení rolí, zatímco jiné musí být v poli zadány dataActions . Další informace najdete v tématu Operace poskytovatele prostředků Azure.

Následující příklad ukazuje definici vlastní role azure Batch:

{
 "properties":{
    "roleName":"Azure Batch Custom Job Submitter",
    "type":"CustomRole",
    "description":"Allows a user to submit jobs to Azure Batch but not manage pools",
    "assignableScopes":[
      "/subscriptions/88888888-8888-8888-8888-888888888888"
    ],
    "permissions":[
      {
        "actions":[
          "Microsoft.Batch/*/read",
          "Microsoft.Authorization/*/read",
          "Microsoft.Resources/subscriptions/resourceGroups/read",
          "Microsoft.Support/*",
          "Microsoft.Insights/alertRules/*"
        ],
        "notActions":[

        ],
        "dataActions":[
          "Microsoft.Batch/batchAccounts/jobs/*",
          "Microsoft.Batch/batchAccounts/jobSchedules/*"
        ],
        "notDataActions":[

        ]
      }
    ]
  }
}

Další informace o vytvoření vlastní role najdete v tématu Vlastní role Azure.

Příklady kódu

Příklady kódu v této části ukazují, jak ověřit pomocí ID Microsoft Entra pomocí integrovaného ověřování nebo instančního objektu. Příklady kódu používají .NET a Python, ale koncepty jsou podobné pro jiné jazyky.

Poznámka:

Platnost ověřovacího tokenu Microsoft Entra vyprší po jedné hodině. Při použití dlouhodobého objektu BatchClient je nejlepší získat token z MSAL na každém požadavku, abyste měli jistotu, že máte vždy platný token.

Uděláte to v .NET tak, že napíšete metodu, která načte token z ID Microsoft Entra a předá tuto metodu objektu BatchTokenCredentials jako delegát. Každý požadavek služby Batch volá metodu delegáta, aby se zajistilo poskytnutí platného tokenu. Ve výchozím nastavení msAL ukládá tokeny do mezipaměti, takže nový token se načte z Microsoft Entra-only v případě potřeby. Další informace otokench

Příklad kódu: Použití integrovaného ověřování Microsoft Entra se službou Batch .NET

Ověření pomocí integrovaného ověřování ze služby Batch .NET:

  1. Nainstalujte azure Batch .NET a balíčky NUGet MSAL.

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

    using Microsoft.Azure.Batch;
    using Microsoft.Azure.Batch.Auth;
    using Microsoft.Identity.Client;
    
  3. Odkazujte na koncový bod Microsoft Entra včetně ID tenanta. ID tenanta můžete získat ze stránky Přehled ID Microsoft Entra na webu Azure Portal.

    private const string AuthorityUri = "https://login.microsoftonline.com/<tenant-id>";
    
  4. Odkaz na koncový bod prostředku služby Batch:

    private const string BatchResourceUri = "https://batch.core.windows.net/";
    
  5. Odkaz na účet Batch:

    private const string BatchAccountUrl = "https://<myaccount>.<mylocation>.batch.azure.com";
    
  6. Zadejte ID aplikace (klienta) pro vaši aplikaci. ID aplikace můžete získat ze stránky Přehled vaší aplikace na webu Azure Portal.

    private const string ClientId = "<application-id>";
    
  7. Zadejte identifikátor URI přesměrování, který jste zadali při registraci aplikace.

    private const string RedirectUri = "https://<redirect-uri>";
    
  8. Napište metodu zpětného volání pro získání ověřovacího tokenu z ID Microsoft Entra. Následující příklad volá MSAL k ověření uživatele, který pracuje s aplikací. Metoda MSAL IConfidentialClientApplication.AcquireTokenByAuthorizationCode vyzve uživatele k zadání přihlašovacích údajů. Aplikace bude pokračovat, jakmile uživatel poskytne přihlašovací údaje.

    Parametr authorizationCode je autorizační kód získaný z autorizačního serveru po ověření uživatele. WithRedirectUri určuje identifikátor URI přesměrování, na který autorizační server přesměruje uživatele po ověření.

    public static async Task<string> GetTokenUsingAuthorizationCode(string authorizationCode, string redirectUri, string[] scopes)
    {
        var app = ConfidentialClientApplicationBuilder.Create(ClientId)
                    .WithAuthority(AuthorityUri)
                    .WithRedirectUri(RedirectUri)
                    .Build();
    
        var authResult = await app.AcquireTokenByAuthorizationCode(scopes, authorizationCode).ExecuteAsync();
        return authResult.AccessToken;
    }
    
  9. Tuto metodu zavolejte následujícím kódem a nahraďte <authorization-code> autorizačním kódem získaným z autorizačního serveru. Obor .default zajišťuje, že uživatel má oprávnění pro přístup ke všem oborům prostředku.

    
    var token = await GetTokenUsingAuthorizationCode("<authorization-code>", "RedirectUri", new string[] { "BatchResourceUri/.default" });
    
  10. Vytvořte objekt BatchTokenCredentials, který přebírá delegáta jako parametr. Pomocí těchto přihlašovacích údajů otevřete objekt BatchClient . Pak použijte objekt BatchClient pro následné operace se službou Batch:

    public static void PerformBatchOperations()
    {
        Func<Task<string>> tokenProvider = () => GetTokenUsingAuthorizationCode();
    
        using (var client = BatchClient.Open(new BatchTokenCredentials(BatchAccountUrl, tokenProvider)))
        {
            client.JobOperations.ListJobs();
        }
    }
    

Příklad kódu: Použití instančního objektu Microsoft Entra se službou Batch .NET

Ověření pomocí instančního objektu ze služby Batch .NET:

  1. Nainstalujte azure Batch .NET a balíčky NUGet MSAL.

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

    using Microsoft.Azure.Batch;
    using Microsoft.Azure.Batch.Auth;
    using Microsoft.Identity.Client;
    
  3. Odkazujte na koncový bod Microsoft Entra včetně ID tenanta. Při použití instančního objektu musíte zadat koncový bod specifický pro tenanta. ID tenanta můžete získat ze stránky Přehled ID Microsoft Entra na webu Azure Portal.

    private const string AuthorityUri = "https://login.microsoftonline.com/<tenant-id>";
    
  4. Odkaz na koncový bod prostředku služby Batch:

    private const string BatchResourceUri = "https://batch.core.windows.net/";
    
  5. Odkaz na účet Batch:

    private const string BatchAccountUrl = "https://<myaccount>.<mylocation>.batch.azure.com";
    
  6. Zadejte ID aplikace (klienta) pro vaši aplikaci. ID aplikace můžete získat ze stránky Přehled vaší aplikace na webu Azure Portal.

    private const string ClientId = "<application-id>";
    
  7. Zadejte tajný klíč, který jste zkopírovali z webu Azure Portal.

    private const string ClientKey = "<secret-key>";
    
  8. Napište metodu zpětného volání pro získání ověřovacího tokenu z ID Microsoft Entra. Následující metoda ConfidentialClientApplicationBuilder.Create volá knihovnu MSAL pro bezobslužné ověřování.

    public static async Task<string> GetAccessToken(string[] scopes)
    {
        var app = ConfidentialClientApplicationBuilder.Create(clientId)
                    .WithClientSecret(ClientKey)
                    .WithAuthority(new Uri(AuthorityUri))
                    .Build();
    
        var result = await app.AcquireTokenForClient(scopes).ExecuteAsync();
        return result.AccessToken;
    }
    
  9. Tuto metodu zavolejte pomocí následujícího kódu. Obor .default zajišťuje, že aplikace má oprávnění pro přístup ke všem oborům prostředku.

       var token = await GetAccessToken(new string[] { "BatchResourceId/.default" });
    
  10. Vytvořte objekt BatchTokenCredentials, který přebírá delegáta jako parametr. Pomocí těchto přihlašovacích údajů otevřete objekt BatchClient . Pak použijte objekt BatchClient pro následné operace se službou Batch:

    public static void PerformBatchOperations()
    {
        Func<Task<string>> tokenProvider = () => GetAccessToken();
    
        using (var client = BatchClient.Open(new BatchTokenCredentials(BatchAccountUrl, tokenProvider)))
        {
            client.JobOperations.ListJobs();
        }
    }
    

Příklad kódu: Použití instančního objektu Microsoft Entra se službou Batch Python

Ověření pomocí instančního objektu ze služby Batch Python:

  1. Nainstalujte moduly Azure-Batch a Azure-common Python.

  2. Odkaz na moduly:

    from azure.batch import BatchServiceClient
    from azure.common.credentials import ServicePrincipalCredentials
    
  3. Pokud chcete použít instanční objekt, zadejte koncový bod specifický pro tenanta. ID tenanta můžete získat na stránce Přehled ID Microsoft Entra nebo na stránce Vlastnosti na webu Azure Portal.

    TENANT_ID = "<tenant-id>"
    
  4. Odkaz na koncový bod prostředku služby Batch:

    RESOURCE = "https://batch.core.windows.net/"
    
  5. Odkaz na účet Batch:

    BATCH_ACCOUNT_URL = "https://<myaccount>.<mylocation>.batch.azure.com"
    
  6. Zadejte ID aplikace (klienta) pro vaši aplikaci. ID aplikace můžete získat ze stránky Přehled vaší aplikace na webu Azure Portal.

    CLIENT_ID = "<application-id>"
    
  7. Zadejte tajný klíč, který jste zkopírovali z webu Azure Portal:

    SECRET = "<secret-key>"
    
  8. Vytvořte objekt ServicePrincipalCredentials :

    credentials = ServicePrincipalCredentials(
        client_id=CLIENT_ID,
        secret=SECRET,
        tenant=TENANT_ID,
        resource=RESOURCE
    )
    
  9. Pomocí přihlašovacích údajů instančního objektu otevřete objekt BatchServiceClient . Pak použijte objekt BatchServiceClient pro následné operace se službou Batch.

        batch_client = BatchServiceClient(
        credentials,
        batch_url=BATCH_ACCOUNT_URL
    )
    

Příklad vytvoření klienta Batch ověřeného pomocí tokenu Microsoft Entra najdete v ukázce nasazení vlastní image služby Azure Batch pomocí skriptu Pythonu.

Další kroky