Azure Batch-szolgáltatások hitelesítése a Microsoft Entra-azonosítóval

Az Azure Batch a Microsoft Entra ID-val, a Microsoft több-bérlős felhőalapú címtárával és identitáskezelési szolgáltatásával támogatja a hitelesítést. Az Azure a Microsoft Entra-azonosítóval hitelesíti saját ügyfeleit, szolgáltatásadminisztrátorait és szervezeti felhasználóit.

Ez a cikk a Microsoft Entra-hitelesítés Azure Batch-lel való használatának két módját ismerteti:

  • Az integrált hitelesítés hitelesíti az alkalmazást használó felhasználókat. Az alkalmazás összegyűjti a felhasználó hitelesítő adatait, és ezeket a hitelesítő adatokat használja a Batch-erőforrásokhoz való hozzáférés engedélyezéséhez.

  • A szolgáltatásnév hitelesít egy felügyelet nélküli alkalmazást. A szolgáltatásnév határozza meg az alkalmazás házirendjét és engedélyeit, és az alkalmazást jelöli a Batch-erőforrások futásidőben való eléréséhez.

A Microsoft Entra-azonosítóval kapcsolatos további információkért tekintse meg a Microsoft Entra dokumentációját.

Végpontok összegyűjtése hitelesítéshez

A Batch-alkalmazások Microsoft Entra-azonosítóval való hitelesítéséhez be kell vonnia a Microsoft Entra-végpontot és a Batch-erőforrásvégpontot a kódba.

Microsoft Entra-végpont

A Microsoft Entra-szolgáltató alapvégpontja a https://login.microsoftonline.com/. A Microsoft Entra-azonosítóval való hitelesítéshez használja ezt a végpontot azzal a bérlőazonosítóval , amely azonosítja a Hitelesítéshez használni kívánt Microsoft Entra-bérlőt:

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

A bérlőazonosítót az Azure Portal fő Microsoft Entra-azonosító oldaláról szerezheti be. A bal oldali navigációs sávon a Tulajdonságok lehetőséget is kiválaszthatja, és megtekintheti a Bérlőazonosítót a Tulajdonságok lapon.

Screenshot of the Tenant ID in the Azure portal.

Fontos

  • A bérlőspecifikus Microsoft Entra-végpontra akkor van szükség, ha szolgáltatásnévvel hitelesít.

  • Ha integrált hitelesítéssel hitelesít, a bérlőspecifikus végpont ajánlott, de nem kötelező. A Microsoft Entra gyakori végpontját is használhatja egy általános hitelesítőadat-gyűjtési felület biztosításához, ha egy adott bérlő nincs megadva. A gyakori végpont a .https://login.microsoftonline.com/common

További információ a Microsoft Entra-végpontokról: Hitelesítés és engedélyezés.

Batch-erőforrásvégpont

A Batch-erőforrásvégpont https://batch.core.windows.net/ használatával jogkivonatot szerezhet be a Batch szolgáltatásnak küldött kérések hitelesítéséhez.

Alkalmazás regisztrálása bérlővel

A Microsoft Entra-hitelesítés használatának első lépése az alkalmazás regisztrálása egy Microsoft Entra-bérlőben. Az alkalmazás regisztrálása után meghívhatja a Microsoft Authentication Libraryt (MSAL) a kódból. Az MSAL egy API-t biztosít az alkalmazás Microsoft Entra-azonosítójával való hitelesítéshez. Az alkalmazás regisztrálása szükséges, függetlenül attól, hogy integrált hitelesítést vagy szolgáltatásnevet használ.

Az alkalmazás regisztrálásakor az alkalmazással kapcsolatos információkat a Microsoft Entra ID-nak adja meg. A Microsoft Entra ID ezután egy alkalmazásazonosítót, más néven ügyfél-azonosítót biztosít, amellyel az alkalmazást futtatókörnyezetben társíthatja a Microsoft Entra-azonosítóval. Az alkalmazásazonosítóval kapcsolatos további információkért tekintse meg az alkalmazás- és szolgáltatásnév-objektumokat a Microsoft Entra ID-ban.

