إعداد المصادقة لموارد وسير العمل للتعلم الآلي من Microsoft Azure

ينطبق على:ملحق ML Azure CLI v2 (الحالي)Python SDK azure-ai-ml v2 (الحالي)

تعرف على كيفية إعداد المصادقة إلى مساحة عمل Azure التعلم الآلي من Azure CLI أو Azure التعلم الآلي SDK v2. تعتمد المصادقة على مساحة عمل Azure التعلم الآلي على معرف Microsoft Entra لمعظم الأشياء. بشكل عام، هناك أربعة مهام سير عمل للمصادقة يمكنك استخدامها عند تعيّين بمساحة العمل:

  • تفاعلي: يمكنك استخدام حسابك في معرف Microsoft Entra إما للمصادقة مباشرة، أو للحصول على رمز مميز يستخدم للمصادقة. يتم استخدام المصادقة التفاعلية أثناء التجريب والتطوير التكراري. تتيح لك المصادقة التفاعلية التحكم في الوصول إلى الموارد (مثل خدمة الويب) على أساس كل مستخدم.

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

  • جلسة Azure CLI: يمكنك استخدام جلسة Azure CLI نشطة للمصادقة. ملحق Azure CLI للتعلم الآلي ( ml الملحق أو CLI v2) هو أداة سطر أوامر للعمل مع التعلم الآلي من Azure. يمكنك تسجيل الدخول إلى Azure عبر Azure CLI على محطة العمل المحلية الخاصة بك، دون تخزين بيانات الاعتماد في التعليمة البرمجية Python أو مطالبة المستخدم بالمصادقة. وبالمثل، يمكنك إعادة استخدام نفس البرامج النصية كجزء من خطوط تدفق التكامل والتوزيع المستمرة، أثناء مصادقة Azure CLI بهوية الخدمة الأساسية.

  • هوية مُدارة: عند استخدام التعلم الآلي من Microsoft Azure SDK الإصدار 2 على مثيل حاسوب أو Azure Virtual Machine، يمكنك استخدام هوية مُدارة لـ Azure. يسمح سير العمل هذا للجهاز الظاهري بالاتصال بمساحة العمل باستخدام الهوية المدارة، دون تخزين بيانات الاعتماد في التعليمة البرمجية Python أو مطالبة المستخدم بالمصادقة. يمكن أيضاً تكوين نظام مجموعات حساب التعلم الآلي من Microsoft Azure لاستخدام هوية مُدارة للوصول إلى مساحة العمل عند تدريب النماذج.

بغض النظر عن سير عمل المصادقة المستخدم، يتم استخدام التحكم في الوصول المستند إلى الدور Azure (Azure RBAC) لنطاق مستوى الوصول (التخويل) المسموح به إلى الموارد. على سبيل المثال، قد يكون لدى المسؤول أو عملية التنفيذ التلقائي حق الوصول لإنشاء مثيل حساب، ولكن لا يستخدمه، بينما يمكن لعالم البيانات استخدامه، ولكن لا يمكنه حذفه أو إنشائه. لمزيد من المعلومات، راجع إدارة الوصول إلى مساحة عمل التعلم الآلي من Microsoft Azure.

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

المتطلبات الأساسية

Microsoft Entra ID

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

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

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

استخدم المصادقة التفاعلية

ينطبق على: Python SDK azure-ai-ml v2 (الحالي)

تستخدم المصادقة التفاعلية حزمة Azure Identity لـ Python. تستخدم DefaultAzureCredential معظم الأمثلة للوصول إلى بيانات الاعتماد الخاصة بك. عند الحاجة إلى رمز مميز، فإنه يطلب واحدا باستخدام هويات متعددة (EnvironmentCredential، ManagedIdentityCredential، SharedTokenCacheCredential، VisualStudioCodeCredential، AzureCliCredential، ) AzurePowerShellCredentialبدوره، يتوقف عندما يوفر رمزًا مميزًا. للحصول على مزيد من المعلومات، راجع فئة DefaultAzureCredential.

