استخدام الهويات المدارة من Azure في كتالوج Unity للوصول إلى التخزين

توضح هذه المقالة كيفية استخدام الهويات المدارة من Azure للاتصال بحاويات التخزين نيابة عن مستخدمي كتالوج Unity.

ما هي الهويات المدارة من Azure؟

يمكن تكوين كتالوج Unity لاستخدام هوية مدارة من Azure للوصول إلى حاويات التخزين نيابة عن مستخدمي كتالوج Unity. توفر الهويات المدارة هوية للتطبيقات لاستخدامها عند الاتصال بالموارد التي تدعم مصادقة معرف Microsoft Entra (المعروف سابقا ب Azure Active Directory).

يمكنك استخدام الهويات المدارة في كتالوج Unity لدعم حالتي استخدام أساسيتين:

  • كهوية للاتصال بحسابات التخزين المدارة في metastore (حيث يتم تخزين الجداول المدارة).
  • كهوية للاتصال بحسابات التخزين الخارجية الأخرى (إما للوصول المستند إلى الملفات أو للوصول إلى مجموعات البيانات الموجودة من خلال الجداول الخارجية).

تكوين كتالوج Unity بهوية مدارة له الفوائد التالية على تكوين كتالوج Unity مع كيان خدمة:

تكوين هوية مدارة للكتالوج Unity

لتكوين هوية مدارة لاستخدامها مع كتالوج Unity، يمكنك أولا إنشاء موصل وصول ل Azure Databricks في Azure. بشكل افتراضي، سيتم نشر موصل الوصول بهوية مدارة معينة من قبل النظام. يمكنك اختيار بدلا من ذلك لإرفاق هوية مدارة معينة من قبل المستخدم. ثم تمنح الوصول إلى الهوية المدارة إلى حساب Azure Data Lake Storage Gen2 الخاص بك وتستخدم موصل الوصول عند إنشاء مخزن بيانات تعريف كتالوج Unity أو بيانات اعتماد التخزين.

المتطلبات

يجب على مستخدم Azure أو كيان الخدمة الذي يقوم بإنشاء موصل الوصول:

  • كن مساهما أو مالكا لمجموعة موارد Azure.

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

  • كن مالكا أو مستخدما مع دور المستخدم Access مسؤول istrator Azure RBAC على حساب التخزين.

الخطوة 1: إنشاء موصل وصول ل Azure Databricks

Access الاتصال or ل Azure Databricks هو مورد Azure تابع لجهة أولى يتيح لك توصيل الهويات المدارة بحساب Azure Databricks.

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

استخدام هوية مدارة معينة من قبل النظام

  1. سجل الدخول إلى مدخل Microsoft Azure كمساهم أو مالك لمجموعة موارد.

  2. انقر فوق + إنشاء أو إنشاء مورد جديد.

  3. ابحث عن Access الاتصال or ل Azure Databricks وحدده.

  4. انقر فوق Create.

  5. في علامة التبويب Basics ، اقبل قيم الحقول التالية أو حددها أو أدخلها:

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

  7. عندما ترى رسالة التحقق من الصحة التي تم تمريرها ، انقر فوق إنشاء.

    عند نجاح النشر، يتم نشر موصل الوصول بهوية مدارة معينة من قبل النظام.

  8. عند اكتمال النشر، انقر فوق الانتقال إلى المورد.

  9. دون معرف المورد.

    معرف المورد بالتنسيق:

    /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    

