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

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

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

تتحكم عملية وحدة التحكم في نقطة نهاية وتغيرها. تتضمن عمليات وحدة التحكم عمليات الإنشاء والقراءة والتحديث والحذف (CRUD) على نقاط النهاية عبر الإنترنت وعمليات النشر عبر الإنترنت.

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

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

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

  • مساحة عمل للتعلم الآلي من 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 التعلم الآلي.

القيود

لا تدعم نقاط النهاية مع وضع مصادقة الرمز المميز ل Microsoft Entra (aad_token) تسجيل النقاط باستخدام CLI az ml online-endpoint invokeأو SDK ml_client.online_endpoints.invoke()أو علامات التبويب Test أو Consume في Azure التعلم الآلي studio. بدلا من ذلك، استخدم Python SDK عام أو استخدم واجهة برمجة تطبيقات REST لتمرير الرمز المميز لمستوى التحكم. لمزيد من المعلومات، راجع تسجيل البيانات باستخدام المفتاح أو الرمز المميز.

إعداد هوية المستخدم

تحتاج إلى هوية مستخدم لتنفيذ عمليات وحدة التحكم (أي عمليات CRUD) وعمليات مستوى البيانات (أي إرسال طلبات تسجيل النقاط) على نقطة النهاية عبر الإنترنت. يمكنك استخدام نفس هوية المستخدم أو هويات المستخدم المختلفة لعمليات وحدة التحكم و مستوى البيانات. في هذه المقالة، يمكنك استخدام نفس هوية المستخدم لكل من وحدة التحكم وعمليات مستوى البيانات.

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

تعيين أذونات للهوية

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

استخدام دور مضمن

AzureML Data Scientistيمكن استخدام الدور المضمن لإدارة نقاط النهاية والنشر واستخدامها ويستخدم أحرف البدل لتضمين إجراءات التحكم في الوصول استنادا إلى الدور (RBAC) لمستوى التحكم التالية:

  • Microsoft.MachineLearningServices/workspaces/onlineEndpoints/write
  • Microsoft.MachineLearningServices/workspaces/onlineEndpoints/delete
  • Microsoft.MachineLearningServices/workspaces/onlineEndpoints/read
  • Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action
  • Microsoft.MachineLearningServices/workspaces/onlineEndpoints/listKeys/action
  • Microsoft.MachineLearningServices/workspaces/onlineEndpoints/regenerateKeys/action

وتضمين إجراء التحكم في الوصول استنادا إلى الدور لمستوى البيانات التالي:

  • Microsoft.MachineLearningServices/workspaces/onlineEndpoints/score/action

اختياريا، Azure Machine Learning Workspace Connection Secrets Reader يمكن استخدام الدور المضمن للوصول إلى الأسرار من اتصالات مساحة العمل ويتضمن إجراءات التحكم في الوصول استنادا إلى الدور لمستوى التحكم التالية:

  • Microsoft.MachineLearningServices/workspaces/connections/listsecrets/action
  • Microsoft.MachineLearningServices/workspaces/metadata/secrets/read

إذا كنت تستخدم هذه الأدوار المضمنة، فلا يلزم اتخاذ أي إجراء في هذه الخطوة.

(اختياري) إنشاء دور مخصص

يمكنك تخطي هذه الخطوة إذا كنت تستخدم أدوارا مضمنة أو أدوارا مخصصة أخرى معدة مسبقا.

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

    custom-role-for-control-plane.json:

    {
        "Name": "Custom role for control plane operations - online endpoint",
        "IsCustom": true,
        "Description": "Can CRUD against online endpoints.",
        "Actions": [
            "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/write",
            "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/delete",
            "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/read",
            "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action",
            "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/listKeys/action",
            "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/regenerateKeys/action"
        ],
        "NotActions": [
        ],
        "AssignableScopes": [
            "/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>"
        ]
    }
    

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

    custom-role-for-scoring.json:

    {
        "Name": "Custom role for scoring - online endpoint",
        "IsCustom": true,
        "Description": "Can score against online endpoints.",
        "Actions": [
            "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*/action"
        ],
        "NotActions": [
        ],
        "AssignableScopes": [
            "/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>"
        ]
    }
    
  2. استخدم تعريفات JSON لإنشاء أدوار مخصصة:

    az role definition create --role-definition custom-role-for-control-plane.json --subscription <subscriptionId>
    
    az role definition create --role-definition custom-role-for-scoring.json --subscription <subscriptionId>
    

    إشعار

    لإنشاء أدوار مخصصة، تحتاج إلى أحد الأدوار الثلاثة:

    • المالك
    • مسؤول وصول المستخدم
    • دور مخصص بإذن Microsoft.Authorization/roleDefinitions/write (لإنشاء/تحديث/حذف الأدوار المخصصة) والإذن Microsoft.Authorization/roleDefinitions/read (لعرض الأدوار المخصصة).

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

  3. تحقق من تعريف الدور:

    az role definition list --custom-role-only -o table
    
    az role definition list -n "Custom role for control plane operations - online endpoint"
    az role definition list -n "Custom role for scoring - online endpoint"
    
    export role_definition_id1=`(az role definition list -n "Custom role for control plane operations - online endpoint" --query "[0].id" | tr -d '"')`
    
    export role_definition_id2=`(az role definition list -n "Custom role for scoring - online endpoint" --query "[0].id" | tr -d '"')`
    

