تأمين نقاط النهاية المدارة عبر الإنترنت مع عزل الشبكة

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

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

للحصول على أمثلة تستخدم الأسلوب القديم لعزل الشبكة، راجع ملفات التوزيع deploy-moe-vnet-legacy.sh (للتوزيع باستخدام نموذج عام) deploy-moe-vnet-mlflow-legacy.sh (للتوزيع باستخدام نموذج MLflow) في مستودع GitHub azureml-examples.

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

  • لاستخدام التعلم الآلي من Azure، يجب أن يكون لديك اشتراك Azure. في حال لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانيّاً قبل البدء. جرب الإصدار المجاني أو المدفوع الخاص بـ Azure Machine Learning اليوم.

  • تثبيت وتكوين Azure CLI والملحق ml إلى Azure CLI. لمزيد من المعلومات، راجع تثبيت وإعداد واستخدام واجهة مستوى الاستدعاء (CLI) (الإصدار 2).

    تلميح

    تم تقديم شبكة Azure التعلم الآلي الظاهرية المدارة في 23 مايو 2023. إذا كان لديك إصدار أقدم من ملحق ml، فقد تحتاج إلى تحديثه حتى تعمل الأمثلة الواردة في هذه المقالة. لتحديث الملحق، استخدم أمر Azure CLI التالي:

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

  • يجب أن يكون لديك مجموعة موارد Azure، حيث يجب أن يكون لديك (أو مسؤول الخدمة الذي تستخدمه) حق Contributor الوصول. سيكون لديك مجموعة موارد إذا قمت بتكوين الملحق الخاص بك ml .

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

الترحيل من أسلوب عزل الشبكة القديمة إلى الشبكة الظاهرية المدارة

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

  1. احذف جميع الحسابات في مساحة العمل الخاصة بك.
  2. تمكين الشبكة الظاهرية المدارة لمساحة العمل الخاصة بك. لمزيد من المعلومات حول كيفية تكوين شبكة مدارة لمساحة العمل الخاصة بك، راجع عزل الشبكة الظاهرية المدارة لمساحة العمل.
  3. تكوين نقاط النهاية الخاصة للاتصال الصادر بالموارد الخاصة التي تحتاج نقاط النهاية المدارة عبر الإنترنت إلى الوصول إليها. تتضمن هذه الموارد الخاصة حساب تخزين وAzure Key Vault وAzure Container Registry (ACR).
  4. (اختياري) إذا كنت تدمج مع سجل مستخدم، فكون نقاط النهاية الخاصة للاتصال الصادر إلى السجل الخاص بك وحساب التخزين الخاص به و ACR الخاص به.

القيود

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

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

    تلميح

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

    في Studio، انتقل إلى Directory + Subscription + Workspace القسم (أعلى يمين Studio) وحدد View all properties in Azure Portal. حدد طريقة عرض JSON من أعلى يمين صفحة "نظرة عامة"، ثم اختر أحدث إصدار من واجهة برمجة التطبيقات. من هذه الصفحة، يمكنك التحقق من properties.creationTimeقيمة .

    بدلا من ذلك، استخدم az ml workspace show مع CLI أو my_ml_client.workspace.get("my-workspace-name") مع SDK أو curl على مساحة عمل مع REST API.

  • عند استخدام عزل الشبكة مع نقاط النهاية عبر الإنترنت، يمكنك استخدام الموارد المرتبطة بمساحة العمل (Azure Container Registry (ACR) وحساب التخزين وKey Vault وApplication Insights) من مجموعة موارد مختلفة عن مجموعة موارد مساحة العمل الخاصة بك. ومع ذلك، يجب أن تنتمي هذه الموارد إلى نفس الاشتراك والمستأجر كمساحة العمل الخاصة بك.

إشعار

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

إعداد النظام الخاص بك

  1. إنشاء متغيرات البيئة المستخدمة من قبل هذا المثال عن طريق تشغيل الأوامر التالية. استبدل <YOUR_WORKSPACE_NAME> بالاسم الذي تريد استخدامه لمساحة العمل الخاصة بك. استبدل <YOUR_RESOURCEGROUP_NAME> بمجموعة الموارد التي ستحتوي على مساحة العمل الخاصة بك.

    تلميح

    قبل إنشاء مساحة عمل جديدة، يجب إنشاء مجموعة موارد Azure لتضمينها. لمزيد من المعلومات، راجع إدارة مجموعات موارد Azure.

    export RESOURCEGROUP_NAME="<YOUR_RESOURCEGROUP_NAME>"
    export WORKSPACE_NAME="<YOUR_WORKSPACE_NAME>"
    
  2. إنشاء مساحة العمل الخاصة بك. تقوم -m allow_only_approved_outbound المعلمة بتكوين شبكة ظاهرية مدارة لمساحة العمل وتحظر حركة المرور الصادرة باستثناء الوجهات المعتمدة.

    az ml workspace create -g $RESOURCEGROUP_NAME -n $WORKSPACE_NAME -m allow_only_approved_outbound
    

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

    # az ml workspace create -g $RESOURCEGROUP_NAME -n $WORKSPACE_NAME -m allow_internet_outbound
    

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

    عند تكوين مساحة العمل بنقطة نهاية خاصة، يجب تكوين Azure Container Registry لمساحة العمل لطبقة Premium للسماح بالوصول عبر نقطة النهاية الخاصة. لمزيد من المعلومات، راجع طبقات خدمة سجل حاويات Azure. أيضا، يجب تعيين مساحة العمل مع الخاصية image_build_compute ، حيث يتضمن إنشاء النشر إنشاء الصور. راجع تكوين إصدارات الصور لمزيد من التفاصيل.

  3. قم بتكوين الإعدادات الافتراضية ل CLI بحيث يمكنك تجنب تمرير القيم لمساحة العمل ومجموعة الموارد عدة مرات.

    az configure --defaults workspace=$WORKSPACE_NAME group=$RESOURCEGROUP_NAME
    
  4. انسخ مستودع الأمثلة للحصول على ملفات المثال لنقطة النهاية والنشر، ثم انتقل إلى دليل المستودع /cli .

    git clone --depth 1 https://github.com/Azure/azureml-examples
    cd /cli
    

