مصادقة خدمات Azure Batch باستخدام معرف Microsoft Entra

يدعم Azure Batch المصادقة باستخدام معرف Microsoft Entra، دليل Microsoft متعدد المستأجرين وخدمة إدارة الهوية المستندة إلى السحابة. يستخدم Azure معرف Microsoft Entra لمصادقة عملائه ومسؤولي الخدمة ومستخدمي المؤسسة.

توضح هذه المقالة طريقتين لاستخدام مصادقة Microsoft Entra مع Azure Batch:

  • المصادقة المتكاملة تصادق مستخدما يتفاعل مع تطبيق. يجمع التطبيق بيانات اعتماد المستخدم ويستخدم بيانات الاعتماد هذه لمصادقة الوصول إلى موارد Batch.

  • يقوم كيان الخدمة بمصادقة تطبيق غير مراقب. يحدد كيان الخدمة النهج والأذونات للتطبيق ويمثل التطبيق للوصول إلى موارد Batch في وقت التشغيل.

لمزيد من المعلومات حول معرف Microsoft Entra، راجع وثائق Microsoft Entra.

جمع نقاط النهاية للمصادقة

لمصادقة تطبيقات Batch باستخدام معرف Microsoft Entra، تحتاج إلى تضمين نقطة نهاية Microsoft Entra ونقطة نهاية مورد Batch في التعليمات البرمجية الخاصة بك.

نقطة نهاية Microsoft Entra

نقطة نهاية مرجع Microsoft Entra الأساسية هي https://login.microsoftonline.com/. للمصادقة باستخدام معرف Microsoft Entra، استخدم نقطة النهاية هذه مع معرف المستأجر الذي يعرف مستأجر Microsoft Entra لاستخدامه للمصادقة:

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

يمكنك الحصول على معرف المستأجر الخاص بك من صفحة معرف Microsoft Entra الرئيسية في مدخل Microsoft Azure. يمكنك أيضا تحديد Properties في جزء التنقل الأيمن ورؤية Tenant ID في صفحة Properties.

لقطة شاشة لمعرف المستأجر في مدخل Microsoft Azure.

هام

  • تكون نقطة نهاية Microsoft Entra الخاصة بالمستأجر مطلوبة عند المصادقة باستخدام كيان خدمة.

  • عند المصادقة باستخدام المصادقة المتكاملة، يوصى بنقطة النهاية الخاصة بالمستأجر، ولكنها اختيارية. يمكنك أيضا استخدام نقطة النهاية الشائعة ل Microsoft Entra لتوفير واجهة تجميع بيانات اعتماد عامة عند عدم توفير مستأجر معين. نقطة النهاية الشائعة هي https://login.microsoftonline.com/common.

لمزيد من المعلومات حول نقاط نهاية Microsoft Entra، راجع المصادقة مقابل التخويل.

نقطة نهاية مورد خدمة Batch

استخدم نقطة https://batch.core.windows.net/ نهاية مورد Batch للحصول على رمز مميز لمصادقة الطلبات إلى خدمة Batch.

سجل طلبك مع المستأجر

الخطوة الأولى في استخدام مصادقة Microsoft Entra هي تسجيل التطبيق الخاص بك في مستأجر Microsoft Entra. بمجرد تسجيل التطبيق الخاص بك، يمكنك استدعاء مكتبة مصادقة Microsoft (MSAL) من التعليمات البرمجية الخاصة بك. يوفر MSAL واجهة برمجة تطبيقات للمصادقة مع معرف Microsoft Entra من التطبيق الخاص بك. تسجيل التطبيق الخاص بك مطلوب سواء كنت تستخدم المصادقة المتكاملة أو كيان الخدمة.

عند تسجيل التطبيق الخاص بك، يمكنك توفير معلومات حول التطبيق الخاص بك إلى معرف Microsoft Entra. يوفر معرف Microsoft Entra بعد ذلك معرف تطبيق، يسمى أيضا معرف العميل، الذي تستخدمه لربط تطبيقك بمعرف Microsoft Entra في وقت التشغيل. لمزيد من المعلومات حول معرف التطبيق، راجع الكائنات الأساسية للتطبيق والخدمة في معرف Microsoft Entra.