تعيين الدور إلى الهوية

  1. إذا كنت تستخدم AzureML Data Scientist الدور المضمن، فاستخدم التعليمات البرمجية التالية لتعيين الدور إلى هوية المستخدم.

    az role assignment create --assignee <identityId> --role "AzureML Data Scientist" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
    
  2. اختياريا، إذا كنت تستخدم Azure Machine Learning Workspace Connection Secrets Reader الدور المضمن، فاستخدم التعليمات البرمجية التالية لتعيين الدور إلى هوية المستخدم.

    az role assignment create --assignee <identityId> --role "Azure Machine Learning Workspace Connection Secrets Reader" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
    
  3. إذا كنت تستخدم دورا مخصصا، فاستخدم التعليمات البرمجية التالية لتعيين الدور إلى هوية المستخدم.

    az role assignment create --assignee <identityId> --role "Custom role for control plane operations - online endpoint" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
    
    az role assignment create --assignee <identityId> --role "Custom role for scoring - online endpoint" --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
    

    إشعار

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

    • المالك
    • مسؤول وصول المستخدم
    • دور مخصص يسمح بالإذن Microsoft.Authorization/roleAssignments/write (لتعيين أدوار مخصصة) و Microsoft.Authorization/roleAssignments/read (لعرض تعيينات الأدوار).

    لمزيد من المعلومات حول أدوار Azure المختلفة وأذوناتها، راجع أدوار Azure وتعيين أدوار Azure باستخدام مدخل Microsoft Azure.

  4. تأكيد تعيين الدور:

    az role assignment list --scope /subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.MachineLearningServices/workspaces/<workspaceName>
    

الحصول على الرمز المميز ل Microsoft Entra لعمليات وحدة التحكم

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

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

يمكنك استرداد رمز Microsoft Entra المميز لعمليات وحدة التحكم من نقطة نهاية مورد Azure: https://management.azure.com.

  1. تسجيل الدخول إلى أزور.

    az login
    
  2. إذا كنت تريد استخدام هوية معينة، فاستخدم التعليمات البرمجية التالية لتسجيل الدخول باستخدام الهوية:

    az login --identity --username <identityId>
    
  3. استخدم هذا السياق للحصول على الرمز المميز.

    export CONTROL_PLANE_TOKEN=`(az account get-access-token --resource https://management.azure.com --query accessToken | tr -d '"')`
    

(اختياري) تحقق من نقطة نهاية المورد ومعرف العميل للرمز المميز ل Microsoft Entra

بعد استرداد الرمز المميز ل Microsoft Entra، يمكنك التحقق من أن الرمز المميز هو لنقطة management.azure.com نهاية مورد Azure الصحيحة ومعرف العميل الصحيح عن طريق فك ترميز الرمز المميز عبر jwt.ms، والذي سيعيد استجابة json بالمعلومات التالية:

{
    "aud": "https://management.azure.com",
    "oid": "<your-object-id>"
}

إنشاء نقطة النهاية

ينشئ المثال التالي نقطة النهاية بهوية معينة من قبل النظام (SAI) كهوية نقطة النهاية. SAI هو نوع الهوية الافتراضي للهوية المدارة لنقاط النهاية. يتم تعيين بعض الأدوار الأساسية تلقائيا ل SAI. لمزيد من المعلومات حول تعيين الدور لهوية معينة من قبل النظام، راجع تعيين الدور التلقائي لهوية نقطة النهاية.

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

  1. إنشاء ملف YAML لتعريف نقطة النهاية.

    endpoint.yml:

    $schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
    name: my-endpoint
    auth_mode: aad_token
    
  2. يمكنك استبدال auth_mode ب key لمصادقة المفتاح، أو aml_token لمصادقة الرمز المميز ل Azure التعلم الآلي. في هذا المثال، يمكنك استخدام aad_token لمصادقة الرمز المميز ل Microsoft Entra.

    az ml online-endpoint create -f endpoint.yml
    
  3. تحقق من حالة نقطة النهاية:

    az ml online-endpoint show -n my-endpoint
    
  4. إذا كنت تريد تجاوز auth_mode (على سبيل المثال، إلى aad_token) عند إنشاء نقطة نهاية، فقم بتشغيل التعليمات البرمجية التالية:

    az ml online-endpoint create -n my-endpoint --auth_mode aad_token
    
  5. إذا كنت تريد تحديث نقطة النهاية الموجودة وتحديد auth_mode (على سبيل المثال، إلى aad_token)، فقم بتشغيل التعليمات البرمجية التالية:

    az ml online-endpoint update -n my-endpoint --set auth_mode=aad_token
    