A Batch-alkalmazás regisztrálásához kövesse az alkalmazás regisztrálása című szakasz lépéseit.

Az alkalmazás regisztrálása után megjelenik az alkalmazás (ügyfél) azonosítója az alkalmazás Áttekintés lapján.

Screenshot of the Application ID shown in the Azure portal.

Integrált hitelesítés konfigurálása

Az integrált hitelesítéssel történő hitelesítéshez engedélyt kell adnia az alkalmazásnak a Batch szolgáltatás API-hoz való csatlakozáshoz. Ez a lépés lehetővé teszi, hogy az alkalmazás a Microsoft Entra ID-val hitelesítse a Batch szolgáltatás API-jának hívásait.

Az alkalmazás regisztrálása után kövesse az alábbi lépéseket, hogy hozzáférést biztosítson az alkalmazásnak a Batch szolgáltatáshoz:

  1. Az Azure Portalon keresse meg és válassza ki az alkalmazásregisztrációkat.
  2. A Alkalmazásregisztrációk lapon válassza ki az alkalmazást.
  3. Az alkalmazás oldalán válassza ki az API-engedélyeket a bal oldali navigációs sávon.
  4. Az API engedélyoldalán válassza az Engedély hozzáadása lehetőséget.
  5. A Kérelem API engedélyoldalán válassza az Azure Batch lehetőséget.
  6. Az Azure Batch lap Engedélyek kiválasztása területén jelölje be a user_impersonation melletti jelölőnégyzetet, majd válassza az Engedélyek hozzáadása lehetőséget.

Az API engedélyoldala most azt mutatja, hogy a Microsoft Entra-alkalmazás a Microsoft Graphhoz és az Azure Batchhez is hozzáfér. A Microsoft Graph automatikusan megkapja az engedélyeket, amikor regisztrál egy alkalmazást a Microsoft Entra-azonosítóval.

Egyszerű szolgáltatás konfigurálása

Felügyelet nélkül futó alkalmazás hitelesítéséhez szolgáltatásnevet kell használnia. Amikor az alkalmazás egy szolgáltatásnévvel hitelesít, az alkalmazásazonosítót és a titkos kulcsot is elküldi a Microsoft Entra-azonosítónak.

Az alkalmazás regisztrálása után kövesse az alábbi lépéseket az Azure Portalon egy szolgáltatásnév konfigurálásához:

  1. Titkos kulcs kérése az alkalmazáshoz.
  2. Azure szerepköralapú hozzáférés-vezérlés (Azure RBAC) hozzárendelése az alkalmazáshoz.

Titkos kód kérése az alkalmazáshoz

A kódban használni kívánt titkos kulcs létrehozásához és másolásához kövesse az alábbi lépéseket:

  1. Az Azure Portalon keresse meg és válassza ki az alkalmazásregisztrációkat.
  2. A Alkalmazásregisztrációk lapon válassza ki az alkalmazást.
  3. Az alkalmazás oldalán válassza a Tanúsítványok > titkos kulcsok lehetőséget a bal oldali navigációs sávon.
  4. A Tanúsítványok > titkos kódok lapon válassza az Új ügyfélkód lehetőséget.
  5. Az Ügyfél titkos kódjának hozzáadása lapon adja meg a leírást, és válassza ki a titkos kód lejárati idejét.
  6. Válassza a Hozzáadás lehetőséget a titkos kód létrehozásához és megjelenítéséhez a Tanúsítványok > titkos kódok lapon.
  7. Másolja a titkos értéket egy biztonságos helyre, mert a lap elhagyása után nem fogja tudni újból elérni. Ha elveszíti a kulcshoz való hozzáférést, létrehozhat egy újat.

Azure RBAC hozzárendelése az alkalmazáshoz

