استخدام أسرار بيانات اعتماد المصادقة في Azure التعلم الآلي تشغيل التدريب
في هذه المقالة ، تتعلم كيفية استخدام الأسرار في التدريب يعمل بشكل آمن. معلومات المصادقة مثل اسم المستخدم وكلمة المرور الخاصة بك هي أسرار. على سبيل المثال، إذا قمت بالاتصال بقاعدة بيانات خارجية للاستعلام عن بيانات التدريب، فستحتاج إلى تمرير اسم المستخدم وكلمة المرور إلى سياق التشغيل عن بعد. إن ترميز هذه القيم في البرامج النصية التدريبية في نص واضح غير آمن لأنه سيكشف السر.
بدلا من ذلك، تحتوي مساحة عمل Azure التعلم الآلي على مورد مقترن يسمى Azure Key Vault. استخدم هذا Key Vault لتمرير الأسرار إلى عمليات التشغيل عن بعد بأمان من خلال مجموعة من واجهات برمجة التطبيقات في Azure التعلم الآلي Python SDK.
التدفق القياسي لاستخدام الأسرار هو:
- على الكمبيوتر المحلي، قم بتسجيل الدخول إلى Azure والاتصال بمساحة العمل الخاصة بك.
- على الكمبيوتر المحلي، قم بتعيين سر في مساحة العمل Key Vault.
- إرسال تشغيل عن بعد.
- في التشغيل عن بعد، احصل على البيانات السرية من Key Vault واستخدمها.
تعيين الأسرار
في التعلم الآلي Azure، تحتوي فئة Keyvault على طرق لإعداد الأسرار. في جلسة عمل Python المحلية، احصل أولا على مرجع إلى مساحة العمل الخاصة بك Key Vault، ثم استخدم set_secret() الطريقة لتعيين سر حسب الاسم والقيمة. تقوم طريقة set_secret بتحديث القيمة السرية إذا كان الاسم موجودا بالفعل.
from azureml.core import Workspace
from azureml.core import Keyvault
import os
ws = Workspace.from_config()
my_secret = os.environ.get("MY_SECRET")
keyvault = ws.get_default_keyvault()
keyvault.set_secret(name="mysecret", value = my_secret)
لا تضع القيمة السرية في رمز بايثون الخاص بك لأنه من غير الآمن تخزينها في ملف كنص واضح. بدلا من ذلك، احصل على القيمة السرية من متغير بيئة، على سبيل المثال سر إنشاء Azure DevOps، أو من إدخال المستخدم التفاعلي.
يمكنك سرد الأسماء السرية باستخدام الطريقة list_secrets() وهناك أيضا إصدار دفعي ، set_secrets () يسمح لك بتعيين أسرار متعددة في وقت واحد.
هام
سيؤدي استخدام list_secrets() الأسرار التي تم إنشاؤها من خلال set_secret() Azure ML SDK أو set_secrets() استخدامه. لن يسرد الأسرار التي تم إنشاؤها بواسطة شيء آخر غير SDK. على سبيل المثال، لن يتم سرد سر تم إنشاؤه باستخدام مدخل Azure أو Azure PowerShell.
يمكنك استخدامها get_secret() للحصول على قيمة سرية من قبو المفاتيح، بغض النظر عن كيفية إنشائها. حتى تتمكن من استرداد الأسرار التي لم يتم سردها بواسطة list_secrets().
الحصول على البيانات السرية
في الرمز المحلي الخاص بك ، يمكنك استخدام get_secret() الطريقة للحصول على القيمة السرية بالاسم.
بالنسبة للعمليات المقدمة Experiment.submit ، استخدم الطريقة get_secret() مع الفصل Run . نظرا لأن التشغيل المرسل على دراية بمساحة العمل الخاصة به، تقوم هذه الطريقة باختصار إنشاء مساحة العمل وإرجاع القيمة السرية مباشرة.
# Code in submitted run
from azureml.core import Experiment, Run
run = Run.get_context()
secret_value = run.get_secret(name="mysecret")
احرص على عدم كشف القيمة السرية عن طريق كتابتها أو طباعتها.
هناك أيضا إصدار دفعي ، get_secrets () للوصول إلى أسرار متعددة في وقت واحد.