Batch-szolgáltatásmegoldások hitelesítése az Active Directoryval

Azure Batch támogatja a Azure Active Directory (Azure AD) használatával való hitelesítést. Az Azure AD a Microsoft több-bérlős felhőalapú címtár- és identitáskezelési szolgáltatása. Maga az Azure az Azure AD használatával hitelesíti ügyfeleit, szolgáltatásadminisztrátorait és szervezeti felhasználóit.

Ha Azure AD-hitelesítést használ Azure Batch, kétféleképpen végezhet hitelesítést:

  • Integrált hitelesítéssel hitelesíthet egy alkalmazást használó felhasználót. Az integrált hitelesítést használó alkalmazások összegyűjtik a felhasználó hitelesítő adatait, és ezeket a hitelesítő adatokat használják a Batch-erőforrásokhoz való hozzáférés hitelesítéséhez.
  • Szolgáltatásnév használatával hitelesíthet egy felügyelet nélküli alkalmazást. A szolgáltatásnév határozza meg az alkalmazás szabályzatát és engedélyeit, hogy az alkalmazás az erőforrások futásidőben való elérésekor jelenhessen meg.

Az Azure AD-ről további információt a Azure Active Directory dokumentációban talál.

Végpontok hitelesítéshez

A Batch-alkalmazások Azure AD-vel való hitelesítéséhez fel kell vennie néhány jól ismert végpontot a kódba.

Azure AD-végpont

Az Azure AD-szolgáltató alapvégpontja a következő:

https://login.microsoftonline.com/

Az Azure AD-vel való hitelesítéshez ezt a végpontot a bérlőazonosítóval (címtár-azonosítóval) együtt kell használnia. A bérlőazonosító azonosítja a hitelesítéshez használni kívánt Azure AD-bérlőt. A bérlőazonosító lekéréséhez kövesse a Azure Active Directory bérlőazonosítójának lekérése című témakörben ismertetett lépéseket:

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

Megjegyzés

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

A bérlőspecifikus végpont nem kötelező, ha integrált hitelesítéssel hitelesíti magát, de ajánlott. Használhatja azonban az Azure AD gyakori végpontot is. A közös végpont általános hitelesítőadat-gyűjtési felületet biztosít, ha egy adott bérlő nincs megadva. A gyakori végpont a https://login.microsoftonline.com/common.

Az Azure AD-végpontokkal kapcsolatos további információkért lásd: Hitelesítés és engedélyezés.

Batch-erőforrásvégpont

A Azure Batch erőforrásvégpont használatával szerezzen be egy jogkivonatot a Batch szolgáltatás felé irányuló kérések hitelesítéséhez:

https://batch.core.windows.net/

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

Az Azure AD hitelesítéshez való használatának első lépése az alkalmazás regisztrálása egy Azure AD-bérlőben. Az alkalmazás regisztrálásával meghívhatja az Azure Active Directory Authentication Libraryt (ADAL) a kódból. Az ADAL egy API-t biztosít az Azure AD-vel való hitelesítéshez az alkalmazásból. Az alkalmazás regisztrálására akkor van szükség, ha integrált hitelesítést vagy szolgáltatásnevet szeretne használni.

Az alkalmazás regisztrálásakor az alkalmazással kapcsolatos információkat adja meg az Azure AD-nek. Az Azure AD ezután megad egy alkalmazásazonosítót (más néven ügyfél-azonosítót), amellyel az alkalmazást az Azure AD-hez társíthatja futásidőben. Az alkalmazásazonosítóval kapcsolatos további információkért lásd a Azure Active Directory alkalmazás- és szolgáltatásnév-objektumait.

A Batch-alkalmazás regisztrálásához kövesse az alkalmazás regisztrálása című rövid útmutató Alkalmazás regisztrálása szakaszának lépéseit: Alkalmazás regisztrálása a Microsoft Identitásplatform. Ha az alkalmazást natív alkalmazásként regisztrálja, megadhat bármilyen érvényes URI-t az átirányítási URI-hoz. Nem kell valódi végpontnak lennie.