لتسجيل تطبيق Batch الخاص بك، اتبع الخطوات الواردة في تسجيل تطبيق.

بعد تسجيل التطبيق الخاص بك، يمكنك مشاهدة معرف التطبيق (العميل) في صفحة نظرة عامة على التطبيق.

لقطة شاشة لمعرف التطبيق الموضح في مدخل Azure.

تكوين المصادقة المتكاملة

للمصادقة مع المصادقة المتكاملة، تحتاج إلى منح إذن التطبيق الخاص بك للاتصال بواجهة برمجة تطبيقات خدمة الدفعات. تمكن هذه الخطوة تطبيقك من استخدام معرف Microsoft Entra لمصادقة المكالمات إلى واجهة برمجة تطبيقات خدمة الدفعات.

بعد تسجيل التطبيق الخاص بك، اتبع هذه الخطوات لمنح التطبيق حق الوصول إلى خدمة Batch:

  1. في مدخل Microsoft Azure، ابحث عن تسجيلات التطبيقات وحددها.
  2. في صفحة App registrations ، حدد التطبيق الخاص بك.
  3. في صفحة التطبيق الخاص بك، حدد أذونات واجهة برمجة التطبيقات من التنقل الأيمن.
  4. في النافذة الخاصة بأذونات واجهة برمجة التطبيقات اخترإضافة إذن.
  5. في صفحة Request API permissions ، حدد Azure Batch.
  6. في صفحة Azure Batch ، ضمن Select permissions، حدد خانة الاختيار بجوار user_impersonation، ثم حدد Add permissions.

تظهر صفحة أذونات واجهة برمجة التطبيقات الآن أن تطبيق Microsoft Entra الخاص بك لديه حق الوصول إلى كل من Microsoft Graph وAzure Batch. يتم منح الأذونات إلى Microsoft Graph تلقائيا عند تسجيل تطبيق باستخدام معرف Microsoft Entra.

تكوين كيان الخدمة

لمصادقة تطبيق يتم تشغيله دون مراقبة، يمكنك استخدام مبدأ الخدمة. عندما يصادق التطبيق الخاص بك باستخدام كيان خدمة، فإنه يرسل كل من معرف التطبيق ومفتاح سري إلى معرف Microsoft Entra.

بعد تسجيل التطبيق الخاص بك، اتبع هذه الخطوات في مدخل Microsoft Azure لتكوين كيان الخدمة:

  1. طلب سر لتطبيقك.
  2. قم بتعيين عنصر تحكم في الوصول المستند إلى الدور (Azure RBAC) لتطبيقك.

طلب سر لتطبيقك

اتبع هذه الخطوات لإنشاء ونسخ المفتاح السري لاستخدامه في التعليمات البرمجية الخاصة بك:

  1. في مدخل Microsoft Azure، ابحث عن تسجيلات التطبيقات وحددها.
  2. في صفحة App registrations ، حدد التطبيق الخاص بك.
  3. في صفحة التطبيق الخاص بك، حدد Certificates & secrets من التنقل الأيسر.
  4. في صفحة Certificates &s secrets ، حدد New client secret.
  5. في صفحة إضافة سر عميل، أدخل وصفا وحدد فترة انتهاء صلاحية للبيانات السرية.
  6. حدد إضافة لإنشاء البيانات السرية وعرضها في صفحة الشهادات والأسرار .
  7. انسخ القيمة السرية إلى مكان آمن، لأنك لن تتمكن من الوصول إليها مرة أخرى بعد مغادرة هذه الصفحة. إذا فقدت الوصول إلى المفتاح الخاص بك، يمكنك إنشاء مفتاح جديد.

قم بتعيين Azure RBAC لتطبيقك

