إعداد المصادقة لموارد وسير العمل للتعلم الآلي من Microsoft Azure
تعرف على كيفية إعداد المصادقة إلى مساحة عمل Azure التعلم الآلي. تستند المصادقة إلى مساحة عمل Azure التعلم الآلي إلى Azure Active Directory (Azure AD) لمعظم الأشياء. بشكل عام، هناك أربعة مهام سير عمل للمصادقة يمكنك استخدامها عند الاتصال بمساحة العمل:
تفاعلي: يمكنك استخدام حسابك في Azure Active Directory إما للمصادقة مباشرة أو للحصول على رمز مميز يستخدم للمصادقة. يتم استخدام المصادقة التفاعلية أثناء التجريب والتطوير التكراري. تمكنك المصادقة التفاعلية من التحكم في الوصول إلى الموارد (مثل خدمة الويب) على أساس كل مستخدم.
مبدأ الخدمة: يمكنك إنشاء حساب أساسي للخدمة في Azure Active Directory، واستخدامه للمصادقة أو الحصول على رمز مميز. يتم استخدام مبدأ الخدمة عندما تحتاج إلى عملية تلقائية للمصادقة على الخدمة دون الحاجة إلى تفاعل المستخدم. على سبيل المثال، برنامج نصي مستمر للتكامل والنشر يقوم بتدريب نموذج واختباره في كل مرة يتغير فيها رمز التدريب.
جلسة Azure CLI: يمكنك استخدام جلسة عمل Azure CLI نشطة للمصادقة. يتم استخدام مصادقة Azure CLI أثناء الاختبار والتطوير التكراري، أو عندما تحتاج إلى عملية مؤتمتة للمصادقة على الخدمة باستخدام جلسة تم مصادقتها بشكل مسبق. يمكنك تسجيل الدخول إلى Azure عبر Azure CLI على محطة العمل المحلية، دون تخزين بيانات الاعتماد في تعليمات Python البرمجية أو مطالبة المستخدم بالمصادقة. وبالمثل، يمكنك إعادة استخدام نفس البرامج النصية كجزء من خطوط أنابيب التكامل والنشر المستمرين، أثناء مصادقة Azure CLI باستخدام هوية أساسية للخدمة.
الهوية المدارة: عند استخدام Azure التعلم الآلي SDK على جهاز Azure الظاهري، يمكنك استخدام هوية مدارة ل Azure. يسمح سير العمل هذا للجهاز الظاهري بالاتصال بمساحة العمل باستخدام الهوية المدارة، دون تخزين بيانات الاعتماد في تعليمات Python البرمجية أو مطالبة المستخدم بالمصادقة. يمكن أيضا تكوين مجموعات الحوسبة Azure التعلم الآلي لاستخدام هوية مدارة للوصول إلى مساحة العمل عند تدريب النماذج.
بغض النظر عن سير عمل المصادقة المستخدم، يتم استخدام التحكم في الوصول المستند إلى دور Azure (Azure RBAC) لتحديد نطاق مستوى الوصول (التفويض) المسموح به للموارد. على سبيل المثال، قد يكون لدى المسؤول أو عملية التشغيل الآلي حق الوصول لإنشاء مثيل حوسبة، ولكن ليس استخدامه، بينما يمكن لعالم البيانات استخدامه، ولكن ليس حذفه أو إنشائه. لمزيد من المعلومات، راجع إدارة الوصول إلى مساحة عمل Azure التعلم الآلي.
يمكن استخدام Azure AD Conditional Access لمزيد من التحكم في الوصول إلى مساحة العمل لكل سير عمل مصادقة أو تقييده. على سبيل المثال، يمكن للمشرف السماح بالوصول إلى مساحة العمل من الأجهزة المدارة فقط.
المتطلبات الأساسية
هام
تتطلب أوامر Azure CLI في هذه المقالة الامتداد azure-cli-ml، أو v1 ، ل Azure التعلم الآلي. يتوفر الآن الإصدار 2 CLI المحسن (المعاينة) باستخدام الإضافة ml ويوصى به. الملحقات غير متوافقة، لذلك لن تعمل أوامر v2 CLI للخطوات الواردة في هذه المقالة. ومع ذلك ، يمكن التفاعل مع مساحات عمل التعلم الآلي وجميع الموارد الأساسية من أي منهما ، مما يعني أنه يمكن لمستخدم واحد إنشاء مساحة عمل باستخدام الإصدار 1 CLI ويمكن لمستخدم آخر إرسال الوظائف إلى نفس مساحة العمل باستخدام الإصدار 2 CLI.
للعثور على الإضافات التي قمت بتثبيتها، استخدم az extension list. إذا كانت قائمة الملحقات تحتوي على azure-cli-ml، لديك الامتداد الصحيح للخطوات الواردة في هذه المقالة.
لمزيد من المعلومات حول تثبيت الملحقات المختلفة واستخدامها، راجع المقالات التالية:
azure-cli-ml- تثبيت CLI (الإصدار 1) وإعداده واستخدامهml- تثبيت CLI (الإصدار 2) وإعداده
- أنشئ مساحة عمل التعلم الآلي من "Azure".
- قم بتكوين بيئة التطوير الخاصة بك لتثبيت Azure التعلم الآلي SDK، أو استخدم مثيل حساب Azure التعلم الآلي مع حزمة SDK المثبتة بالفعل.
Azure Active Directory
تعتمد كافة مهام سير عمل المصادقة لمساحة العمل الخاصة بك على Azure Active Directory. إذا كنت تريد أن يقوم المستخدمون بالمصادقة باستخدام حسابات فردية، فيجب أن يكون لديهم حسابات في Azure AD. إذا كنت ترغب في استخدام مبادئ الخدمة، فيجب أن تكون موجودة في Azure AD. الهويات المدارة هي أيضا ميزة من سمات Azure AD.
لمزيد من المعلومات حول Azure AD، راجع ما هي مصادقة Azure Active Directory.
بمجرد إنشاء حسابات Azure AD، راجع إدارة الوصول إلى مساحة عمل Azure التعلم الآلي للحصول على معلومات حول منحهم حق الوصول إلى مساحة العمل والعمليات الأخرى في Azure التعلم الآلي.
تكوين أصل خدمة
لاستخدام مبدأ خدمة (SP)، يجب عليك أولا إنشاء SP ومنحه حق الوصول إلى مساحة العمل الخاصة بك. كما ذكرنا سابقا، يتم استخدام التحكم في الوصول المستند إلى دور Azure (Azure RBAC) للتحكم في الوصول، لذلك يجب عليك أيضا تحديد الوصول لمنح SP.
هام
عند استخدام أصل خدمة، امنحه الحد الأدنى من الوصول المطلوب للمهمة التي يستخدم من أجلها. على سبيل المثال، لن تمنح مالكا رئيسيا للخدمة أو مساهما حق الوصول إذا كان كل ما يتم استخدامه من أجله هو قراءة الرمز المميز للوصول لنشر الويب.
السبب في منح أقل وصول هو أن مدير الخدمة يستخدم كلمة مرور للمصادقة ، وقد يتم تخزين كلمة المرور كجزء من برنامج نصي تلقائي. إذا تم تسريب كلمة المرور، فإن وجود الحد الأدنى من الوصول المطلوب لمهام معينة يقلل من الاستخدام الضار ل SP.
أسهل طريقة لإنشاء SP ومنح حق الوصول إلى مساحة العمل الخاصة بك هي باستخدام Azure CLI. لإنشاء أصل خدمة ومنحه حق الوصول إلى مساحة العمل الخاصة بك، اتبع الخطوات التالية:
ملاحظة
يجب أن تكون مسؤولا في الاشتراك لتنفيذ جميع هذه الخطوات.
المصادقة على اشتراك Azure:
az loginإذا تمكن CLI من فتح المستعرض الافتراضي، فسيقوم بذلك وتحميل صفحة تسجيل الدخول. خلاف ذلك ، تحتاج إلى فتح متصفح واتباع الإرشادات الموجودة في سطر الأوامر. تتضمن التعليمات التصفح إلى https://aka.ms/devicelogin رمز التفويض وإدخاله.
إذا كان لديك اشتراكات Azure متعددة، فيمكنك استخدام
az account set -s <subscription name or ID>الأمر لتعيين الاشتراك. لمزيد من المعلومات، راجع استخدام اشتراكات Azure المتعددة.للحصول على طرق أخرى للمصادقة، راجع تسجيل الدخول باستخدام Azure CLI.
إنشاء أصل الخدمة. في المثال التالي، يتم إنشاء SP يسمى ml-auth :
az ad sp create-for-rbac --sdk-auth --name ml-auth --role Contributor --scopes /subscriptions/<subscription id>سيكون الإخراج JSON مشابها لما يلي. لاحظ الحقول
clientIdو ، وclientSecrettenantId، حيث ستحتاج إليها لخطوات أخرى في هذه المقالة.{ "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" }استرداد تفاصيل أصل الخدمة باستخدام القيمة التي
clientIdتم إرجاعها في الخطوة السابقة:az ad sp show --id your-client-idJSON التالي هو مثال مبسط للإخراج من الأمر. لاحظ الحقل
objectId، حيث ستحتاج إلى قيمته للخطوة التالية.{ "accountEnabled": "True", "addIns": [], "appDisplayName": "ml-auth", ... ... ... "objectId": "your-sp-object-id", "objectType": "ServicePrincipal" }اسمح ل SP بالوصول إلى مساحة عمل Azure التعلم الآلي. ستحتاج إلى اسم مساحة العمل الخاصة بك ، واسم مجموعة الموارد الخاصة بها للمعلمات
-wوالمعلمات-g، على التوالي. بالنسبة للمعلمة--user، استخدمobjectIdالقيمة من الخطوة السابقة. تسمح لك المعلمة--roleبتعيين دور الوصول لمدير الخدمة. في المثال التالي، يتم تعيين SP إلى دور المالك .هام
يسمح وصول المالك لمدير الخدمة بإجراء أي عملية تقريبا في مساحة العمل الخاصة بك. يتم استخدامه في هذه الوثيقة لتوضيح كيفية منح حق الوصول. في بيئة الإنتاج، توصي Microsoft بمنح مدير الخدمة الحد الأدنى من الوصول اللازم لأداء الدور الذي تنوي القيام به. للحصول على معلومات حول إنشاء دور مخصص مع الوصول اللازم للسيناريو الخاص بك، راجع إدارة الوصول إلى مساحة عمل Azure التعلم الآلي.
APPLY TO: Azure CLI ml extension
ع1
v2 (معاينة)az ml workspace share -w your-workspace-name -g your-resource-group-name --user your-sp-object-id --role ownerلا تنتج هذه الدعوة أي مخرجات عن النجاح.
تكوين هوية مدارة
هام
يتم دعم الهوية المدارة فقط عند استخدام Azure التعلم الآلي SDK من جهاز Azure الظاهري أو مع مجموعة Azure التعلم الآلي compute. استخدام هوية مدارة مع مجموعة حوسبة قيد المعاينة حاليا.
الهوية المدارة باستخدام جهاز ظاهري
تمكين هوية مدارة تم تعيينها بواسطة النظام لموارد Azure على الجهاز الظاهري.
من مدخل Azure، حدد مساحة العمل الخاصة بك ثم حدد التحكم في الوصول (IAM).
حدد إضافة، إضافة تعيين دور لفتح صفحة إضافة تعيين دور.
تعيين الدور التالي. للحصول على خطوات تفصيلية، راجع تعيين أدوار Azure باستخدام مدخل Microsoft Azure.
إعداد القيمة الدور الدور الذي تريد تعيينه. تعيين الوصول إلى الهوية المُدارة الأعضاء الهوية المدارة التي أنشأتها سابقا 
الهوية المدارة باستخدام مجموعة الحوسبة
لمزيد من المعلومات، راجع إعداد الهوية المدارة لنظام مجموعة الحوسبة.
استخدام المصادقة التفاعلية
هام
تستخدم المصادقة التفاعلية متصفحك ، وتتطلب ملفات تعريف الارتباط (بما في ذلك ملفات تعريف ارتباط الطرف 3rd). إذا قمت بتعطيل ملفات تعريف الارتباط، فقد تتلقى رسالة خطأ مثل "تعذر علينا تسجيل دخولك". قد يحدث هذا الخطأ أيضا إذا قمت بتمكين مصادقة Azure AD متعددة العوامل.
تستخدم معظم الأمثلة في الوثائق والعينات المصادقة التفاعلية. على سبيل المثال، عند استخدام SDK، هناك استدعاءان للوظائف سيطالبانك تلقائيا بتدفق مصادقة يستند إلى واجهة المستخدم:
سيؤدي استدعاء الوظيفة إلى
from_config()إصدار المطالبة.from azureml.core import Workspace ws = Workspace.from_config()تبحث الدالة
from_config()عن ملف JSON يحتوي على معلومات اتصال مساحة العمل.سيؤدي استخدام المنشئ لتوفير معلومات الاشتراك ومجموعة الموارد ومساحة العمل أيضا إلى المطالبة بالمصادقة التفاعلية
Workspace.ws = Workspace(subscription_id="your-sub-id", resource_group="your-resource-group-id", workspace_name="your-workspace-name" )
تلميح
إذا كان لديك حق الوصول إلى مستأجرين متعددين، فقد تحتاج إلى استيراد الفئة وتحديد المستأجر الذي تستهدفه بشكل صريح. سيؤدي الاتصال بالمنشئ InteractiveLoginAuthentication أيضا إلى مطالبتك بتسجيل الدخول على غرار المكالمات المذكورة أعلاه.
from azureml.core.authentication import InteractiveLoginAuthentication
interactive_auth = InteractiveLoginAuthentication(tenant_id="your-tenant-id")
عند استخدام Azure CLI، az login يتم استخدام الأمر لمصادقة جلسة عمل CLI. لمزيد من المعلومات، راجع بدء استخدام Azure CLI.
تلميح
إذا كنت تستخدم SDK من بيئة سبق لك فيها المصادقة بشكل تفاعلي باستخدام Azure CLI، فيمكنك استخدام AzureCliAuthentication الفئة للمصادقة إلى مساحة العمل باستخدام بيانات الاعتماد المخزنة مؤقتا بواسطة CLI:
from azureml.core.authentication import AzureCliAuthentication
cli_auth = AzureCliAuthentication()
ws = Workspace(subscription_id="your-sub-id",
resource_group="your-resource-group-id",
workspace_name="your-workspace-name",
auth=cli_auth
)
استخدام المصادقة الرئيسية للخدمة
للمصادقة على مساحة العمل الخاصة بك من SDK، باستخدام أصل خدمة، استخدم منشئ الفئة ServicePrincipalAuthentication . استخدم القيم التي حصلت عليها عند إنشاء مزود الخدمة كمعلمات. خرائط المعلمة tenant_id إلى من الأعلى ، والخرائط إلى ، service_principal_id والخرائط service_principal_password إلى clientSecrettenantIdclientId.
from azureml.core.authentication import ServicePrincipalAuthentication
sp = ServicePrincipalAuthentication(tenant_id="your-tenant-id", # tenantID
service_principal_id="your-client-id", # clientId
service_principal_password="your-client-secret") # clientSecret
sp يحتوي المتغير الآن على كائن مصادقة تستخدمه مباشرة في SDK. بشكل عام ، من الجيد تخزين المعرفات / الأسرار المستخدمة أعلاه في متغيرات البيئة كما هو موضح في التعليمة البرمجية التالية. يمنع التخزين في متغيرات البيئة من التحقق من المعلومات عن طريق الخطأ في GitHub ريبو.
import os
sp = ServicePrincipalAuthentication(tenant_id=os.environ['AML_TENANT_ID'],
service_principal_id=os.environ['AML_PRINCIPAL_ID'],
service_principal_password=os.environ['AML_PRINCIPAL_PASS'])
بالنسبة لعمليات سير العمل التلقائية التي يتم تشغيلها في Python وتستخدم SDK بشكل أساسي، يمكنك استخدام هذا الكائن كما هو في معظم الحالات للمصادقة. تتم مصادقة التعليمة البرمجية التالية إلى مساحة العمل الخاصة بك باستخدام كائن المصادقة الذي قمت بإنشائه.
from azureml.core import Workspace
ws = Workspace.get(name="ml-example",
auth=sp,
subscription_id="your-sub-id",
resource_group="your-rg-name")
ws.get_details()
استخدام مبدأ خدمة من Azure CLI
يمكنك استخدام مبدأ خدمة لأوامر Azure CLI. لمزيد من المعلومات، راجع تسجيل الدخول باستخدام مبدأ خدمة.
استخدام مبدأ خدمة مع واجهة برمجة تطبيقات REST (معاينة)
يمكن أيضا استخدام مبدأ الخدمة للمصادقة على واجهة برمجة تطبيقات Azure التعلم الآلي REST (معاينة). يمكنك استخدام تدفق منح بيانات اعتماد عميل Azure Active Directory، مما يسمح بإجراء مكالمات من خدمة إلى خدمة للمصادقة بدون رأس في مهام سير العمل التلقائية.
هام
إذا كنت تستخدم حاليا مكتبة مصادقة Azure Active Directory (ADAL) للحصول على بيانات الاعتماد، نوصي بالترحيل إلى مكتبة مصادقة Microsoft (MSAL). من المقرر أن ينتهي دعم ADAL في 30 يونيو 2022.
للحصول على معلومات وعينات حول المصادقة باستخدام MSAL، راجع المقالات التالية:
- جافا سكريبت - كيفية ترحيل تطبيق جافا سكريبت من ADAL.js إلى MSAL.js.
- Node.js - كيفية ترحيل تطبيق Node.js من ADAL إلى MSAL.
- بايثون - دليل الهجرة ADAL إلى MSAL ل Python.
استخدام مصادقة الهوية المدارة
للمصادقة إلى مساحة العمل من جهاز ظاهري أو مجموعة حوسبة تم تكوينها باستخدام هوية مدارة، استخدم الفئة MsiAuthentication . يوضح المثال التالي كيفية استخدام هذه الفئة للمصادقة إلى مساحة عمل:
from azureml.core.authentication import MsiAuthentication
msi_auth = MsiAuthentication()
ws = Workspace(subscription_id="your-sub-id",
resource_group="your-resource-group-id",
workspace_name="your-workspace-name",
auth=msi_auth
)
استخدام الوصول المشروط
بصفتك مسؤولا، يمكنك فرض نهج الوصول المشروط ل Azure AD للمستخدمين الذين يسجلون الدخول إلى مساحة العمل. على سبيل المثال، يمكنك طلب المصادقة الثنائية، أو السماح بتسجيل الدخول من الأجهزة المدارة فقط. لاستخدام الوصول المشروط ل Azure التعلم الآلي مساحات العمل على وجه التحديد، قم بتعيين نهج الوصول المشروط إلى تطبيق التعلم الآلي Cloud.