إعادة إنشاء مفاتيح الوصول إلى حساب التخزين

تعرف على كيفية تغيير مفاتيح الوصول لحسابات Azure Storage المستخدمة بواسطة التعلم الآلي من Azure. يمكن أن يستخدم التعلم الآلي في Azure حسابات التخزين لتخزين البيانات أو النماذج المدربة.

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

هام

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

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

إشعار

تم اختبار مقتطفات التعليمات البرمجية في هذا المستند باستخدام الإصدار 1.0.83 من Python SDK.

ما يحتاج للتحديث

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

هام

قم بتحديث مساحة العمل باستخدام Azure CLI ومخازن البيانات التي تستخدم Python في نفس الوقت. لا يعد تحديث أحدهما أو الآخر كافيًا، وقد يتسبب في حدوث أخطاء حتى يتم تحديث كليهما.

لاكتشاف حسابات التخزين التي تستخدمها مخازن البيانات لديك، استخدم الكود التالي:

from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential

#Enter details of your Azure Machine Learning workspace
subscription_id = '<SUBSCRIPTION_ID>'
resource_group = '<RESOURCE_GROUP>'
workspace_name = '<AZUREML_WORKSPACE_NAME>'

ml_client = MLClient(credential=DefaultAzureCredential(),
                        subscription_id=subscription_id, 
                        resource_group_name=resource_group,
                        workspace_name=workspace_name)

# list all the datastores
datastores = ml_client.datastores.list()
for ds in datastores:
    if ds.credentials.type == "account_key":
        if ds.type.name == "AZURE_BLOB":
            print("Blob store - datastore name: " + ds.name + ", storage account name: " +
                  ds.account_name + ", container name: " + ds.container_name)
        if ds.type.name == "AZURE_FILE":
            print("Blob store - datastore name: " + ds.name + ", storage account name: " +
                  ds.account_name + ", file share name: " + ds.file_share_name)

تبحث هذه التعليمة البرمجية عن أي مخازن بيانات مسجلة تستخدم Azure Storage مع مصادقة المفتاح، وتسرد المعلومات التالية:

  • اسم مخزن البيانات: اسم مخزن البيانات المسجل به حساب التخزين.
  • اسم حساب التخزين: اسم حساب Azure Storage.
  • الحاوية: الحاوية في حساب التخزين التي يستخدمها هذا التسجيل.
  • مشاركة الملف: مشاركة الملف التي يستخدمها هذا التسجيل.
import azureml.core
from azureml.core import Workspace, Datastore

ws = Workspace.from_config()

default_ds = ws.get_default_datastore()
print("Default datstore: " + default_ds.name + ", storage account name: " +
      default_ds.account_name + ", container name: " + default_ds.container_name)

datastores = ws.datastores
for name, ds in datastores.items():
    if ds.datastore_type == "AzureBlob":
        print("Blob store - datastore name: " + name + ", storage account name: " +
              ds.account_name + ", container name: " + ds.container_name)
    if ds.datastore_type == "AzureFile":
        print("File share - datastore name: " + name + ", storage account name: " +
              ds.account_name + ", container name: " + ds.container_name)

يبحث هذا الرمز عن أي مخازن بيانات مسجلة تستخدم تخزين Azure ويسرد المعلومات التالية:

  • اسم مخزن البيانات: اسم مخزن البيانات المسجل به حساب التخزين.
  • اسم حساب التخزين: اسم حساب Azure Storage.
  • الحاوية: الحاوية في حساب التخزين التي يستخدمها هذا التسجيل.

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

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

تحديث مفتاح الوصول

لتحديث التعلم الآلي من Azure لاستخدام المفتاح الجديد، استخدم الخطوات التالية:

هام

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

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

  2. ستعمل مساحة عمل التعلم الآلي من Azure على مزامنة المفتاح الجديد تلقائيًا والبدء في استخدامه بعد ساعة. لفرض مزامنة مساحة العمل مع المفتاح الجديد على الفور، استخدم الخطوات التالية:

    1. لتسجيل الدخول إلى اشتراك Azure الذي يحتوي على مساحة العمل الخاصة بك باستخدام أمر Azure CLI التالي:

      az login
      

      تلميح

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

      لتحديد اشتراكٍ آخر، استخدم الأمر az account set -s <subscription name or ID> وحدد اسم الاشتراك أو المعرّف للتبديل إليه. لمزيد من المعلومات بشأن تحديد الاشتراك، راجع استخدام الاشتراكات المتعددة من Azure.

    2. لتحديث مساحة العمل لاستخدام المفتاح الجديد، استخدم الأمر التالي. استبدل myworkspace باسم مساحة عمل التعلم الآلي من Azure، واستبدل myresourcegroup باسم مجموعة موارد Azure التي تحتوي على مساحة العمل.

      az ml workspace sync-keys -n myworkspace -g myresourcegroup
      

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

  3. يمكنك إعادة تسجيل مخزن (مخازن) البيانات التي تستخدم حساب التخزين عبر SDK أو استوديو التعلم الآلي من Azure.

    1. لإعادة تسجيل مخازن البيانات عبر Python SDK، استخدم القيم من قسم ما يلزم تحديثه والمفتاح من الخطوة 1 بالشفرة التالية.

      from azure.ai.ml.entities import AzureBlobDatastore, AccountKeyConfiguration
      from azure.ai.ml import MLClient
      from azure.identity import DefaultAzureCredential
      
      subscription_id = '<SUBSCRIPTION_ID>'
      resource_group = '<RESOURCE_GROUP>'
      workspace_name = '<AZUREML_WORKSPACE_NAME>'
      
      ml_client = MLClient(credential=DefaultAzureCredential(),
                              subscription_id=subscription_id, 
                              resource_group_name=resource_group,
                              workspace_name=workspace_name)
      
      blob_datastore1 = AzureBlobDatastore(
          name="your datastore name",
          description="Description",
          account_name="your storage account name",
          container_name="your container name",
          protocol="https",
          credentials=AccountKeyConfiguration(
              account_key="new storage account key"
          ),
      )
      ml_client.create_or_update(blob_datastore1)
      

      نظرًا لأنه تم تحديد overwrite=True، يقوم هذا الرمز بالكتابة فوق التسجيل الحالي وتحديثه لاستخدام المفتاح الجديد.

      # Re-register the blob container
      ds_blob = Datastore.register_azure_blob_container(workspace=ws,
                                                datastore_name='your datastore name',
                                                container_name='your container name',
                                                account_name='your storage account name',
                                                account_key='new storage account key',
                                                overwrite=True)
      # Re-register file shares
      ds_file = Datastore.register_azure_file_share(workspace=ws,
                                            datastore_name='your datastore name',
                                            file_share_name='your container name',
                                            account_name='your storage account name',
                                            account_key='new storage account key',
                                            overwrite=True)
      
      
    2. لإعادة تسجيل مخازن البيانات عبر الاستوديو

      1. في الاستوديو، حدد Data في الجزء الأيمن ضمن Assets.

      2. في الجزء العلوي، حدد Datastores.

      3. حدد مخزن البيانات الذي تريد تحديثه.

      4. حدد زر تحديث بيانات الاعتماد أعلى اليمين.

      5. استخدم مفتاح الوصول الجديد من الخطوة 1 لتعبئة النموذج وانقر فوق حفظ.

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

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

لمزيد من المعلومات حول استخدام مخازن البيانات، راجع استخدام مخازن البيانات.

لمزيدٍ من المعلومات عن تسجيل مخازن البيانات، راجع مرجع الفئة Datastore.