اتبع هذه الخطوات لتعيين دور Azure RBAC لتطبيقك. للحصول على خطوات تفصيلية، راجع تعيين أدوار Azure باستخدام مدخل Azure.

  1. في مدخل Microsoft Azure، انتقل إلى حساب Batch الذي يستخدمه التطبيق الخاص بك.
  2. حدد Access control (IAM) من جزء التنقل الأيمن.
  3. في صفحة Access control (IAM)، حدد Add role assignment.
  4. في صفحة إضافة تعيين دور، حدد علامة التبويب دور ، ثم حدد دور المساهم أو القارئ لتطبيقك.
  5. حدد علامة التبويب Members، وحدد Select members ضمن Members.
  6. في شاشة تحديد الأعضاء ، ابحث عن التطبيق وحدده، ثم حدد تحديد.
  7. حدد Review + assign في صفحة Add role assignment .

يجب أن يظهر تطبيقك الآن في علامة التبويب Role assignments في صفحة التحكم في الوصول (IAM) لحساب Batch.

تعيين دور مخصص

يمنح الدور المخصص إذناً دقيقاً للمستخدم لإرسال الوظائف والمهام والمزيد. يمكنك استخدام أدوار مخصصة لمنع المستخدمين من تنفيذ العمليات التي تؤثر على التكلفة، مثل إنشاء تجمعات أو تعديل العقد.

يمكنك استخدام دور مخصص لمنح أذونات أو رفضها لمستخدم Microsoft Entra أو مجموعة أو كيان خدمة لعمليات Azure Batch RBAC التالية:

  • 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، لأي عملية قراءة
  • Microsoft.Batch/batchAccounts/listKeys/action، لأي عملية

الأدوار المخصصة مخصصة للمستخدمين الذين تمت مصادقتها بواسطة معرف Microsoft Entra، وليس لبيانات اعتماد حساب المفتاح المشترك الدفعي. تمنح بيانات اعتماد حساب Batch الإذن الكامل لحساب Batch. تتطلب المهام التي تستخدم autopool أذونات على مستوى التجمع.

إشعار

يجب تحديد تعيينات أدوار معينة في actions الحقل، بينما يجب تحديد تعيينات أخرى في dataActions الحقل. لمزيد من المعلومات، راجع عمليات موفر موارد Azure.

يوضح المثال التالي تعريف دور 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":[

        ]
      }
    ]
  }
}

لمزيد من المعلومات حول إنشاء دور مخصص، راجع أدوار Azure المخصصة.

أمثلة على التعليمات البرمجية

توضح أمثلة التعليمات البرمجية في هذا القسم كيفية المصادقة باستخدام معرف Microsoft Entra باستخدام المصادقة المتكاملة أو مع كيان الخدمة. تستخدم أمثلة التعليمات البرمجية .NET وPython، ولكن المفاهيم متشابهة للغات الأخرى.

إشعار

تنتهي صلاحية رمز مصادقة Microsoft Entra المميز بعد ساعة واحدة. عند استخدام كائن BatchClient طويل الأمد، من الأفضل الحصول على رمز مميز من MSAL على كل طلب للتأكد من أن لديك دائما رمزا مميزا صالحا.

للقيام بذلك في .NET، اكتب أسلوبا يسترد الرمز المميز من معرف Microsoft Entra، ومرر هذا الأسلوب إلى كائن BatchTokenCredentials كمفوض. يستدعي كل طلب إلى خدمة Batch أسلوب التفويض للتأكد من توفير رمز مميز صالح. يقوم MSAL بشكل افتراضي بتخزين الرموز المميزة مؤقتا، لذلك يتم استرداد رمز مميز جديد من Microsoft Entra-only عند الضرورة. لمزيد من المعلومات حول الرموز المميزة في معرف Microsoft Entra، راجع رموز الأمان المميزة.

مثال على التعليمات البرمجية: استخدام مصادقة Microsoft Entra المتكاملة مع Batch .NET

