إعداد المصادقة بين Azure التعلم الآلي والخدمات الأخرى

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

يتكون Azure التعلم الآلي من خدمات Azure متعددة. هناك طرق متعددة يمكن أن تحدث بها المصادقة بين Azure التعلم الآلي والخدمات التي تعتمد عليها.

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

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

قبل اتباع الخطوات الواردة في هذه المقالة، تأكد من توفر المتطلبات الأساسية التالية لديك:

  • مساحة عمل للتعلم الآلي من Microsoft Azure. إذا لم يكن لديك واحدة، فاستخدم الخطوات الواردة في مقالة التشغيل السريع: إنشاء موارد مساحة العمل لإنشاء واحدة.

  • Azure CLI والملحق mlأو Azure التعلم الآلي Python SDK v2:

    • لتثبيت Azure CLI والملحق، راجع تثبيت CLI (v2) وإعداده واستخدامه.

      هام

      تفترض أمثلة CLI في هذه المقالة أنك تستخدم Bash (أو متوافق). على سبيل المثال، من النظام الخاص بـ Linux أو نظام Windows الفرعي لـ Linux‬.

    • لتثبيت Python SDK v2، استخدم الأمر التالي:

      pip install azure-ai-ml azure-identity
      

      لتحديث تثبيت موجود من SDK إلى أحدث إصدار، استخدم الأمر التالي:

      pip install --upgrade azure-ai-ml azure-identity
      

      لمزيد من المعلومات، راجع تثبيت Python SDK v2 ل Azure التعلم الآلي.

  • لتعيين الأدوار، يجب أن يكون لتسجيل الدخول لاشتراك Azure الخاص بك دور مُشغل الهوية المُدار، أو دور آخر يمنح الإجراءات المطلوبة (مثل المالك).

  • يجب أن تكون على دراية بإنشاء الهويات المُدارة والتعامل معها.

Azure Container Registry وأنواع الهوية

يسرد الجدول التالي مصفوفة الدعم عند المصادقة على Azure Container Registry، اعتمادا على أسلوب المصادقة وتكوين الوصول إلى الشبكة العامة لAzure Container Registry.

أسلوب المصادقة تعطيل الوصول إلى
الشبكة العامة
تمكين الوصول إلى الشبكة العامة لسجل
حاويات Azure
مستخدم مسؤول جديد
الهوية المدارة المعينة من قبل نظام مساحة العمل
الهوية
المدارة المعينة من قبل المستخدم لمساحة العمل مع تعيين دور ACRPull للهوية

الهوية المُدارة التي يعيّنها المُستخدم

مساحة عمل

يمكنك إضافة هوية مدارة معينة من قبل المستخدم عند إنشاء مساحة عمل Azure التعلم الآلي من مدخل Microsoft Azure. استخدم الخطوات التالية أثناء إنشاء مساحة العمل:

  1. من صفحة Basics، حدد Azure Storage Account وAzure Container Registry وAzure Key Vault الذي تريد استخدامه مع مساحة العمل.
  2. من صفحة الهوية، حدد الهوية المعينة من قبل المستخدم ثم حدد الهوية المدارة لاستخدامها.

تعيينات دور Azure RBAC التالية مطلوبة على الهوية المدارة المعينة من قبل المستخدم لمساحة عمل Azure التعلم الآلي للوصول إلى البيانات على الموارد المرتبطة بمساحة العمل.

Resource الإذن
مساحة عمل Azure Machine Learning مساهم
تخزين Azure المساهم (مستوى التحكم) + Storage Blob Data Contributor (مستوى البيانات، اختياري، لتمكين معاينة البيانات في Azure التعلم الآلي studio)
Azure Key Vault (عند استخدام نموذج إذن RBAC) المساهم (مستوى التحكم) + key Vault مسؤول istrator (مستوى البيانات)
Azure Key Vault (عند استخدام نموذج إذن نهج الوصول) المساهم + أي أذونات نهج الوصول إلى جانب عمليات المسح
Azure Container Registry مساهم
Azure Application Insights مساهم