استخدم هوية مُدارة يعينها المستخدم

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

    راجع إدارة الهويات المدارة المعينة من قبل المستخدم.

  2. سجل الدخول إلى مدخل Microsoft Azure كمساهم أو مالك لمجموعة موارد.

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

  3. ابحث عن نشر قالب مخصص وحدده.

  4. حدد إنشاء القالب الخاص بك والصق القالب التالي في المحرر:

    {
     "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
     "contentVersion": "1.0.0.0",
     "parameters": {
         "connectorName": {
             "defaultValue": "testConnector",
             "type": "String",
             "metadata": {
                 "description": "The name of the Azure Databricks Access Connector to create."
             }
         },
         "accessConnectorRegion": {
             "defaultValue": "[resourceGroup().location]",
             "type": "String",
             "metadata": {
                 "description": "Location for the access connector resource."
             }
         },
         "userAssignedManagedIdentiy": {
             "type": "String",
             "metadata": {
                 "description": "The resource Id of the user assigned managed identity."
             }
         }
     },
     "resources": [
         {
             "type": "Microsoft.Databricks/accessConnectors",
             "apiVersion": "2023-05-01",
             "name": "[parameters('connectorName')]",
             "location": "[parameters('accessConnectorRegion')]",
             "identity": {
                 "type": "UserAssigned",
                 "userAssignedIdentities": {
                     "[parameters('userAssignedManagedIdentiy')]": {}
                 }
              }
          }
       ]
    }
    
  5. في علامة التبويب Basics، اقبل قيم الحقول التالية أو حددها أو أدخلها:

    • الاشتراك: اشتراك Azure الذي سيتم إنشاء موصل الوصول فيه. الإعداد الافتراضي هو اشتراك Azure الذي تستخدمه حاليا. يمكن أن يكون أي اشتراك في المستأجر.
    • مجموعة الموارد: مجموعة موارد في نفس المنطقة مثل حساب التخزين الذي ستتصل به.
    • الاسم: اسم يشير إلى الغرض من الموصل.
    • المنطقة: يجب أن تكون هذه المنطقة هي نفس منطقة حساب التخزين الذي ستتصل به. يمكنك اختيار القيمة التي تم ملؤها مسبقا '[resourceGroup().location]' إذا تم إنشاء مجموعة الموارد في نفس المنطقة مثل حساب التخزين الذي ستتصل به.
    • الهوية المدارة المعينة من قبل المستخدم: معرف المورد للهوية المدارة المعينة من قبل المستخدم التي تريد استخدامها.
  6. انقر فوق مراجعة + إنشاء.

  7. عندما ترى رسالة التحقق من الصحة التي تم تمريرها ، انقر فوق إنشاء.

  8. عند اكتمال النشر، انقر فوق الانتقال إلى المورد.

  9. دون معرف المورد.

    معرف المورد بالتنسيق:

    /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    

الخطوة 2: منح الوصول إلى الهوية المدارة إلى حساب التخزين

لمنح الأذونات في هذه الخطوة، يجب أن يكون لديك دور المالك أو وصول المستخدم مسؤول istrator Azure RBAC على حساب التخزين الخاص بك.

  1. سجل الدخول إلى حساب Azure Data Lake Storage Gen2.
  2. انتقل إلى Access Control (IAM)، وانقر فوق + Add، وحدد Add role assignment.
  3. حدد دور Storage Blob Data Contributor وانقر فوق Next.
  4. ضمن تعيين الوصول إلى، حدد الهوية المدارة.
  5. انقر فوق +Select Members، وحدد إما Access connector ل Azure Databricks أو الهوية المدارة المعينة من قبل المستخدم.
  6. ابحث عن اسم الموصل أو الهوية المعينة من قبل المستخدم، وحددها، وانقر فوق مراجعة وتعيين.

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

الخطوة 3: منح الهوية المدارة حق الوصول إلى أحداث الملفات