الأوامر في هذا البرنامج التعليمي موجودة في الملف deploy-managed-online-endpoint-workspacevnet.sh في cli الدليل، وملفات تكوين YAML في endpoints/online/managed/sample/ الدليل الفرعي.

قم بإنشاء نقطة نهاية آمنة مُدارة عبر الإنترنت

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

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

  1. تعيين اسم نقطة النهاية.

    export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"
    
  2. إنشاء نقطة نهاية مع public_network_access تعطيل لمنع حركة المرور الواردة.

    az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml --set public_network_access=disabled
    

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

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

    # az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
    
  3. إنشاء نشر في الشبكة الظاهرية المدارة لمساحة العمل.

    az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment.yml --all-traffic
    
  4. الحصول على حالة النشر.

    az ml online-endpoint show -n $ENDPOINT_NAME
    
  5. اختبر نقطة النهاية مع طلب تسجيل النقاط، باستخدام CLI.

    az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
    
  6. الحصول على سجلات التوزيع.

    az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
    
  7. احذف نقطة النهاية إذا لم تعد بحاجة إليها.

    az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait
    
  8. حذف كافة الموارد التي تم إنشاؤها في هذه المقالة. استبدل <resource-group-name> باسم مجموعة الموارد المستخدمة في هذا المثال:

    az group delete --resource-group <resource-group-name>
    

استكشاف الأخطاء وإصلاحها

فشل إنشاء نقطة النهاية عبر الإنترنت مع رسالة V1LegacyMode == true

يمكن تكوين مساحة عمل التعلم الآلي من Azure v1_legacy_mode، والتي تعطل واجهات برمجة التطبيقات v2. نقاط النهاية المدارة عبر الإنترنت هي ميزة من ميزات النظام الأساسي لواجهة برمجة التطبيقات v2، ولن تعمل إذا تم تمكين v1_legacy_mode لمساحة العمل.

هام

تحقق مع فريق أمان الشبكة قبل تعطيل v1_legacy_mode. ربما تم تمكينه من قبل فريق أمان الشبكة لسبب ما.

للحصول على معلومات حول كيفية تعطيل v1_legacy_mode، راجع عزل الشبكة باستخدام v2.

فشل إنشاء نقطة النهاية عبر الإنترنت باستخدام المصادقة المستندة إلى المفتاح

استخدم الأمر التالي لسرد قواعد الشبكة الخاصة بـAzure Key Vault لمساحة العمل الخاصة بك. استبدل <keyvault-name> باسم مخزن المفاتيح الخاصة بك:

az keyvault network-rule list -n <keyvault-name>

تشبه استجابة هذا الأمر مستند JSON التالي:

{
    "bypass": "AzureServices",
    "defaultAction": "Deny",
    "ipRules": [],
    "virtualNetworkRules": []
}

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

فشل عمليات النشر عبر الإنترنت بحدوث خطأ في تنزيل الصورة

إشعار

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

  1. تحقق مما إذا كانت egress-public-network-access العلامة معطلة للنشر. إذا تم تمكين هذه العلامة، وكانت رؤية سجل الحاوية خاصة، فمن المتوقع حدوث ذلك الفشل.

  2. استخدم الأمر التالي للتحقق من حالة اتصال نقطة النهاية الخاصة. استبدل <registry-name> باسم Azure Container Registry لمساحة العمل الخاصة بك:

    az acr private-endpoint-connection list -r <registry-name> --query "[?privateLinkServiceConnectionState.description=='Egress for Microsoft.MachineLearningServices/workspaces/onlineEndpoints'].{Name:name, status:privateLinkServiceConnectionState.status}"
    

    في مستند الاستجابة، تحقق من تعيين الحقل status إلى Approved. إذا لم تتم الموافقة عليه، فاستخدم الأمر التالي للموافقة عليه. استبدل <private-endpoint-name> بالاسم الذي تم إرجاعه من الأمر السابق:

    az network private-endpoint-connection approve -n <private-endpoint-name>
    