Az alkalmazás regisztrálása után megjelenik az alkalmazás azonosítója:

Screenshot of the Application ID shown in the Azure portal.

Az Active Directory bérlőazonosítójának lekérése

A bérlőazonosító azonosítja azt az Azure AD-bérlőt, amely hitelesítési szolgáltatásokat nyújt az alkalmazásnak. A bérlőazonosító lekéréséhez kövesse az alábbi lépéseket:

  1. A Azure Portal válassza ki az Active Directoryt.
  2. Válassza ki a Tulajdonságok elemet.
  3. Másolja ki a címtár-azonosítóhoz megadott GUID-értéket. Ezt az értéket bérlőazonosítónak is nevezik.

Screenshot of the Directory ID in the Azure portal.

Integrált hitelesítés használata

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. Ezzel a lépéssel az alkalmazás hitelesítheti a Batch szolgáltatás API-jának hívásait az Azure AD-vel.

Miután regisztrálta az alkalmazást, kövesse az alábbi lépéseket a Azure Portal, hogy hozzáférést biztosítson a Batch szolgáltatáshoz:

  1. A Azure Portal válassza a Minden szolgáltatás, majd az Alkalmazásregisztrációk lehetőséget.
  2. Keresse meg az alkalmazás nevét az alkalmazásregisztrációk listájában.
  3. Válassza ki az alkalmazást, és válassza ki az API-engedélyeket.
  4. Az API-engedélyek szakaszban válassza az Engedély hozzáadása lehetőséget.
  5. A Batch API megkereséséhez keressen rá a "Microsoft Azure Batch" kifejezésre. A ddbf3205-c6bd-46ae-8127-60eb93363864 a Batch API alkalmazásazonosítója.
  6. Válassza ki a Batch API-t, majd válassza a Kiválasztás lehetőséget.
  7. Az Engedélyek kiválasztása területen jelölje be az Access Azure Batch Szolgáltatás melletti jelölőnégyzetet, majd válassza az Engedélyek hozzáadása lehetőséget.

Az API-engedélyek szakasz most azt mutatja, hogy az Azure AD-alkalmazás a Microsoft Graph és a Batch szolgáltatás API-hoz is hozzáfér. A Microsoft Graph automatikusan kapnak engedélyeket, amikor először regisztrálja az alkalmazást az Azure AD-ben.

Szolgáltatásnév használata

A felügyelet nélküli alkalmazás hitelesítéséhez szolgáltatásnevet kell használnia. Miután regisztrálta az alkalmazást, kövesse az alábbi lépéseket a Azure Portal egy szolgáltatásnév konfigurálásához:

  1. Titkos kód 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

Amikor az alkalmazás hitelesítést végzett egy szolgáltatásnévvel, az alkalmazásazonosítót és a titkos kulcsot is elküldi az Azure AD-nek. Létre kell hoznia és át kell másolnia a titkos kulcsot a kódból való használathoz.

Hajtsa végre a következő lépéseket az Azure Portalon:

  1. A Azure Portal válassza a Minden szolgáltatás lehetőséget. Válassza az Alkalmazásregisztrációk lehetőséget.
  2. Válassza ki az alkalmazást az alkalmazásregisztrációk listájából.
  3. Jelölje ki az alkalmazást, majd válassza a Tanúsítványok titkos kódja lehetőséget&. Az Ügyfélkódok szakaszban válassza az Új titkos ügyfélkulcs lehetőséget.
  4. Titkos kód létrehozásához adja meg a titkos kód leírását. Ezután válasszon ki egy lejárati dátumot a titkos kódhoz, amely egy év, két év, vagy nincs lejárat.
  5. Válassza a Hozzáadás lehetőséget a titkos kód létrehozásához és megjelenítéséhez. Másolja a titkos értéket egy biztonságos helyre, mert az oldal elhagyása után nem fogja tudni újból elérni.