لإنشاء تعيينات الأدوار تلقائيا على هويتك المدارة المعينة من قبل المستخدم، يمكنك استخدام قالب ARM هذا.

تلميح

بالنسبة لمساحة العمل التي تحتوي على مفاتيح تشفير يديرها العميل، يمكنك تمرير هوية مُدارة يحددها المستخدم للمصادقة من التخزين إلى Key Vault. user-assigned-identity-for-cmk-encryption استخدم المعلمات (CLI) أو user_assigned_identity_for_cmk_encryption (SDK) لتمرير الهوية المدارة. يمكن أن تكون هذه الهوية المُدارة هي نفسها أو مختلفة مثل الهوية المُدارة التي قام المستخدم الأساسي بتعيينها لمساحة العمل.

لإنشاء مساحة عمل مع هويات متعددة يعينها المستخدم، استخدم إحدى الطرق التالية:

ينطبق على:ملحق CLI للتعلم الآلي من Microsoft Azure v2 (الحالي)

az ml workspace create -f workspace_creation_with_multiple_UAIs.yml --subscription <subscription ID> --resource-group <resource group name> --name <workspace name>

حيث تكون محتويات workspace_creation_with_multiple_UAIs.yml كما يلي:

location: <region name>
identity:
   type: user_assigned
   user_assigned_identities:
    '<UAI resource ID 1>': {}
    '<UAI resource ID 2>': {}
storage_account: <storage acccount resource ID>
key_vault: <key vault resource ID>
image_build_compute: <compute(virtual machine) resource ID>
primary_user_assigned_identity: <one of the UAI resource IDs in the above list>

لتحديث الهويات المعينة من قبل المستخدم لمساحة عمل، بما في ذلك إضافة هوية جديدة أو حذف الهويات الموجودة، استخدم إحدى الطرق التالية:

ينطبق على:ملحق CLI للتعلم الآلي من Microsoft Azure v2 (الحالي)

az ml workspace update -f workspace_update_with_multiple_UAIs.yml --subscription <subscription ID> --resource-group <resource group name> --name <workspace name>

حيث تكون محتويات workspace_update_with_multiple_UAIs.yml كما يلي:

identity:
   type: user_assigned
   user_assigned_identities:
    '<UAI resource ID 1>': {}
    '<UAI resource ID 2>': {}
primary_user_assigned_identity: <one of the UAI resource IDs in the above list>

تلميح

لإضافة UAI جديد، يمكنك تحديد معرف UAI الجديد ضمن القسم user_assigned_identities بالإضافة إلى UAIs الموجودة، مطلوب لتمرير جميع معرفات UAI الموجودة.
لحذف واحد أو أكثر من UAIs الموجودة، يمكنك وضع معرفات UAI التي يجب الاحتفاظ بها ضمن القسم user_assigned_identities، سيتم حذف معرفات UAI المتبقية.
لتحديث نوع الهوية من SAI إلى UAI|SAI، يمكنك تغيير النوع من "user_assigned" إلى "system_assigned، user_assigned".

نظام مجموعة الحساب

إشعار

تدعم مجموعات حساب التعلم الآلي من Microsoft Azure هوية واحدة معينة من قِبل النظام أو هويات متعددة معينة من قِبل المستخدم، وليس كلاهما في نفس الوقت.

الهوية المدارة الافتراضية هي الهوية المدارة المعينة من قبل النظام أو أول هوية مدارة يعينها المستخدم.

أثناء التشغيل هناك تطبيقان للهوية:

  1. يستخدم النظام هوية لإعداد عمليات تحميل تخزين المستخدم وسجل الحاوية ومخازن البيانات.

    • في هذه الحالة، سيستخدم النظام الهوية المدارة الافتراضية.
  2. يمكنك تطبيق هوية للوصول إلى الموارد من داخل التعليمات البرمجية لمهمة تم إرسالها:

    • في هذه الحالة، قم بتوفير client_id المطابقة للهوية المدارة التي تريد استخدامها لاسترداد بيانات اعتماد.
    • بدلاً من ذلك، احصل على معرف عميل الهوية المعينة من قبل المستخدم من خلال متغير البيئة DEFAULT_IDENTITY_CLIENT_ID.

    على سبيل المثال، لاسترداد رمز مميز لمخزن بيانات بهوية مُدارة افتراضياً:

    client_id = os.environ.get('DEFAULT_IDENTITY_CLIENT_ID')
    credential = ManagedIdentityCredential(client_id=client_id)
    token = credential.get_token('https://storage.azure.com/')
    

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