للمصادقة مع المصادقة المتكاملة من Batch .NET:

  1. تثبيت حزم Azure Batch .NET و MSAL NuGet.

  2. أعلن عن العبارات التالية using في التعليمات البرمجية الخاصة بك:

    using Microsoft.Azure.Batch;
    using Microsoft.Azure.Batch.Auth;
    using Microsoft.Identity.Client;
    
  3. الرجوع إلى نقطة نهاية Microsoft Entra، بما في ذلك معرف المستأجر. يمكنك الحصول على معرف المستأجر الخاص بك من صفحة نظرة عامة على معرف Microsoft Entra في مدخل Microsoft Azure.

    private const string AuthorityUri = "https://login.microsoftonline.com/<tenant-id>";
    
  4. قم بالإشارة إلى نقطة نهاية مورد خدمة الدُفعة:

    private const string BatchResourceUri = "https://batch.core.windows.net/";
    
  5. الرجوع إلى حساب الدُفعات الخاص بك:

    private const string BatchAccountUrl = "https://<myaccount>.<mylocation>.batch.azure.com";
    
  6. حدد معرف التطبيق (العميل) للتطبيق الخاص بك. يمكنك الحصول على معرف التطبيق من صفحة نظرة عامة على التطبيق الخاص بك في مدخل Microsoft Azure.

    private const string ClientId = "<application-id>";
    
  7. حدد عنوان URI لإعادة التوجيه الذي قدمته عند تسجيل التطبيق.

    private const string RedirectUri = "https://<redirect-uri>";
    
  8. اكتب أسلوب رد اتصال للحصول على رمز المصادقة المميز من معرف Microsoft Entra. يستدعي المثال التالي MSAL لمصادقة مستخدم يتفاعل مع التطبيق. يطالب أسلوب MSAL IConfidentialClientApplication.AcquireTokenByAuthorizationCode المستخدم ببيانات الاعتماد الخاصة به. يستمر التطبيق بمجرد أن يوفر المستخدم بيانات الاعتماد.

    معلمة authorizationCode هي رمز التخويل الذي تم الحصول عليه من خادم التخويل بعد مصادقة المستخدم. WithRedirectUri يحدد عنوان URI لإعادة التوجيه الذي يعيد خادم التخويل توجيه المستخدم إليه بعد المصادقة.

    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. قم باستدعاء هذا الأسلوب بالتعليمات البرمجية التالية، مع استبدال برمز <authorization-code> التخويل الذي تم الحصول عليه من خادم التخويل. .default يضمن النطاق أن المستخدم لديه إذن للوصول إلى جميع نطاقات المورد.

    
    var token = await GetTokenUsingAuthorizationCode("<authorization-code>", "RedirectUri", new string[] { "BatchResourceUri/.default" });
    
  10. إنشاء كائن BatchTokenCredentials يأخذ المفوض كمعلمة. استخدم بيانات الاعتماد هذه لفتح كائن BatchClient . ثم استخدم كائن BatchClient للعمليات اللاحقة مقابل خدمة Batch:

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

مثال على التعليمات البرمجية: استخدام أساس خدمة Microsoft Entra مع Batch .NET