إنشاء توزيع

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

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

  1. إنشاء ملف YAML لتعريف التوزيع.

    blue-deployment.yml:

    $schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
    name: blue
    endpoint_name: my-aad-auth-endp1
    model:
      path: ../../model-1/model/
    code_configuration:
      code: ../../model-1/onlinescoring/
      scoring_script: score.py
    environment: 
      conda_file: ../../model-1/environment/conda.yml
      image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
    instance_type: Standard_DS3_v2
    instance_count: 1
    
  2. إنشاء النشر باستخدام ملف YAML. على سبيل المثال، قم بتعيين كافة نسبة استخدام الشبكة إلى النشر الجديد.

    az ml online-deployment create -f blue-deployment.yml --all-traffic
    

الحصول على تسجيل URI لنقطة النهاية

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

scoringUri=$(az ml online-endpoint show -n my-endpoint --query "scoring_uri")

الحصول على المفتاح أو الرمز المميز لعمليات مستوى البيانات

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

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

مفتاح أو رمز مميز التعلم الآلي Azure

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

للحصول على المفتاح أو رمز Azure التعلم الآلي المميز (aml_token)، استخدم الأمر az ml online-endpoint get-credentials. يقوم هذا الأمر بإرجاع مستند JSON يحتوي على المفتاح أو الرمز المميز التعلم الآلي Azure.

يتم إرجاع المفاتيح في الحقلين primaryKey و secondaryKey . يوضح المثال التالي طريقة استخدام المعلمة --query لإرجاع المفتاح الأساسي فقط:

export DATA_PLANE_TOKEN=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query primaryKey)

يتم إرجاع الرموز المميزة التعلم الآلي Azure في accessToken الحقل:

export DATA_PLANE_TOKEN=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -g $RESOURCE_GROUP -w $WORKSPACE_NAME -o tsv --query accessToken)

أيضا، expiryTimeUtc تحتوي الحقول و refreshAfterTimeUtc على انتهاء صلاحية الرمز المميز وأوقات التحديث.

الرمز المميز ل Microsoft Entra

للحصول على رمز Microsoft Entra المميز (aad_token) باستخدام CLI، استخدم الأمر az account get-access-token . يقوم هذا الأمر بإرجاع مستند JSON الذي يحتوي على الرمز المميز ل Microsoft Entra.

يتم إرجاع رمز Microsoft Entra المميز في accessToken الحقل:

export DATA_PLANE_TOKEN=`(az account get-access-token --resource https://ml.azure.com --query accessToken | tr -d '"')`

إشعار

  • لا يدعم ملحق CLI ml الحصول على الرمز المميز ل Microsoft Entra. استخدم az account get-access-token بدلا من ذلك، كما هو موضح في التعليمات البرمجية السابقة.
  • يتم استرداد الرمز المميز لعمليات وحدة البيانات من نقطة ml.azure.com نهاية مورد Azure بدلا من management.azure.com، على عكس الرمز المميز لعمليات وحدة التحكم.

تحقق من نقطة نهاية المورد ومعرف العميل للرمز المميز ل Microsoft Entra

بعد الحصول على الرمز المميز ل Entra، يمكنك التحقق من أن الرمز المميز هو لنقطة ml.azure.com نهاية مورد Azure الصحيحة ومعرف العميل الصحيح عن طريق فك ترميز الرمز المميز عبر jwt.ms، والذي سيعيد استجابة json بالمعلومات التالية:

{
    "aud": "https://ml.azure.com",
    "oid": "<your-object-id>"
}

تسجيل البيانات باستخدام المفتاح أو الرمز المميز

مفتاح أو رمز مميز التعلم الآلي Azure

يمكنك استخدام az ml online-endpoint invoke لنقاط النهاية باستخدام مفتاح أو رمز Azure التعلم الآلي المميز. يعالج CLI المفتاح أو الرمز المميز التعلم الآلي Azure تلقائيا حتى لا تحتاج إلى تمريره بشكل صريح.

az ml online-endpoint invoke -n my-endpoint -r request.json

الرمز المميز ل Microsoft Entra

لا يتم دعم استخدام az ml online-endpoint invoke لنقاط النهاية مع رمز Microsoft Entra المميز. استخدم واجهة برمجة تطبيقات REST بدلا من ذلك، واستخدم URI لتسجيل نقاط نقطة النهاية لاستدعاء نقطة النهاية.

تسجيل ومراقبة نسبة استخدام الشبكة

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

إذا تم تمكين إعداد التشخيص، يمكنك التحقق من AmlOnlineEndpointTrafficLogs الجدول لمشاهدة وضع المصادقة وهوية المستخدم.