Kövesse az alábbi lépéseket egy Azure RBAC-szerepkör alkalmazáshoz való hozzárendeléséhez. A részletes lépésekért lásd : Azure-szerepkörök hozzárendelése az Azure Portal használatával.

  1. Az Azure Portalon keresse meg az alkalmazás által használt Batch-fiókot.
  2. A bal oldali navigációs sávon válassza a Hozzáférés-vezérlés (IAM) lehetőséget.
  3. A Hozzáférés-vezérlés (IAM) lapon válassza a Szerepkör-hozzárendelés hozzáadása lehetőséget.
  4. A Szerepkör-hozzárendelés hozzáadása lapon válassza a Szerepkör lapot, majd válassza ki az alkalmazás közreműködői vagy olvasói szerepkörét.
  5. Válassza a Tagok lapot, és válassza a Tagok kijelölése lehetőséget a Tagok csoportban.
  6. A Tagok kijelölése képernyőn keresse meg és jelölje ki az alkalmazást, majd válassza a Kiválasztás lehetőséget.
  7. Válassza a Véleményezés + hozzárendelés lehetőséget a Szerepkör-hozzárendelés hozzáadása lapon.

Az alkalmazásnak most meg kell jelennie a Batch-fiók hozzáférés-vezérlési (IAM) lapjának Szerepkör-hozzárendelések lapján.

Egyéni szerepkör hozzárendelése

Az egyéni szerepkör részletes engedélyt ad a felhasználóknak feladatok, feladatok és egyebek beküldésére. Egyéni szerepkörök használatával megakadályozhatja, hogy a felhasználók olyan műveleteket hajtsanak végre, amelyek hatással vannak a költségekre, például készleteket hozhat létre vagy csomópontokat módosíthatnak.

Egyéni szerepkörrel engedélyeket adhat vagy tagadhat meg egy Microsoft Entra-felhasználó, -csoport vagy szolgáltatásnév számára az alábbi Azure Batch RBAC-műveletekhez:

  • 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, bármilyen olvasási művelethez
  • Microsoft.Batch/batchAccounts/listKeys/action, bármilyen művelethez

Az egyéni szerepkörök a Microsoft Entra-azonosítóval hitelesített felhasználókhoz tartoznak, nem a Batch megosztott kulcsú fiók hitelesítő adataihoz. A Batch-fiók hitelesítő adatai teljes engedélyt adnak a Batch-fióknak. Az automatikus készletet használó feladatok készletszintű engedélyeket igényelnek.

Megjegyzés:

Bizonyos szerepkör-hozzárendeléseket meg kell adni a actions mezőben, míg másokat a dataActions mezőben kell megadni. További információ: Azure-erőforrás-szolgáltatói műveletek.

Az alábbi példa egy Egyéni Azure Batch-szerepkördefiníciót mutat be:

{
 "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":[

        ]
      }
    ]
  }
}

Az egyéni szerepkörök létrehozásával kapcsolatos további információkért tekintse meg az Azure-ra vonatkozó egyéni szerepköröket.

Kódpéldák

Az ebben a szakaszban szereplő kód példák bemutatják, hogyan hitelesíthető a Microsoft Entra ID-val integrált hitelesítéssel vagy szolgáltatásnévvel. A példakódok a .NET-et és a Pythont használják, de a fogalmak hasonlóak más nyelvekhez.

Megjegyzés:

A Microsoft Entra hitelesítési jogkivonat egy óra elteltével lejár. Ha hosszú élettartamú BatchClient-objektumot használ, a legjobb, ha minden kéréshez jogkivonatot kér az MSAL-től, hogy mindig érvényes jogkivonattal rendelkezzen.

Ha ezt a .NET-ben szeretné elvégezni, írjon egy metódust, amely lekéri a jogkivonatot a Microsoft Entra-azonosítóból, és átadja ezt a metódust egy BatchTokenCredentials objektumnak meghatalmazottként. A Batch szolgáltatáshoz intézett minden kérés meghívja a delegálási metódust, hogy biztosítsa az érvényes jogkivonatot. Alapértelmezés szerint az MSAL gyorsítótárazza a jogkivonatokat, ezért szükség esetén egy új jogkivonatot kér le a Microsoft Entra-ból. A Microsoft Entra ID-jogkivonatokról további információt a Biztonsági jogkivonatok című témakörben talál.