للمصادقة مع كيان خدمة من Batch .NET:

  1. تثبيت حزم Azure Batch .NET و MSAL NuGet.

  2. أعلن عن العبارات التالية using في التعليمات البرمجية الخاصة بك:

    using Microsoft.Azure.Batch;
    using Microsoft.Azure.Batch.Auth;
    using Microsoft.Identity.Client;
    
  3. الرجوع إلى نقطة نهاية Microsoft Entra، بما في ذلك معرف المستأجر. عند استخدام كيان خدمة، يجب توفير نقطة نهاية خاصة للمستأجر. يمكنك الحصول على معرف المستأجر الخاص بك من صفحة نظرة عامة على معرف Microsoft Entra في مدخل Microsoft Azure.

    private const string AuthorityUri = "https://login.microsoftonline.com/<tenant-id>";
    
  4. قم بالإشارة إلى نقطة نهاية مورد خدمة الدُفعة:

    private const string BatchResourceUri = "https://batch.core.windows.net/";
    
  5. الرجوع إلى حساب الدُفعات الخاص بك:

    private const string BatchAccountUrl = "https://<myaccount>.<mylocation>.batch.azure.com";
    
  6. حدد معرف التطبيق (العميل) للتطبيق الخاص بك. يمكنك الحصول على معرف التطبيق من صفحة نظرة عامة على التطبيق الخاص بك في مدخل Microsoft Azure.

    private const string ClientId = "<application-id>";
    
  7. حدد المفتاح السري الذي نسخته من مدخل Microsoft Azure.

    private const string ClientKey = "<secret-key>";
    
  8. اكتب أسلوب رد اتصال للحصول على رمز المصادقة المميز من معرف Microsoft Entra. يستدعي الأسلوب ConfidentialClientApplicationBuilder.Create التالي MSAL للمصادقة غير المراقب.

    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. قم باستدعاء هذا الأسلوب باستخدام التعليمات البرمجية التالية. .default يضمن النطاق أن التطبيق لديه إذن للوصول إلى جميع نطاقات المورد.

       var token = await GetAccessToken(new string[] { $"{BatchResourceUri}/.default" });
    
  10. إنشاء كائن BatchTokenCredentials يأخذ المفوض كمعلمة. استخدم بيانات الاعتماد هذه لفتح كائن BatchClient . ثم استخدم كائن BatchClient للعمليات اللاحقة مقابل خدمة Batch:

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

مثال على التعليمات البرمجية: استخدام أساس خدمة Microsoft Entra مع Batch Python

للمصادقة مع كيان خدمة من Batch Python:

  1. تثبيت وحدات Azure-batch وazure-common Python.

  2. الرجوع إلى الوحدات النمطية:

    from azure.batch import BatchServiceClient
    from azure.common.credentials import ServicePrincipalCredentials
    
  3. لاستخدام كيان خدمة، قم بتوفير نقطة نهاية خاصة للمستأجر. يمكنك الحصول على معرف المستأجر الخاص بك من صفحة نظرة عامة على معرف Microsoft Entra أو صفحة الخصائص في مدخل Microsoft Azure.

    TENANT_ID = "<tenant-id>"
    
  4. قم بالإشارة إلى نقطة نهاية مورد خدمة الدُفعة:

    RESOURCE = "https://batch.core.windows.net/"
    
  5. الرجوع إلى حساب الدُفعات الخاص بك:

    BATCH_ACCOUNT_URL = "https://<myaccount>.<mylocation>.batch.azure.com"
    
  6. حدد معرف التطبيق (العميل) للتطبيق الخاص بك. يمكنك الحصول على معرف التطبيق من صفحة نظرة عامة على التطبيق الخاص بك في مدخل Microsoft Azure.

    CLIENT_ID = "<application-id>"
    
  7. حدد المفتاح السري الذي نسخته من مدخل Azure:

    SECRET = "<secret-key>"
    
  8. إنشاء كائن ServicePrincipalCredentials :

    credentials = ServicePrincipalCredentials(
        client_id=CLIENT_ID,
        secret=SECRET,
        tenant=TENANT_ID,
        resource=RESOURCE
    )
    
  9. استخدم بيانات اعتماد كيان الخدمة لفتح كائن BatchServiceClient . ثم استخدم كائن BatchServiceClient للعمليات اللاحقة مقابل خدمة Batch.

        batch_client = BatchServiceClient(
        credentials,
        batch_url=BATCH_ACCOUNT_URL
    )
    

للحصول على مثال Python حول كيفية إنشاء عميل Batch تمت مصادقته باستخدام رمز Microsoft Entra المميز، راجع نشر صورة Azure Batch المخصصة باستخدام نموذج برنامج Python النصي.

الخطوات التالية