فيما يلي مثال على استخدام DefaultAzureCredential للمصادقة. إذا فشلت المصادقة باستخدام DefaultAzureCredential ، يتم استخدام نسخة احتياطية من المصادقة من خلال مستعرض الويب بدلا من ذلك.

from azure.identity import DefaultAzureCredential, InteractiveBrowserCredential

try:
    credential = DefaultAzureCredential()
    # Check if given credential can get token successfully.
    credential.get_token("https://management.azure.com/.default")
except Exception as ex:
    # Fall back to InteractiveBrowserCredential in case DefaultAzureCredential not work
    # This will open a browser page for
    credential = InteractiveBrowserCredential()

بعد إنشاء كائن بيانات الاعتماد، يتم استخدام فئة MLClient للاتصال بمساحة العمل. على سبيل المثال، تستخدم التعليمات البرمجية from_config() التالية الأسلوب لتحميل معلومات الاتصال:

from azure.ai.ml import MLClient
try:
    ml_client = MLClient.from_config(credential=credential)
except Exception as ex:
    # NOTE: Update following workspace information to contain
    #       your subscription ID, resource group name, and workspace name
    client_config = {
        "subscription_id": "<SUBSCRIPTION_ID>",
        "resource_group": "<RESOURCE_GROUP>",
        "workspace_name": "<AZUREML_WORKSPACE_NAME>",
    }

    # write and reload from config file
    import json, os

    config_path = "../.azureml/config.json"
    os.makedirs(os.path.dirname(config_path), exist_ok=True)
    with open(config_path, "w") as fo:
        fo.write(json.dumps(client_config))
    ml_client = MLClient.from_config(credential=credential, path=config_path)

print(ml_client)

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

لاستخدام كيان الخدمة (SP)، يجب عليك أولاً إنشاء كيان الخدمة. ثم امنحه حق الوصول إلى مساحة العمل الخاصة بك. كما ذكرنا سابقاً، يتم استخدام التحكم في الوصول المستند إلى الدور Azure (Azure RBAC) للتحكم في الوصول، لذلك يجب عليك أيضاً تحديد الوصول الذي يمنحه مقدم الخدمة.

هام

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

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

أسهل طريقة لإنشاء SP ومنح الوصول إلى مساحة العمل الخاصة بك هي باستخدام Azure CLI. لإنشاء كيان الخدمة ومنحه حق الوصول إلى مساحة العمل الخاصة بك، استخدم الخطوات التالية:

إشعار

يجب أن تكون مسؤولاً في الاشتراك لأداء كل هذه الخطوات.

  1. المصادقة على اشتراك Azure:

    az login
    

    إذا كان بإمكان CLI فتح المتصفح الافتراضي الخاص بك، فسيقوم بذلك ويقوم بتحميل صفحة تسجيل الدخول. بخلاف ذلك، تحتاج إلى فتح متصفح واتباع التعليمات الموجودة في سطر الأوامر. تشمل إرشادات التصفح https://aka.ms/devicelogin وإدخال رمز التخويل.

    إذا كان لديك العديد من اشتراكات Azure، يمكنك استخدام الأمر az account set -s <subscription name or ID> لمجموعة الاشتراك. لمزيد من المعلومات، راجع استخدام اشتراكات Azure المتعددة.

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

  2. قم بإنشاء كيان الخدمة. في المثال التالي، تم إنشاء SP باسم ml-auth:

    az ad sp create-for-rbac --json-auth --name ml-auth --role Contributor --scopes /subscriptions/<subscription id>
    

    المعلمة --json-auth متوفرة في إصدارات >Azure CLI = 2.51.0. الإصدارات السابقة لهذا الاستخدام --sdk-auth.

    سيكون الإخراج JSON مشابهاً لما يلي. قم بتدوين ملاحظات بالحقول clientId، وclientSecret، وtenantId، حيث ستحتاج إليها لخطوات أخرى في هذه المقالة.

    {
        "clientId": "your-client-id",
        "clientSecret": "your-client-secret",
        "subscriptionId": "your-sub-id",
        "tenantId": "your-tenant-id",
        "activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
        "resourceManagerEndpointUrl": "https://management.azure.com",
        "activeDirectoryGraphResourceId": "https://graph.windows.net",
        "sqlManagementEndpointUrl": "https://management.core.windows.net:5555",
        "galleryEndpointUrl": "https://gallery.azure.com/",
        "managementEndpointUrl": "https://management.core.windows.net"
    }
    
  3. استرجع تفاصيل أساس الخدمة باستخدام القيمة clientId التي تم إرجاعها في الخطوة السابقة:

    az ad sp show --id your-client-id
    

    JSON التالي هو مثال مبسط لمخرجات الأمر. لاحظ حقل objectId، حيث ستحتاج إلى قيمته للخطوة التالية.

    {
        "accountEnabled": "True",
        "addIns": [],
        "appDisplayName": "ml-auth",
        ...
        ...
        ...
        "objectId": "your-sp-object-id",
        "objectType": "ServicePrincipal"
    }
    
  4. لمنح حق الوصول إلى مساحة العمل والموارد الأخرى المستخدمة بواسطة التعلم الآلي من Microsoft Azure، استخدم المعلومات الواردة في المقالات التالية:

    هام

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