Azure RBAC hozzárendelése az alkalmazáshoz

A szolgáltatásnévvel való hitelesítéshez Azure RBAC-t kell hozzárendelnie az alkalmazáshoz. Kövesse az alábbi lépéseket:

  1. A Azure Portal keresse meg az alkalmazás által használt Batch-fiókot.
  2. A Batch-fiók Gépház szakaszában válassza a Access Control (IAM) lehetőséget.
  3. Rendelje hozzá a Közreműködő vagy az Olvasó szerepkört az alkalmazáshoz. Részletes lépésekért lásd: Azure-szerepkörök hozzárendelése a Azure Portal használatával.

Az alkalmazásnak most meg kell jelennie a hozzáférés-vezérlési beállításokban egy Hozzárendelt Azure-szerepkörrel.

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. Ez lehetővé teszi, hogy megakadályozza, hogy a felhasználók olyan műveleteket hajtsanak végre, amelyek hatással vannak a költségekre, például készletek létrehozására vagy csomópontok módosítására.

Egyéni szerepkör használatával engedélyeket adhat egy Azure AD-felhasználónak, -csoportnak vagy -szolgáltatásnévnek a következő Azure 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ármely olvasási művelethez)
  • Microsoft.Batch/batchAccounts/listKeys/action (bármely művelethez)

Az egyéni szerepkörök az Azure AD által hitelesített felhasználókhoz tartoznak, nem a Batch-fiók hitelesítő adataihoz (megosztott kulcshoz). Vegye figyelembe, hogy a Batch-fiók hitelesítő adatai teljes körű engedélyt adnak a Batch-fiókhoz. Azt is vegye figyelembe, hogy 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 Művelet mezőben, míg másokat a DataAction mezőben. További információ: Azure erőforrás-szolgáltatói műveletek.

Íme egy példa egy egyéni szerepkör-definícióra:

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

        ]
      }
    ]
  }
}

További információ az egyéni szerepkörök létrehozásáról: Egyéni Azure-szerepkörök.

A Azure Active Directory bérlőazonosítójának lekérése

A bérlőazonosító azonosítja azt az Azure AD-bérlőt, amely hitelesítési szolgáltatásokat nyújt az alkalmazásnak. A bérlőazonosító lekéréséhez kövesse az alábbi lépéseket:

  1. A Azure Portal válassza ki az Active Directoryt.
  2. Válassza ki a Tulajdonságok elemet.
  3. Másolja ki a címtár-azonosítóhoz megadott GUID-értéket. Ezt az értéket bérlőazonosítónak is nevezik.

Copy the directory ID

Kódpéldák

Az ebben a szakaszban található példakódok bemutatják, hogyan hitelesíthető az Azure AD-vel integrált hitelesítéssel és szolgáltatásnévvel. A legtöbb példakód a .NET-et használja, de a fogalmak más nyelvekhez hasonlóak.

Megjegyzés

Az Azure AD hitelesítési jogkivonat egy óra elteltével lejár. Hosszú élettartamú BatchClient-objektum használatakor azt javasoljuk, hogy minden kérésnél lekérjen egy jogkivonatot az ADAL-ból, hogy mindig érvényes jogkivonattal rendelkezzen.

Ehhez a .NET-ben írjon egy metódust, amely lekéri a jogkivonatot az Azure AD-ből, és átadja azt egy BatchTokenCredentials objektumnak meghatalmazottként. A rendszer minden, a Batch szolgáltatásnak küldött kéréshez meghívja a delegáltmetódust, hogy érvényes jogkivonatot biztosítson. Az ADAL alapértelmezés szerint gyorsítótárazza a jogkivonatokat, így az új jogkivonatok csak szükség esetén lesznek lekérve az Azure AD-ből. Az Azure AD jogkivonatairól további információt a Biztonsági jogkivonatok című témakörben talál.