Példa kódra: A Microsoft Entra integrált hitelesítésének használata a Batch .NET-tel

A Batch .NET-ből származó integrált hitelesítéssel történő hitelesítéshez:

  1. Telepítse az Azure Batch .NET-et és az MSAL NuGet-csomagokat.

  2. Deklarálja a következő using utasításokat a kódban:

    using Microsoft.Azure.Batch;
    using Microsoft.Azure.Batch.Auth;
    using Microsoft.Identity.Client;
    
  3. Hivatkozzon a Microsoft Entra-végpontra, beleértve a bérlőazonosítót is. A bérlőazonosítót az Azure Portal Microsoft Entra ID Áttekintés lapján szerezheti be.

    private const string AuthorityUri = "https://login.microsoftonline.com/<tenant-id>";
    
  4. Hivatkozás a Batch szolgáltatás erőforrásvégpontra:

    private const string BatchResourceUri = "https://batch.core.windows.net/";
    
  5. Hivatkozzon a Batch-fiókra:

    private const string BatchAccountUrl = "https://<myaccount>.<mylocation>.batch.azure.com";
    
  6. Adja meg az alkalmazás (ügyfél) azonosítóját. Az alkalmazásazonosítót az alkalmazás Áttekintés lapján, az Azure Portalon szerezheti be.

    private const string ClientId = "<application-id>";
    
  7. Adja meg az alkalmazás regisztrálásakor megadott átirányítási URI-t.

    private const string RedirectUri = "https://<redirect-uri>";
    
  8. Írjon visszahívási módszert a hitelesítési jogkivonat Microsoft Entra-azonosítóból való beszerzéséhez. Az alábbi példa meghívja az MSAL-t az alkalmazással kommunikáló felhasználó hitelesítésére. Az MSAL IConfidentialClientApplication.AcquireTokenByAuthorizationCode metódus kéri a felhasználótól a hitelesítő adatait. Az alkalmazás akkor lép tovább, ha a felhasználó megadja a hitelesítő adatokat.

    Az authorizationCode paraméter az engedélyezési kiszolgálótól a felhasználó hitelesítése után beszerzett engedélyezési kód. WithRedirectUri megadja azt az átirányítási URI-t, amelybe az engedélyezési kiszolgáló átirányítja a felhasználót a hitelesítés után.

    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. Hívja meg ezt a metódust a következő kóddal, és cserélje le <authorization-code> az engedélyezési kiszolgálótól beszerzett engedélyezési kódra. A .default hatókör biztosítja, hogy a felhasználó hozzáférhessen az erőforrás összes hatóköréhez.

    
    var token = await GetTokenUsingAuthorizationCode("<authorization-code>", "RedirectUri", new string[] { "BatchResourceUri/.default" });
    
  10. Hozzon létre egy BatchTokenCredentials objektumot, amely a meghatalmazottat paraméterként használja. Ezekkel a hitelesítő adatokkal nyisson meg egy BatchClient-objektumot . Ezután használja a BatchClient objektumot a Batch szolgáltatáson végzett további műveletekhez:

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

Példakód: Microsoft Entra szolgáltatásnév használata a Batch .NET-tel