تكوين هوية مُدارة

هام

يتم دعم الهوية المدارة فقط عند استخدام Azure التعلم الآلي SDK من جهاز Azure الظاهري أو نظام مجموعة حساب Azure التعلم الآلي أو مثيل الحساب.

هوية مُدارة باستخدام جهاز ظاهري

  1. تمكين هوية مُدارة معينة من قبل النظام لموارد Azure على الجهاز الظاهري.

  2. من مدخل Microsoft Azure، حدد مساحة العمل الخاصة بك ثم حدد Access Control (IAM).

  3. حدد Add، إضافة تعيين دور لفتح Add role assignment page.

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

الهوية المدارة مع حساب نظام المجموعة

لمزيد من المعلومات، راجع إعداد هوية مُدارة لنظام مجموعة الحساب.

الهوية المدارة مع مثيل الحساب

لمزيد من المعلومات، راجع إعداد الهوية المدارة لمثيل الحساب.

استخدام المصادقة الرئيسية للخدمة

ينطبق على: Python SDK azure-ai-ml v2 (الحالي)

تستخدم المصادقة مع كيان الخدمة حزمة Azure Identity ل Python. تبحث الفئة DefaultAzureCredential عن متغيرات البيئة التالية وتستخدم القيم عند المصادقة ككيان الخدمة:

  • AZURE_CLIENT_ID - معرف العميل الذي تم إرجاعه عند إنشاء كيان الخدمة.
  • AZURE_TENANT_ID - معرف المستأجر الذي تم إرجاعه عند إنشاء كيان الخدمة.
  • AZURE_CLIENT_SECRET - كلمة المرور التي تم إنشاؤها لمدير الخدمة.

تلميح

أثناء التطوير، ضع في اعتبارك استخدام حزمة python-dotenv لتعيين متغيرات البيئة هذه. يقوم Python-dotenv بتحميل متغيرات البيئة من ملفات .env. يستبعد .gitignore الملف القياسي لـ Python تلقائيًا ملفات .env، لذلك لا ينبغي إيداعها في أي مستودع GitHub أثناء التطوير.

يوضح المثال التالي استخدام python-dotenv لتحميل متغيرات البيئة من .env ملف ثم استخدام DefaultAzureCredential لإنشاء كائن بيانات الاعتماد:

from dotenv import load_dotenv

if ( os.environ['ENVIRONMENT'] == 'development'):
    print("Loading environment variables from .env file")
    load_dotenv(".env")

from azure.identity import DefaultAzureCredential

credential = DefaultAzureCredential()
# Check if given credential can get token successfully.
credential.get_token("https://management.azure.com/.default")