لا يمكن حل نقطة نهاية التسجيل

  1. تحقق من أن العميل الذي أصدر طلب التسجيل عبارة عن شبكة ظاهرية يمكنها الوصول إلى مساحة عمل «التعلم الآلي» من Azure.

  2. استخدم الأمر nslookup في اسم مضيف نقطة النهاية لاسترداد معلومات عنوان IP:

    nslookup endpointname.westcentralus.inference.ml.azure.com
    

    تحتوي الاستجابة على عنوان. يجب أن يكون هذا العنوان في النطاق الذي توفره الشبكة الظاهرية

    إشعار

    بالنسبة لنقطة نهاية Kubernetes عبر الإنترنت، يجب أن يكون اسم مضيف نقطة النهاية CName (اسم المجال) الذي تم تحديده في مجموعة Kubernetes. إذا كانت نقطة نهاية HTTP، فسيتم تضمين عنوان IP في URI نقطة النهاية التي يمكنك الحصول عليها مباشرة في واجهة مستخدم Studio. يمكن العثور على مزيد من الطرق للحصول على عنوان IP لنقطة النهاية في نقطة نهاية Secure Kubernetes عبر الإنترنت.

  3. إذا لم يتم حل اسم المضيف بواسطة nslookup الأمر:

    بالنسبة لنقطة النهاية المدارة عبر الإنترنت،

    1. تحقق مما إذا كان هناك سجل A في منطقة DNS الخاصة للشبكة الظاهرية.

      للتحقق من السجلات، استخدم الأمر التالي:

      az network private-dns record-set list -z privatelink.api.azureml.ms -o tsv --query [].name
      

      يجب أن تحتوي النتائج على إدخال مشابه لـ *.<GUID>.inference.<region>.

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

    3. إذا تم إعداد مساحة العمل مع نقطة نهاية خاصة باستخدام DNS مخصص كيفية استخدام مساحة العمل الخاصة بك مع خادم DNS مخصص، فاستخدم الأمر التالي للتحقق مما إذا كانت الدقة تعمل بشكل صحيح من DNS المخصص.

      dig endpointname.westcentralus.inference.ml.azure.com
      

    بالنسبة لنقطة نهاية Kubernetes عبر الإنترنت،

    1. تحقق من تكوين DNS في مجموعة Kubernetes.

    2. بالإضافة إلى ذلك، يمكنك التحقق مما إذا كان azureml-fe يعمل كما هو متوقع، استخدم الأمر التالي:

      kubectl exec -it deploy/azureml-fe -- /bin/bash
      (Run in azureml-fe pod)
      
      curl -vi -k https://localhost:<port>/api/v1/endpoint/<endpoint-name>/swagger.json
      "Swagger not found"
      

      بالنسبة إلى HTTP، استخدم

      curl https://localhost:<port>/api/v1/endpoint/<endpoint-name>/swagger.json
      "Swagger not found"
      

    إذا فشل curl HTTPs (على سبيل المثال، المهلة) ولكن HTTP يعمل، يرجى التحقق من أن الشهادة صالحة.

    إذا فشل حل هذا إلى سجل A، فتحقق مما إذا كانت الدقة تعمل من Azure DNS(168.63.129.16).

    dig @168.63.129.16 endpointname.westcentralus.inference.ml.azure.com
    

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

لا يمكن تسجيل عمليات النشر عبر الإنترنت

  1. استخدم الأمر التالي لمعرفة ما إذا تم توزيع النشر بنجاح:

    az ml online-deployment show -e <endpointname> -n <deploymentname> --query '{name:name,state:provisioning_state}' 
    

    إذا اكتمل النشر بنجاح، فإن قيمة state ستكون Succeeded.

  2. إذا كان النشر ناجحاً، فاستخدم الأمر التالي للتحقق من تخصيص نسبة استخدام الشبكة للنشر. قم باستبدال <endpointname> باسم نقطة النهاية الخاصة بك:

    az ml online-endpoint show -n <endpointname>  --query traffic
    

    تلميح

    هذه الخطوة غير ضرورية إذا كنت تستخدم العنوان azureml-model-deployment في طلبك لاستهداف هذا النشر.

    يجب أن تسرد الاستجابة من هذا الأمر النسبة المئوية لنسبة استخدام الشبكة المخصصة لعمليات النشر.

  3. إذا تم تعيين تعيينات نسبة استخدام الشبكة (أو عنوان النشر) بشكل صحيح، فاستخدم الأمر التالي للحصول على السجلات لنقطة النهاية. استبدل <endpointname> باسم نقطة النهاية و<deploymentname> بالنشر:

    az ml online-deployment get-logs  -e <endpointname> -n <deploymentname> 
    

    ابحث في السجلات لمعرفة ما إذا كانت هناك مشكلة في تشغيل رمز التسجيل عند إرسال طلب إلى النشر.

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