ينطبق على:ملحق CLI للتعلم الآلي من Microsoft Azure v2 (الحالي)

az ml compute create -f create-cluster.yml

حيث تكون محتويات create-cluster.yml كما يلي:

$schema: https://azuremlschemas.azureedge.net/latest/amlCompute.schema.json 
name: basic-example
type: amlcompute
size: STANDARD_DS3_v2
min_instances: 0
max_instances: 2
idle_time_before_scale_down: 120
identity:
  type: user_assigned
  user_assigned_identities: 
    - resource_id: "identity_resource_id"

للمقارنة، المثال التالي من ملف YAML الذي ينشئ نظام مجموعة يستخدم هوية مدارة معينة من قبل النظام:

$schema: https://azuremlschemas.azureedge.net/latest/amlCompute.schema.json 
name: basic-example
type: amlcompute
size: STANDARD_DS3_v2
min_instances: 0
max_instances: 2
idle_time_before_scale_down: 120
identity:
  type: system_assigned

إذا كان لديك مجموعة حوسبة موجودة، يمكنك التغيير بين الهوية المدارة من قبل المستخدم والهوية المدارة من قبل النظام. توضح الأمثلة التالية كيفية تغيير التكوين:

الهوية المدارة المعينة من قبل المستخدم

export MSI_NAME=my-cluster-identity
export COMPUTE_NAME=mycluster-msi

does_compute_exist()
{
  if [ -z $(az ml compute show -n $COMPUTE_NAME --query name) ]; then
    echo false
  else
    echo true
  fi
}

echo "Creating MSI $MSI_NAME"
# Get the resource id of the identity
IDENTITY_ID=$(az identity show --name "$MSI_NAME" --query id -o tsv | tail -n1 | tr -d "[:cntrl:]" || true)
if [[ -z $IDENTITY_ID ]]; then
    IDENTITY_ID=$(az identity create -n "$MSI_NAME" --query id -o tsv | tail -n1 | tr -d "[:cntrl:]")
fi
echo "MSI created: $MSI_NAME"
sleep 15 # Let the previous command finish: https://github.com/Azure/azure-cli/issues/8530


echo "Checking if compute $COMPUTE_NAME already exists"
if [ "$(does_compute_exist)" == "true" ]; then
  echo "Skipping, compute: $COMPUTE_NAME exists"
else
  echo "Provisioning compute: $COMPUTE_NAME"
  az ml compute create --name "$COMPUTE_NAME" --type amlcompute --identity-type user_assigned --user-assigned-identities "$IDENTITY_ID"
fi
az ml compute update --name "$COMPUTE_NAME" --identity-type user_assigned --user-assigned-identities "$IDENTITY_ID"

الهوية المدارة المعينة من قبل النظام

export COMPUTE_NAME=mycluster-sa

does_compute_exist()
{
  if [ -z $(az ml compute show -n $COMPUTE_NAME --query name) ]; then
    echo false
  else
    echo true
  fi
}

echo "Checking if compute $COMPUTE_NAME already exists"
if [ "$(does_compute_exist)" == "true" ]; then
  echo "Skipping, compute: $COMPUTE_NAME exists"
else
  echo "Provisioning compute: $COMPUTE_NAME"
  az ml compute create --name "$COMPUTE_NAME" --type amlcompute
fi

az ml compute update --name "$COMPUTE_NAME" --identity-type system_assigned

تخزين البيانات.

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

في المقابل، مخازن البيانات التي تستخدم معلومات اتصال ذاكرة التخزين المؤقت للمصادقة المستندة إلى بيانات الاعتماد، مثل مفتاح حساب التخزين أو رمز SAS المميز، في مخزن المفاتيح المقترن بمساحة العمل. يحتوي هذا الأسلوب على قيود على أن مستخدمي مساحة العمل الآخرين الذين لديهم أذونات كافية يمكنهم استرداد بيانات الاعتماد هذه، والتي قد تكون مصدر قلق أمني لبعض المؤسسات.

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