يسمح منح الهوية المدارة الخاصة بك بالوصول إلى أحداث الملفات ل Azure Databricks بالاشتراك في إعلامات أحداث الملفات المنبعثة من موفري السحابة. وهذا يجعل معالجة الملفات أكثر كفاءة. لمنح الأذونات في هذه الخطوة، يجب أن يكون لديك دور المالك أو وصول المستخدم مسؤول istrator Azure RBAC على حساب التخزين الخاص بك.

  1. سجل الدخول إلى حساب Azure Data Lake Storage Gen2.
  2. انتقل إلى Access Control (IAM)، وانقر فوق + Add، وحدد Add role assignment.
  3. حدد دور مساهم بيانات قائمة انتظار التخزين، وانقر فوق التالي.
  4. ضمن تعيين الوصول إلى، حدد الهوية المدارة.
  5. انقر فوق +Select Members، وحدد إما Access connector ل Azure Databricks أو الهوية المدارة المعينة من قبل المستخدم.
  6. ابحث عن اسم الموصل أو الهوية المعينة من قبل المستخدم، وحددها، وانقر فوق مراجعة وتعيين.

تسمح هذه الخطوة ل Azure Databricks بإعداد أحداث الملفات تلقائيا. إذا لم تمنح Azure Databricks حق الوصول لتكوين أحداث الملفات نيابة عنك، فيجب عليك تكوين أحداث الملفات يدويا لكل موقع. لمنح الأذونات في هذه الخطوة، يجب أن يكون لديك أدوار المالك أو وصول المستخدم مسؤول istrator Azure RBAC على هويتك المدارة ومجموعة الموارد التي يوجد بها حساب Azure Data Lake Storage Gen2.

  1. اتبع الخطوات المذكورة أعلاه في الخطوة 3: منح الهوية المدارة حق الوصول إلى أحداث الملفات وتعيين مساهم حساب التخزين، جنبا إلى جنب مع دور مساهم بيانات قائمة انتظار التخزين، إلى هويتك المدارة.
  2. انتقل إلى مجموعة موارد Azure التي يوجد بها حساب Azure Data Lake Storage Gen2.
  3. انتقل إلى Access Control (IAM)، وانقر فوق + Add، وحدد Add role assignment.
  4. حدد دور EventGrid EventSubscription Contributor وانقر فوق Next.
  5. ضمن تعيين الوصول إلى، حدد الهوية المدارة.
  6. انقر فوق +Select Members، وحدد إما Access connector ل Azure Databricks أو الهوية المدارة المعينة من قبل المستخدم.
  7. ابحث عن اسم الموصل أو الهوية المعينة من قبل المستخدم، وحددها، وانقر فوق مراجعة وتعيين.

استخدام هوية مدارة للوصول إلى حساب تخزين جذر كتالوج Unity

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

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

  1. بصفتك مسؤول حساب Azure Databricks، سجل الدخول إلى وحدة تحكم حساب Azure Databricks.
  2. انقر فوق أيقونة الكتالوجكتالوج.
  3. انقر فوق Create Metastore.
  4. أدخل قيم الحقول التالية:
    • اسم metastore.

    • المنطقة التي سيتم نشر metastore فيها.

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

    • مسار ADLS Gen 2: أدخل المسار إلى حاوية التخزين التي ستستخدمها كمخزن جذر لمخزن metastore.

      تتم إضافة البادئة abfss:// تلقائيا.

    • Access الاتصال or ID: أدخل معرف مورد موصل الوصول إلى Azure Databricks بالتنسيق:

      /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
      
    • (اختياري) معرف الهوية المدارة: إذا قمت بإنشاء موصل الوصول باستخدام هوية مدارة معينة من قبل المستخدم، أدخل معرف المورد للهوية المدارة.

  5. انقر فوق Create.
  6. عند المطالبة، حدد مساحات العمل للارتباط ب metastore.

استخدام هوية مدارة للوصول إلى التخزين الخارجي المدار في كتالوج Unity

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

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

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

إذا تم نشر مساحة عمل Azure Databricks في شبكة Azure الظاهرية الخاصة بك، والمعروفة أيضا باسم "حقن الشبكة الظاهرية"، وكنت تستخدم جدار حماية تخزين لحماية حساب Azure Data Lake Storage Gen2، فيجب عليك:

  1. تمكين مساحة عمل Azure Databricks للوصول إلى Azure Storage.
  2. تمكين الهوية المدارة للوصول إلى Azure Storage.