Hitelesítés szolgáltatásnévvel a Batch .NET-ből:

  1. Telepítse az Azure Batch .NET-et és az MSAL NuGet-csomagokat.

  2. Deklarálja a következő using utasításokat a kódban:

    using Microsoft.Azure.Batch;
    using Microsoft.Azure.Batch.Auth;
    using Microsoft.Identity.Client;
    
  3. Hivatkozzon a Microsoft Entra-végpontra, beleértve a bérlőazonosítót is. Szolgáltatásnév használata esetén bérlőspecifikus végpontot kell megadnia. A bérlőazonosítót az Azure Portal Microsoft Entra ID Áttekintés lapján szerezheti be.

    private const string AuthorityUri = "https://login.microsoftonline.com/<tenant-id>";
    
  4. Hivatkozás a Batch szolgáltatás erőforrásvégpontra:

    private const string BatchResourceUri = "https://batch.core.windows.net/";
    
  5. Hivatkozzon a Batch-fiókra:

    private const string BatchAccountUrl = "https://<myaccount>.<mylocation>.batch.azure.com";
    
  6. Adja meg az alkalmazás (ügyfél) azonosítóját. Az alkalmazásazonosítót az alkalmazás Áttekintés lapján, az Azure Portalon szerezheti be.

    private const string ClientId = "<application-id>";
    
  7. Adja meg az Azure Portalról másolt titkos kulcsot.

    private const string ClientKey = "<secret-key>";
    
  8. Írjon visszahívási módszert a hitelesítési jogkivonat Microsoft Entra-azonosítóból való beszerzéséhez. A következő ConfidentialClientApplicationBuilder.Create metódus felügyelet nélküli hitelesítésre hívja meg az MSAL-t.

    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. Hívja meg ezt a metódust az alábbi kód használatával. A .default hatókör biztosítja, hogy az alkalmazás hozzáférhessen az erőforrás összes hatóköréhez.

       var token = await GetAccessToken(new string[] { "BatchResourceId/.default" });
    
  10. Hozzon létre egy BatchTokenCredentials objektumot, amely a meghatalmazottat paraméterként használja. Ezekkel a hitelesítő adatokkal nyisson meg egy BatchClient-objektumot . Ezután használja a BatchClient objektumot a Batch szolgáltatáson végzett további műveletekhez:

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

Példa kódra: Microsoft Entra szolgáltatásnév használata a Batch Pythonnal

Hitelesítés szolgáltatásnévvel a Batch Pythonból:

  1. Telepítse az azure-batch és az azure-common Python modulokat.

  2. Referencia a modulokra:

    from azure.batch import BatchServiceClient
    from azure.common.credentials import ServicePrincipalCredentials
    
  3. Szolgáltatásnév használatához adjon meg egy bérlőspecifikus végpontot. A bérlőazonosítót az Azure Portal Microsoft Entra ID Áttekintés lapján vagy Tulajdonságok lapján szerezheti be.

    TENANT_ID = "<tenant-id>"
    
  4. Hivatkozás a Batch szolgáltatás erőforrásvégpontra:

    RESOURCE = "https://batch.core.windows.net/"
    
  5. Hivatkozzon a Batch-fiókra:

    BATCH_ACCOUNT_URL = "https://<myaccount>.<mylocation>.batch.azure.com"
    
  6. Adja meg az alkalmazás (ügyfél) azonosítóját. Az alkalmazásazonosítót az alkalmazás Áttekintés lapján, az Azure Portalon szerezheti be.

    CLIENT_ID = "<application-id>"
    
  7. Adja meg az Azure Portalról másolt titkos kulcsot:

    SECRET = "<secret-key>"
    
  8. ServicePrincipalCredentials objektum létrehozása:

    credentials = ServicePrincipalCredentials(
        client_id=CLIENT_ID,
        secret=SECRET,
        tenant=TENANT_ID,
        resource=RESOURCE
    )
    
  9. A szolgáltatásnév hitelesítő adataival nyisson meg egy BatchServiceClient-objektumot . Ezután használja a BatchServiceClient objektumot a Batch szolgáltatáson végzett további műveletekhez.

        batch_client = BatchServiceClient(
        credentials,
        batch_url=BATCH_ACCOUNT_URL
    )
    

A Microsoft Entra-jogkivonattal hitelesített Batch-ügyfél létrehozására vonatkozó Python-példaért tekintse meg az Azure Batch Custom Image üzembe helyezését Python-példaszkripttel.

További lépések