هناك سيناريوهان يمكنك منهما تطبيق الوصول إلى البيانات المستندة إلى الهوية في التعلم الآلي من Microsoft Azure. هذه السيناريوهات مناسبة تمامًا للوصول المستند إلى الهوية عندما تعمل مع البيانات السرية وتحتاج إلى إدارة وصول أكثر دقة إلى البيانات:

  • الوصول إلى خدمات التخزين
  • تدريب نماذج التعلم الآلي

يسمح لك الوصول المستند إلى الهوية باستخدام عناصر التحكم في الوصول المستندة إلى الدور (RBAC) لتقييد الهويات، مثل المستخدمين أو موارد الحساب، التي لديها حق الوصول إلى البيانات.

الوصول إلى خدمات التخزين

يمكنك الاتصال بخدمات التخزين عبر الوصول إلى البيانات المستندة إلى الهوية باستخدام Azure التعلم الآلي datastores.

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

ينطبق نفس السلوك عند العمل مع البيانات بشكل تفاعلي عبر Jupyter Notebook على الكمبيوتر المحلي أو مثيل الحساب.

إشعار

تتضمن بيانات الاعتماد المخزنة عبر المصادقة المستندة إلى بيانات الاعتماد معرفات الاشتراك ورمز توقيع الوصول المشترك (SAS) ومفتاح الوصول إلى التخزين والمعلومات الأساسية للخدمة، مثل معرفات العميل ومعرفات المستأجر.

للمساعدة في التأكد من الاتصال بأمان بخدمة التخزين الخاصة بك على Azure، يتطلب التعلم الآلي من Microsoft Azure أن يكون لديك إذن للوصول إلى تخزين البيانات المقابل.

تحذير

الوصول عبر المستأجر إلى حسابات التخزين غير مدعوم. إذا كانت هناك حاجة إلى الوصول عبر المستأجرين للسيناريو الخاص بك، فيرجى التواصل مع الاسم المستعار لفريق دعم البيانات في Azure التعلم الآلي للحصول على amldatasupport@microsoft.com المساعدة في حل التعليمات البرمجية المخصص.

يدعم الوصول إلى البيانات المستندة إلى الهوية الاتصالات بخدمات التخزين التالية فقط.

  • Azure Blob Storage
  • Azure Data Lake Storage الجيل الأول
  • Azure Data Lake Storage Gen2

للوصول إلى خدمات التخزين هذه، يجب أن يكون لديك على الأقل وصول Storage Blob Data Reader إلى حساب التخزين. يمكن لمالكي حساب التخزين فقط تغيير مستوى الوصول الخاص بك عبر مدخل Microsoft Azure.

الوصول إلى البيانات لتدريب المهام على الحوسبة باستخدام الهوية المدارة

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

لتمكين المصادقة باستخدام الهوية المدارة للحساب:

  • إنشاء حساب مع تمكين الهوية المدارة. راجع قسم نظام مجموعة الحوسبة، أو لمثيل الحساب، قسم تعيين الهوية المدارة.

    هام

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

  • امنح الهوية المدارة للحساب على الأقل دور Storage Blob Data Reader على حساب التخزين.

  • إنشاء أي مخازن بيانات مع تمكين المصادقة المستندة إلى الهوية. راجع إنشاء مخازن البيانات.

إشعار

سيكون اسم الهوية المدارة للنظام الذي تم إنشاؤه لمثيل الحساب أو نظام المجموعة بالتنسيق /workspace-name/computes/compute-name في معرف Microsoft Entra.

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

للحصول على معلومات حول استخدام تكوين Azure RBAC للتخزين، راجع عناصر التحكم في الوصول المستندة إلى الدور.

الوصول إلى البيانات الخاصة بمهام التدريب على مجموعات الحوسبة باستخدام هوية المستخدم