Példakód: Azure AD integrált hitelesítés használata a Batch .NET-tel

A Batch .NET integrált hitelesítésével történő hitelesítéshez hivatkozzon a Azure Batch .NET-csomagra és az ADAL-csomagra.

Adja meg a következő using utasításokat a kódban:

using Microsoft.Azure.Batch;
using Microsoft.Azure.Batch.Auth;
using Microsoft.IdentityModel.Clients.ActiveDirectory;

Hivatkozzon az Azure AD-végpontra a kódban, beleértve a bérlőazonosítót is. A bérlőazonosító lekéréséhez kövesse a Azure Active Directory bérlőazonosítójának lekérése című cikkben leírt lépéseket:

private const string AuthorityUri = "https://login.microsoftonline.com/<tenant-id>";

Hivatkozzon a Batch szolgáltatás erőforrás-végpontra:

private const string BatchResourceUri = "https://batch.core.windows.net/";

Hivatkozzon a Batch-fiókra:

private const string BatchAccountUrl = "https://myaccount.mylocation.batch.azure.com";

Adja meg az alkalmazás alkalmazásazonosítóját (ügyfél-azonosítóját). Az alkalmazásazonosító az alkalmazásregisztrációból érhető el a Azure Portal:

private const string ClientId = "<application-id>";

Másolja a megadott átirányítási URI-t is, ha az alkalmazást natív alkalmazásként regisztrálta. A kódban megadott átirányítási URI-nak meg kell egyeznie az alkalmazás regisztrálásakor megadott átirányítási URI-val:

private const string RedirectUri = "http://mybatchdatasample";

Írjon visszahívási módszert a hitelesítési jogkivonat Azure AD-ből való beszerzéséhez. Az itt látható GetAuthenticationTokenAsync visszahívási metódus meghívja az ADAL-t az alkalmazással kommunikáló felhasználó hitelesítéséhez. Az ADAL által biztosított AcquireTokenAsync metódus kéri a felhasználótól a hitelesítő adatait, és az alkalmazás akkor folytatja a műveletet, ha a felhasználó megadta őket (kivéve, ha már gyorsítótárazza a hitelesítő adatokat):

public static async Task<string> GetAuthenticationTokenAsync()
{
    var authContext = new AuthenticationContext(AuthorityUri);

    // Acquire the authentication token from Azure AD.
    var authResult = await authContext.AcquireTokenAsync(BatchResourceUri,
                                                        ClientId,
                                                        new Uri(RedirectUri),
                                                        new PlatformParameters(PromptBehavior.Auto));

    return authResult.AccessToken;
}

Hozzon létre egy BatchTokenCredentials objektumot, amely a delegáltat veszi paraméterként. Ezekkel a hitelesítő adatokkal nyisson meg egy BatchClient-objektumot . Ezt a BatchClient-objektumot a Batch szolgáltatáson végzett további műveletekhez használhatja:

public static void PerformBatchOperations()
{
    Func<Task<string>> tokenProvider = () => GetAuthenticationTokenAsync();

    using (var client = BatchClient.Open(new BatchTokenCredentials(BatchAccountUrl, tokenProvider)))
    {
        client.JobOperations.ListJobs();
    }
}

Példakód: Azure AD-szolgáltatásnév használata Batch .NET-tel

A Batch .NET szolgáltatásnevével való hitelesítéshez hivatkozzon a Azure Batch .NET-csomagra és az ADAL-csomagra.

Adja meg a következő using utasításokat a kódban:

using Microsoft.Azure.Batch;
using Microsoft.Azure.Batch.Auth;
using Microsoft.IdentityModel.Clients.ActiveDirectory;

Hivatkozzon az Azure AD-végpontra a kódban, beleértve a bérlőazonosítót is. Szolgáltatásnév használatakor meg kell adnia egy bérlőspecifikus végpontot. A bérlőazonosító lekéréséhez kövesse a Azure Active Directory bérlőazonosítójának lekérése című cikkben leírt lépéseket:

private const string AuthorityUri = "https://login.microsoftonline.com/<tenant-id>";

Hivatkozzon a Batch szolgáltatás erőforrás-végpontra:

private const string BatchResourceUri = "https://batch.core.windows.net/";

Hivatkozzon a Batch-fiókra:

private const string BatchAccountUrl = "https://myaccount.mylocation.batch.azure.com";

Adja meg az alkalmazás alkalmazásazonosítóját (ügyfél-azonosítóját). Az alkalmazásazonosító az alkalmazásregisztrációból érhető el a Azure Portal:

private const string ClientId = "<application-id>";

Adja meg a Azure Portal kimásolt titkos kulcsot:

private const string ClientKey = "<secret-key>";

Írjon visszahívási módszert a hitelesítési jogkivonat Azure AD-ből való beszerzéséhez. Az itt bemutatott GetAuthenticationTokenAsync visszahívási metódus meghívja az ADAL-t felügyelet nélküli hitelesítésre:

public static async Task<string> GetAuthenticationTokenAsync()
{
    AuthenticationContext authContext = new AuthenticationContext(AuthorityUri);
    AuthenticationResult authResult = await authContext.AcquireTokenAsync(BatchResourceUri, new ClientCredential(ClientId, ClientKey));

    return authResult.AccessToken;
}

Hozzon létre egy BatchTokenCredentials objektumot, amely a delegáltat veszi paraméterként. Ezekkel a hitelesítő adatokkal nyisson meg egy BatchClient-objektumot . Ezután használja ezt a BatchClient-objektumot a Batch szolgáltatáson végzett további műveletekhez:

public static void PerformBatchOperations()
{
    Func<Task<string>> tokenProvider = () => GetAuthenticationTokenAsync();

    using (var client = BatchClient.Open(new BatchTokenCredentials(BatchAccountUrl, tokenProvider)))
    {
        client.JobOperations.ListJobs();
    }
}

Példakód: Azure AD-szolgáltatásnév használata a Batch Pythonnal

Ha a Batch Python szolgáltatásnevével szeretne hitelesítést végezni, telepítse és hivatkozzon az azure-batch és az azure gyakori moduljaira.

from azure.batch import BatchServiceClient
from azure.common.credentials import ServicePrincipalCredentials

Szolgáltatásnév használatakor meg kell adnia a bérlőazonosítót. A bérlőazonosító lekéréséhez kövesse a Azure Active Directory bérlőazonosítójának lekérése című cikkben leírt lépéseket:

TENANT_ID = "<tenant-id>"

Hivatkozzon a Batch szolgáltatás erőforrás-végpontra:

RESOURCE = "https://batch.core.windows.net/"

Hivatkozzon a Batch-fiókra:

BATCH_ACCOUNT_URL = "https://myaccount.mylocation.batch.azure.com"

Adja meg az alkalmazás alkalmazásazonosítóját (ügyfél-azonosítóját). Az alkalmazásazonosító az alkalmazásregisztrációból érhető el a Azure Portal:

CLIENT_ID = "<application-id>"

Adja meg a Azure Portal kimásolt titkos kulcsot:

SECRET = "<secret-key>"

ServicePrincipalCredentials objektum létrehozása:

credentials = ServicePrincipalCredentials(
    client_id=CLIENT_ID,
    secret=SECRET,
    tenant=TENANT_ID,
    resource=RESOURCE
)

A szolgáltatásnév hitelesítő adataival nyisson meg egy BatchServiceClient objektumot. Ezután használja ezt a BatchServiceClient objektumot a Batch szolgáltatáson végzett további műveletekhez.

    batch_client = BatchServiceClient(
    credentials,
    batch_url=BATCH_ACCOUNT_URL
)

Következő lépések