الخطوة 1. تمكين مساحة عمل Azure Databricks للوصول إلى Azure Storage

يجب تكوين إعدادات الشبكة للسماح لمساحة عمل Azure Databricks بالوصول إلى Azure Data Lake Storage Gen2. يمكنك تكوين نقاط النهاية الخاصة أو الوصول من شبكتك الظاهرية على Azure Data Lake Storage Gen2 للسماح بالاتصالات من الشبكات الفرعية إلى حساب Azure Data Lake Storage Gen2.

للحصول على إرشادات، راجع منح مساحة عمل Azure Databricks حق الوصول إلى Azure Data Lake Storage Gen2.

الخطوة 2: تمكين هويتك المدارة للوصول إلى Azure Storage

هذه الخطوة ضرورية فقط إذا تم تعطيل "السماح لخدمات Azure في قائمة الخدمات الموثوق بها بالوصول إلى حساب التخزين هذا" لحساب Azure Storage الخاص بك. إذا تم تمكين هذا التكوين:

  • يمكن لأي موصل وصول ل Azure Databricks في نفس المستأجر مثل حساب التخزين الوصول إلى حساب التخزين.
  • يمكن لأي خدمة موثوق بها في Azure الوصول إلى حساب التخزين. راجع منح حق الوصول إلى خدمات Azure الموثوق بها.

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

استخدام مدخل Microsoft Azure

  1. سجل الدخول إلى مدخل Microsoft Azure، وابحث عن حساب Azure Storage وحدده، وانتقل إلى علامة التبويب Networking .

  2. تعيين الوصول إلى الشبكة العامة إلى ممكن من الشبكات الظاهرية المحددة وعناوين IP.

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

  3. ضمن Resource instances، حدد Resource type of Microsoft.Databricks/access الاتصال ors وحدد موصل الوصول إلى Azure Databricks.

  4. ضمن استثناءات، قم بإلغاء تحديد خانة الاختيار السماح لخدمات Azure في قائمة الخدمات الموثوق بها بالوصول إلى حساب التخزين هذا.

استخدام Azure CLI

  1. تثبيت Azure CLI وتسجيل الدخول.

    لتسجيل الدخول باستخدام كيان خدمة معرف Microsoft Entra، راجع تسجيل الدخول إلى Azure CLI باستخدام أساس خدمة معرف Microsoft Entra.

    لتسجيل الدخول باستخدام حساب مستخدم Azure Databricks، راجع تسجيل الدخول إلى Azure CLI باستخدام حساب مستخدم Azure Databricks.

  2. إضافة قاعدة شبكة إلى حساب التخزين:

    az storage account network-rule add \
    -–subscription <subscription id of the resource group> \
    -–resource-id <resource Id of the access connector for Azure Databricks> \
    -–tenant-id <tenant Id> \
    -g <name of the Azure Storage resource group> \
    -–account-name <name of the Azure Storage resource> \
    

    أضف معرف المورد بالتنسيق:

    /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    
  3. بعد إنشاء قاعدة الشبكة، انتقل إلى حساب Azure Storage في مدخل Azure واعرض الهوية المدارة في علامة التبويب Networking ضمن Resource instances، نوع Microsoft.Databricks/accessConnectorsالمورد .

  4. ضمن استثناءات، قم بإلغاء تحديد خانة الاختيار السماح لخدمات Azure في قائمة الخدمات الموثوق بها بالوصول إلى حساب التخزين هذا.

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

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

مستودعات SQL بلا خادم هي موارد حساب تعمل في اشتراك Azure ل Azure Databricks، وليس اشتراك Azure الخاص بك. إذا قمت بتكوين جدار حماية على Azure Data Lake Storage Gen2 وكنت تخطط لاستخدام مستودعات SQL بلا خادم، يجب تكوين جدار الحماية للسماح بالوصول من مستودعات SQL بلا خادم.