ينطبق على:ملحق CLI للتعلم الآلي من Microsoft Azure v2 (الحالي)

عند التدريب على مجموعات الحوسبة التعلم الآلي Azure، يمكنك المصادقة على التخزين مع رمز Microsoft Entra المميز للمستخدم.

يسمح لك وضع المصادقة هذا بما يلي:

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

هام

لهذه الوظيفة القيود التالية

  • يتم دعم الميزة للتجارب المقدمة عبر Azure التعلم الآلي CLI وPython SDK V2، ولكن ليس عبر ML Studio.
  • لا يمكن استخدام هوية المستخدم والهوية المدارة للحساب للمصادقة داخل نفس الوظيفة.
  • بالنسبة إلى مهام البنية الأساسية لبرنامج ربط العمليات التجارية، نوصي بتعيين هوية المستخدم على مستوى الخطوة الفردية التي سيتم تنفيذها على حساب، بدلا من مستوى مسار الجذر. ( بينما يتم دعم إعداد الهوية على كل من مستويات المسار الجذر والخطوة، يكون لإعداد مستوى الخطوة الأسبقية إذا تم تعيين كليهما. ومع ذلك، بالنسبة للبنية الأساسية لبرنامج ربط العمليات التجارية التي تحتوي على مكونات البنية الأساسية لبرنامج ربط العمليات التجارية، يجب تعيين الهوية على الخطوات الفردية التي سيتم تنفيذها. لن تعمل الهوية المعينة في مسار الجذر أو مستوى مكون المسار. لذلك، نقترح تعيين الهوية على مستوى الخطوة الفردية للتبسيط.)

توضح الخطوات التالية كيفية إعداد الوصول إلى البيانات باستخدام هوية المستخدم لوظائف التدريب على مجموعات الحوسبة من CLI.

  1. امنح هوية المستخدم حق الوصول إلى موارد التخزين. على سبيل المثال، امنح StorageBlobReader حق الوصول إلى حساب التخزين المحدد الذي تريد استخدامه أو منح إذن يستند إلى ACL لمجلدات أو ملفات معينة في تخزين Azure Data Lake Gen 2.

  2. إنشاء مخزن بيانات التعلم الآلي من Microsoft Azure دون بيانات اعتماد مخزنة مؤقتًا لحساب التخزين. إذا كان مخزن البيانات يحتوي على بيانات اعتماد مخزنة مؤقتًا، مثل مفتاح حساب التخزين، يتم استخدام بيانات الاعتماد هذه بدلًا من هوية المستخدم.

  3. إرسال مهمة تدريب مع تعيين هوية الخاصية إلى النوع: user_identity، كما هو موضح في مواصفات الوظيفة التالية. في أثناء مهمة التدريب، تحدث المصادقة على التخزين عبر هوية المستخدم الذي يرسل الوظيفة.

    إشعار

    إذا تركت خاصية الهوية غير محددة ولم يكن مخزن البيانات يحتوي على بيانات اعتماد مخزنة مؤقتًا، فإن الهوية المدارة للحساب تصبح الخيار الاحتياطي.

    command: |
    echo "--census-csv: ${{inputs.census_csv}}"
    python hello-census.py --census-csv ${{inputs.census_csv}}
    code: src
    inputs:
    census_csv:
        type: uri_file 
        path: azureml://datastores/mydata/paths/census.csv
    environment: azureml:AzureML-sklearn-1.0-ubuntu20.04-py38-cpu@latest
    compute: azureml:cpu-cluster
    identity:
    type: user_identity
    