بعد إنشاء كائن بيانات الاعتماد، يتم استخدام فئة MLClient للاتصال بمساحة العمل. على سبيل المثال، تستخدم التعليمات البرمجية from_config() التالية الأسلوب لتحميل معلومات الاتصال:

try:
    ml_client = MLClient.from_config(credential=credential)
except Exception as ex:
    # NOTE: Update following workspace information to contain
    #       your subscription ID, resource group name, and workspace name
    client_config = {
        "subscription_id": "<SUBSCRIPTION_ID>",
        "resource_group": "<RESOURCE_GROUP>",
        "workspace_name": "<AZUREML_WORKSPACE_NAME>",
    }

    # write and reload from config file
    import json, os

    config_path = "../.azureml/config.json"
    os.makedirs(os.path.dirname(config_path), exist_ok=True)
    with open(config_path, "w") as fo:
        fo.write(json.dumps(client_config))
    ml_client = MLClient.from_config(credential=credential, path=config_path)

print(ml_client)

يمكن أيضاً استخدام كيان الخدمة للمصادقة على التعلم الآلي من Microsoft Azure REST API . يمكنك استخدام تدفق منح بيانات اعتماد عميل Microsoft Entra ID، والذي يسمح باستدعاءات الخدمة إلى الخدمة للمصادقة بدون عنوان في مهام سير العمل التلقائية.

هام

إذا كنت تستخدم حالياً مكتبة Azure Active Directory Authentication (ADAL) للحصول على بيانات الاعتماد، نوصيك بالترحيل إلى مكتبة مصادقة Microsoft (MSAL) . انتهى دعم ADAL في 30 يونيو 2022.

للحصول على معلومات ونماذج بشأن المصادقة باستخدام MSAL، راجع المقالات التالية:

استخدم مصادقة الهوية المُدارة

ينطبق على: Python SDK azure-ai-ml v2 (الحالي)

تستخدم المصادقة باستخدام هوية مدارة حزمة هوية Azure ل Python. للمصادقة على مساحة العمل من جهاز ظاهري أو نظام مجموعة حساب تم تكوينه باستخدام هوية مُدارة، استخدم الفئة DefaultAzureCredential. تكتشف هذه الفئة تلقائيا ما إذا كان يتم استخدام هوية مدارة، وتستخدم الهوية المدارة للمصادقة على خدمات Azure.

يوضح المثال التالي استخدام DefaultAzureCredential الفئة لإنشاء كائن بيانات الاعتماد، ثم استخدام MLClient الفئة للاتصال بمساحة العمل:

from azure.identity import DefaultAzureCredential

credential = DefaultAzureCredential()
# Check if given credential can get token successfully.
credential.get_token("https://management.azure.com/.default")

try:
    ml_client = MLClient.from_config(credential=credential)
except Exception as ex:
    # NOTE: Update following workspace information to contain
    #       your subscription ID, resource group name, and workspace name
    client_config = {
        "subscription_id": "<SUBSCRIPTION_ID>",
        "resource_group": "<RESOURCE_GROUP>",
        "workspace_name": "<AZUREML_WORKSPACE_NAME>",
    }

    # write and reload from config file
    import json, os

    config_path = "../.azureml/config.json"
    os.makedirs(os.path.dirname(config_path), exist_ok=True)
    with open(config_path, "w") as fo:
        fo.write(json.dumps(client_config))
    ml_client = MLClient.from_config(credential=credential, path=config_path)

print(ml_client)

استخدم الوصول المشروط

بصفتك مسؤولا، يمكنك فرض نهج الوصول المشروط من Microsoft Entra للمستخدمين الذين يقومون بتسجيل الدخول إلى مساحة العمل. على سبيل المثال، يمكنك طلب المصادقة ذات العاملين، أو السماح بتسجيل الدخول فقط من الأجهزة المُدارة. لاستخدام الوصول المشروط لمساحات عمل Azure التعلم الآلي على وجه التحديد، قم بتعيين نهج الوصول المشروط إلى التطبيق المسمى Azure التعلم الآلي. معرف التطبيق هو 0736f41a-0425-bdb5-1563eff02385.

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