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

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

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

  • يستند إلى المفتاح: يتم استخدام مفتاح ثابت للمصادقة على خدمة الويب.

  • المستند إلى الرمز المميز: يجب الحصول على رمز مميز مؤقت من مساحة عمل Azure التعلم الآلي (باستخدام Azure Active Directory) واستخدامه للمصادقة على خدمة الويب. تنتهي صلاحية هذا الرمز المميز بعد فترة من الوقت، ويجب تحديثه لمواصلة العمل مع خدمة الويب.

    ملاحظة

    تتوفر المصادقة المستندة إلى الرمز المميز فقط عند النشر في Azure Kubernetes Service.

المصادقة المستندة إلى المفتاح

تحتوي خدمات الويب التي تم نشرها على Azure Kubernetes Service (AKS) على مصادقة مستندة إلى المفاتيح ممكنة افتراضيا.

تحتوي الخدمات المنشورة في مثيلات حاوية Azure (ACI) على مصادقة مستندة إلى المفاتيح معطلة بشكل افتراضي، ولكن يمكنك تمكينها عن طريق الإعداد auth_enabled=Trueعند إنشاء خدمة ويب ACI. التعليمة البرمجية التالية هي مثال على إنشاء تكوين نشر ACI مع تمكين المصادقة المستندة إلى المفاتيح.

from azureml.core.webservice import AciWebservice

aci_config = AciWebservice.deploy_configuration(cpu_cores = 1,
                                                memory_gb = 1,
                                                auth_enabled=True)

ثم يمكنك استخدام تكوين ACI المخصص في النشر باستخدام الفصل Model .

from azureml.core.model import Model, InferenceConfig


inference_config = InferenceConfig(entry_script="score.py",
                                   environment=myenv)
aci_service = Model.deploy(workspace=ws,
                       name="aci_service_sample",
                       models=[model],
                       inference_config=inference_config,
                       deployment_config=aci_config)
aci_service.wait_for_deployment(True)

لجلب مفاتيح المصادقة، استخدم aci_service.get_keys(). لإعادة إنشاء مفتاح، استخدم الوظيفة regen_key() واجتاز إما أساسي أو ثانوي.

aci_service.regen_key("Primary")
# or
aci_service.regen_key("Secondary")

المصادقة المستندة إلى الرمز المميّز

عند تمكين مصادقة الرمز المميز لخدمة ويب، يجب على المستخدمين تقديم Azure التعلم الآلي JSON Web Token إلى خدمة الويب للوصول إليه. تنتهي صلاحية الرمز المميز بعد إطار زمني محدد ويحتاج إلى تحديث لمواصلة إجراء المكالمات.

  • يتم تعطيل مصادقة الرمز المميز بشكل افتراضي عند النشر في Azure Kubernetes Service.
  • لا يتم دعم مصادقة الرمز المميز عند النشر في مثيلات حاوية Azure.
  • لا يمكن استخدام مصادقة الرمز المميز في نفس الوقت الذي تستخدم فيه المصادقة المستندة إلى المفتاح.

للتحكم في مصادقة الرمز المميز، استخدم المعلمة token_auth_enabled عند إنشاء عملية نشر أو تحديثها:

from azureml.core.webservice import AksWebservice
from azureml.core.model import Model, InferenceConfig

# Create the config
aks_config = AksWebservice.deploy_configuration()

#  Enable token auth and disable (key) auth on the webservice
aks_config = AksWebservice.deploy_configuration(token_auth_enabled=True, auth_enabled=False)

aks_service_name ='aks-service-1'

# deploy the model
aks_service = Model.deploy(workspace=ws,
                           name=aks_service_name,
                           models=[model],
                           inference_config=inference_config,
                           deployment_config=aks_config,
                           deployment_target=aks_target)

aks_service.wait_for_deployment(show_output = True)

إذا تم تمكين مصادقة الرمز المميز، فيمكنك استخدام get_token الطريقة لاسترداد رمز JSON Web Token (JWT) ووقت انتهاء صلاحية هذا الرمز المميز:

تلميح

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

token, refresh_by = aks_service.get_token()
print(token)

هام

ستحتاج إلى طلب رمز مميز جديد بعد وقت الرمز المميز refresh_by . إذا كنت بحاجة إلى تحديث الرموز المميزة خارج Python SDK ، فإن أحد الخيارات هو استخدام واجهة برمجة تطبيقات REST مع مصادقة الخدمة الرئيسية لإجراء المكالمة service.get_token() بشكل دوري ، كما نوقش سابقا.

نوصي بشدة بإنشاء مساحة عمل Azure التعلم الآلي في نفس المنطقة التي توجد بها مجموعة خدمات Azure Kubernetes.

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

أيضا، كلما زادت المسافة بين منطقة مجموعتك ومنطقة مساحة العمل الخاصة بك، كلما استغرق الأمر وقتا أطول لجلب رمز مميز.

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

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