توضح الخطوات التالية كيفية إعداد الوصول إلى البيانات باستخدام هوية المستخدم لوظائف التدريب على مجموعات الحوسبة من Python SDK.

  1. منح الوصول إلى البيانات وإنشاء مخزن البيانات كما هو موضح أعلاه ل CLI.

  2. إرسال مهمة تدريب مع تعيين معلمة الهوية إلى azure.ai.ml.UserIdentityConfiguration. يمكن إعداد المعلمة هذا الوظيفة من الوصول إلى البيانات نيابة عن المستخدم الذي يرسل المهمة.

    from azure.ai.ml import command
    from azure.ai.ml.entities import Data, UriReference
    from azure.ai.ml import Input
    from azure.ai.ml.constants import AssetTypes
    from azure.ai.ml import UserIdentityConfiguration
    
    # Specify the data location
    my_job_inputs = {
        "input_data": Input(type=AssetTypes.URI_FILE, path="<path-to-my-data>")
    }
    
    # Define the job
    job = command(
        code="<my-local-code-location>", 
        command="python <my-script>.py --input_data ${{inputs.input_data}}",
        inputs=my_job_inputs,
        environment="AzureML-sklearn-0.24-ubuntu18.04-py37-cpu:9",
        compute="<my-compute-cluster-name>",
        identity= UserIdentityConfiguration() 
    )
    # submit the command
    returned_job = ml_client.jobs.create_or_update(job)
    

هام

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

العمل مع الشبكات الظاهرية

بشكل افتراضي، لا يمكن للتعلم الآلي من Microsoft Azure الاتصال بحساب تخزين خلف جدار حماية أو في شبكة ظاهرية.

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

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

  • في السيناريوهات التي يسمح فيها لبعض عناوين IP والشبكات الفرعية فقط بالوصول إلى التخزين، ثم يستخدم التعلم الآلي من Microsoft Azure MSI مساحة العمل لإنجاز معاينات البيانات وملفات التعريف.

  • إذا كان التخزين الخاص بك هو ADLS Gen 2 أو Blob ولديه إعدادات الشبكة الظاهرية، يمكن للعملاء استخدام هوية المستخدم أو MSI لمساحة العمل اعتمادًا على إعدادات مخزن البيانات المحددة أثناء الإنشاء.

  • إذا كان إعداد الشبكة الظاهرية هو "السماح لخدمات Azure في قائمة الخدمات الموثوق بها بالوصول إلى حساب التخزين هذا"، فسيتم استخدام Workspace MSI.

السيناريو: Azure Container Registry بدون مستخدم مسؤول

عند تعطيل المستخدم المسؤول ل ACR، يستخدم Azure التعلم الآلي هوية مدارة لإنشاء صور Docker وسحبها. هناك سير عملان عند تكوين Azure التعلم الآلي لاستخدام ACR مع تعطيل المستخدم المسؤول:

  • اسمح ل Azure التعلم الآلي بإنشاء مثيل ACR ثم تعطيل المستخدم المسؤول بعد ذلك.
  • إحضار ACR موجود مع تعطيل المستخدم المسؤول بالفعل.

Azure التعلم الآلي مع مثيل ACR الذي تم إنشاؤه تلقائيا

  1. إنشاء مساحة عمل Azure التعلم الآلي جديدة.

  2. تنفيذ إجراء يتطلب Azure Container Registry. على سبيل المثال، البرنامج التعليمي: تدريب النموذج الأول.

  3. احصل على اسم ACR الذي تم إنشاؤه بواسطة نظام المجموعة.

    ينطبق على:ملحق CLI للتعلم الآلي من Microsoft Azure v2 (الحالي)

    az ml workspace show -w <my workspace> \
    -g <my resource group>
    --query containerRegistry
    

    يقوم هذا الأمر بإرجاع قيمة مشابهة للنص التالي. أنت تريد فقط الجزء الأخير من النص، وهو اسم مثيل ACR:

    /subscriptions/<subscription id>/resourceGroups/<my resource group>/providers/MicrosoftContainerReggistry/registries/<ACR instance name>
    
  4. قم بتحديث ACR لتعطيل المستخدم المسؤول:

    az acr update --name <ACR instance name> --admin-enabled false
    

إحضار ACR الخاص بك

إذا كان مستخدم مسؤول ACR غير مسموح به بواسطة نهج الاشتراك، فيجب عليك أولاً إنشاء ACR بدون مستخدم مسؤول، ثم إقرانه بمساحة العمل. أيضًا، إذا كان لديك ACR موجود مع تعطيل مستخدم المسؤول، فيمكنك إرفاقه بمساحة العمل.