للحصول على إرشادات، راجع تكوين جدار حماية للوصول إلى الحوسبة بدون خادم.

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

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

  1. إنشاء Access الاتصال or ل Azure Databricks وتعيين أذونات له إلى حاوية التخزين التي يتم استخدامها لتخزين جذر مخزن بيانات تعريف كتالوج Unity الخاص بك، باستخدام الإرشادات الموجودة في تكوين هوية مدارة ل Unity Catalog.

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

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

  2. بصفتك مسؤول حساب، سجل الدخول إلى مساحة عمل Azure Databricks التي تم تعيينها إلى metastore.

    ليس عليك أن تكون مسؤول مساحة عمل.

    دون ملاحظة عن عنوان URL لمساحة العمل، وهو الجزء الأول من عنوان URL، بعد https:// وشامل ل azuredatabricks.net.

  3. إنشاء رمز مميز للوصول الشخصي.

  4. أضف الرمز المميز للوصول الشخصي إلى .netrc الملف في الدليل الرئيسي. يؤدي هذا إلى تحسين الأمان عن طريق منع رمز الوصول الشخصي من الظهور في محفوظات أوامر shell. راجع واجهة برمجة تطبيقات إدارة الرمز المميز.

  5. قم بتشغيل الأمر cURL التالي لإعادة إنشاء بيانات اعتماد التخزين.

    استبدل قيم العنصر النائب:

    • <databricks-instance>: عنوان URL لمساحة العمل لمساحة العمل حيث تم إنشاء الرمز المميز للوصول الشخصي.
    • <credential-name>: اسم لبيانات اعتماد التخزين.
    • <access-connector-id>: معرف المورد لموصل الوصول إلى Azure Databricks بالتنسيق /subscriptions/12f34567-8ace-9c10-111c-aea8eba12345c/resourceGroups/<resource-group>/providers/Microsoft.Databricks/accessConnectors/<connector-name>
    • <managed-identity-id>: إذا قمت بإنشاء موصل الوصول باستخدام هوية مدارة معينة من قبل المستخدم، فحدد معرف المورد للهوية المدارة.
    curl -n -X POST --header 'Content-Type: application/json' https://<databricks-instance>/api/2.0/unity-catalog/storage-credentials --data "{
      \"name\": \"<credential-name>\",
      \"azure_managed_identity\": {
        \"access_connector_id\": \"<access-connector-id>\",
        \"managed_identity_id\": \"<managed-identity-id>\"
      }
    }"
    
  6. دون ملاحظة عن معرف بيانات اعتماد التخزين في الاستجابة.

  7. قم بتشغيل الأمر cURL التالي لاسترداد metastore_id، حيث <databricks-instance> هو عنوان URL لمساحة العمل لمساحة العمل حيث تم إنشاء رمز الوصول الشخصي المميز.

    curl -n GET--header 'Content-Type: application/json' https://<databricks-instance>/api/2.0/unity-catalog/metastore_summary
    
  8. قم بتشغيل الأمر cURL التالي لتحديث metastore باستخدام بيانات اعتماد التخزين الجذر الجديدة.

    استبدل قيم العنصر النائب:

    • <databricks-instance>: عنوان URL لمساحة العمل لمساحة العمل حيث تم إنشاء الرمز المميز للوصول الشخصي.
    • <metastore-id>: معرف metastore الذي قمت باسترداده في الخطوة السابقة.
    • <storage-credential-id>: معرف بيانات اعتماد التخزين.
    curl -n -X PATCH --header 'Content-Type: application/json' https://<databricks-instance>/api/2.0/unity-catalog/metastores/<metastore-id> --data
    "{\"storage_root_credential_id\": \"<storage-credential-id>\"}"