إنشاء ACR من Azure CLI بدون تعيين وسيطة --admin-enabled، أو من مدخل Azure بدون تمكين المستخدم المسؤول. بعد ذلك، عند إنشاء مساحة عمل التعلم الآلي من Azure، حدد معرف مورد Azure لـ ACR. يوضح المثال التالي إنشاء مساحة عمل Azure التعلم الآلي جديدة تستخدم ACR موجود:

تلميح

للحصول على قيمة المعلمة --container-registry، استخدم الأمر az acr show لإظهار معلومات لـ ACR. يحتوي الحقل id على معرّف المورد لـ ACR الخاص بك.

ينطبق على:ملحق CLI للتعلم الآلي من Microsoft Azure v2 (الحالي)

az ml workspace create -w <workspace name> \
-g <workspace resource group> \
-l <region> \
--container-registry /subscriptions/<subscription id>/resourceGroups/<acr resource group>/providers/Microsoft.ContainerRegistry/registries/<acr name>

قم بإنشاء حساب بهوية مُدارة للوصول إلى صور Docker للتدريب

للوصول إلى مساحة العمل ACR، قم بإنشاء مجموعة حوسبة للتعلم الآلي مع تمكين الهوية المُدارة المعينة من قبل النظام. يمكنك تمكين الهوية من مدخل Azure أو الاستوديو عند إنشاء الحساب، أو من Azure CLI باستخدام ما يلي. لمزيد من المعلومات، راجع استخدام الهوية المُدارة مع أنظمة المجموعات الحسابية.

ينطبق على:ملحق CLI للتعلم الآلي من Microsoft Azure v2 (الحالي)

az ml compute create --name cpu-cluster --type <cluster name>  --identity-type systemassigned

يتم منح الهوية المُدارة تلقائيًا دور ACRPull في مساحة العمل ACR لتمكين سحب صور Docker للتدريب.

إشعار

إذا قمت بإنشاء حساب أولاً، قبل إنشاء مساحة العمل ACR، يجب عليك تعيين دور ACRPull يدويًا.

استخدم صور Docker للاستدلال

بمجرد تكوين ACR بدون مستخدم مسؤول كما هو موضح سابقًا، يمكنك الوصول إلى صور Docker للاستدلال بدون مفاتيح المسؤول من خدمة Azure Kubernetes (AKS). عندما تقوم بإنشاء أو إرفاق AKS بمساحة العمل، يتم تلقائيًا تعيين وصول ACRPull إلى مساحة العمل لمبدأ خدمة المجموعة.

إشعار

إذا قمت بإحضار مجموعة AKS الخاصة بك، فيجب تمكين مبدأ الخدمة في المجموعة بدلاً من الهوية المُدارة.

السيناريو: استخدام Azure Container Registry خاص

بشكل افتراضي، يستخدم التعلم الآلي من Azure صور Docker الأساسية التي تأتي من مستودع عام تديره Microsoft. ثم يبني بيئة التدريب أو الاستدلال على تلك الصور. لمزيد من المعلومات، راجع ما هي بيئات التعلم الآلي؟.

لاستخدام صورة أساسية مخصصة داخلية لمؤسستك، يمكنك استخدام الهويات المدارة للوصول إلى ACR الخاص بك. هناك نوعان من حالات الاستخدام:

  • استخدم الصورة الأساسية للتدريب كما هي.
  • أنشئ صورة مُدارة من التعلم الآلي من Azure باستخدام صورة مخصصة كقاعدة.

اسحب الصورة الأساسية لـ Docker إلى مجموعة حوسبة التعلم الآلي للتدريب كما هي

قم بإنشاء مجموعة حوسبة للتعلم الآلي مع تمكين الهوية المُدارة المعينة من قبل النظام كما هو موضح سابقًا. ثم حدد المعرف الرئيسي للهوية المدارة.

ينطبق على:ملحق CLI للتعلم الآلي من Microsoft Azure v2 (الحالي)

az ml compute show --name <cluster name> -w <workspace> -g <resource group>

اختياريًا، يمكنك تحديث مجموعة الحوسبة لتعيين هوية مُدارة مُعيَّنة من قِبل المستخدم:

ينطبق على:ملحق CLI للتعلم الآلي من Microsoft Azure v2 (الحالي)

az ml compute update --name <cluster name> --user-assigned-identities <my-identity-id>

للسماح لمجموعة الحوسبة بسحب الصور الأساسية، امنح هوية الخدمة المُدارة ACRPull دورًا في ACR الخاص

ينطبق على:ملحق CLI للتعلم الآلي من Microsoft Azure v2 (الحالي)

az role assignment create --assignee <principal ID> \
--role acrpull \
--scope "/subscriptions/<subscription ID>/resourceGroups/<private ACR resource group>/providers/Microsoft.ContainerRegistry/registries/<private ACR name>"

وأخيرا، قم بإنشاء بيئة وتحديد موقع الصورة الأساسية في ملف YAML للبيئة.

ينطبق على:ملحق CLI للتعلم الآلي من Microsoft Azure v2 (الحالي)

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: docker-image-example
image: pytorch/pytorch:latest
description: Environment created from a Docker image.
az ml environment create --file <yaml file>

يمكنك الآن استخدام البيئة في وظيفة تدريب.

قم ببناء بيئة مُدارة من التعلم الآلي من Azure في صورة أساسية من ACR خاص للتدريب أو الاستدلال

ينطبق على:ملحق CLI للتعلم الآلي من Microsoft Azure v2 (الحالي)

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

  1. قم بإنشاء هوية مُدارة يعينها المستخدم ومنح هوية ACRPull الوصول إلى ACR الخاص.

  2. امنح الهويةالمدارة لمساحة العمل دور عامل تشغيل الهوية المدارة على الهوية المدارة المعينة من قبل المستخدم من الخطوة السابقة. يسمح هذا الدور لمساحة العمل بتعيين الهوية المدارة المعينة من قبل المستخدم إلى مهمة ACR لبناء البيئة المدارة.

    1. احصل على المعرف الرئيسي للهوية المُدارة التي تم تعيينها بواسطة نظام مساحة العمل:

      ينطبق على:ملحق CLI للتعلم الآلي من Microsoft Azure v2 (الحالي)

      az ml workspace show -w <workspace name> -g <resource group> --query identityPrincipalId
      
    2. منح دور مشغل الهوية المُدار:

      az role assignment create --assignee <principal ID> --role managedidentityoperator --scope <user-assigned managed identity resource ID>
      

      معرف مورد الهوية المُدار المعين من قبل المستخدم هو معرف مورد Azure للهوية المعينة للمستخدم، بالتنسيق /subscriptions/<subscription ID>/resourceGroups/<resource group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<user-assigned managed identity name>.

  3. حدد ACR الخارجي ومعرف العميل للهوية المدارة المعينة من قبل المستخدم في اتصالات مساحة العمل باستخدام az ml connection الأمر . يقبل هذا الأمر ملف YAML الذي يوفر معلومات حول الاتصال. يوضح المثال التالي تنسيق تحديد هوية مدارة. client_id استبدل القيم و resource_id بالقيم الخاصة بهويتك المدارة:

    ينطبق على:ملحق CLI للتعلم الآلي من Microsoft Azure v2 (الحالي)

    name: test_ws_conn_cr_managed
    type: container_registry
    target: https://test-feed.com
    credentials:
      type: managed_identity
      client_id: client_id
      resource_id: resource_id
    

    يوضح الأمر التالي كيفية استخدام ملف YAML لإنشاء اتصال بمساحة العمل الخاصة بك. استبدل <yaml file>و <workspace name>و <resource group> بقيم التكوين:

    az ml connection create --file <yml file> --resource-group <resource group> --workspace-name <workspace>
    
  4. بمجرد اكتمال التكوين، يمكنك استخدام الصور الأساسية من ACR الخاص عند إنشاء بيئات للتدريب أو الاستدلال. يوضح مقتطف الشفرة التالي كيفية تحديد ACR للصورة الأساسية واسم الصورة في تعريف البيئة:

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

    $schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
    name: private-acr-example
    image: <acr url>/pytorch/pytorch:latest
    description: Environment created from private ACR.
    

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