إعداد اتصال مفهرس بقاعدة بيانات Azure SQL باستخدام هوية مدارة

توضح هذه المقالة كيفية إعداد اتصال مفهرس بحث Azure المعرفي إلى قاعدة بيانات Azure SQL باستخدام هوية مدارة بدلا من توفير بيانات اعتماد في سلسلة الاتصال.

يمكنك استخدام هوية مدارة معينة من قبل النظام أو هوية مدارة (معاينة) معينة من قبل المستخدم. الهويات المدارة هي Azure AD عمليات تسجيل الدخول وتتطلب تعيينات دور Azure للوصول إلى البيانات في Azure SQL.

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

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

1- تعيين أذونات لقراءة قاعدة البيانات

اتبع الخطوات التالية لتعيين خدمة البحث أو إذن الهوية المدارة المعين من قبل المستخدم لقراءة قاعدة البيانات.

  1. الاتصال إلى Visual Studio

    Connect to Visual Studio

  2. المصادقة باستخدام حساب Azure AD الخاص بك

    Authenticate

  3. نفذ الأوامر التالية:

    قم بتضمين الأقواس حول اسم خدمة البحث أو اسم الهوية المدارة المعين من قبل المستخدم.

    CREATE USER [insert your search service name here or user-assigned managed identity name] FROM EXTERNAL PROVIDER;
    EXEC sp_addrolemember 'db_datareader', [insert your search service name here or user-assigned managed identity name];
    

    New query

    Execute query

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

sp_droprolemember 'db_datareader', [insert your search service name or user-assigned managed identity name];

DROP USER IF EXISTS [insert your search service name or user-assigned managed identity name];

2 - إضافة تعيين دور

في هذا القسم، ستمنح Azure Cognitive خدمة البحث إذنا لقراءة البيانات من SQL Server. للحصول على خطوات تفصيلية، راجع ⁧⁩تعيين أدوار Azure باستخدام مدخل Microsoft Azure⁧⁩.

  1. في مدخل Azure، انتقل إلى صفحة Azure SQL Server.

  2. حدد Access control (IAM).

  3. حدد إضافة إضافة > تعيين دور.

    Screenshot that shows Access control (IAM) page with Add role assignment menu open.

  4. في علامة التبويب الدور ، حدد دور القارئ المناسب.

  5. ضمن علامة التبويب الأعضاء، حدد الهوية المدارة، ثم حدد تحديد الأعضاء.

  6. حدد اشتراكك في Azure.

  7. إذا كنت تستخدم هوية مدارة معينة من قبل النظام، فحدد الهوية المدارة المعينة من قبل النظام، وابحث عن خدمة البحث، ثم حددها.

  8. وإلا، إذا كنت تستخدم هوية مدارة معينة من قبل المستخدم، فحدد الهوية المدارة المعينة من قبل المستخدم، وابحث عن اسم الهوية المدارة المعينة من قبل المستخدم، ثم حددها.

  9. في علامة التبويب ⁦⁩مراجعة + تعيين، حدد مراجعة + تعيين⁩ لتعيين الدور.

3 - إنشاء مصدر البيانات

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

الهوية المُدارة التي يُعيّنها النظام

تدعم واجهة برمجة تطبيقات REST ومدخل Azure و.NET SDK الهوية المدارة المعينة من قبل النظام.

عند الاتصال بهوية مدارة معينة من قبل النظام، فإن التغيير الوحيد في تعريف مصدر البيانات هو تنسيق الخاصية "بيانات الاعتماد". ستوفر اسم كتالوج أولي أو قاعدة بيانات و ResourceId لا يحتوي على مفتاح حساب أو كلمة مرور. يجب أن يتضمن ResourceId معرف الاشتراك الخاص بقاعدة بيانات Azure SQL ومجموعة موارد قاعدة بيانات SQL واسم قاعدة بيانات SQL.

فيما يلي مثال على كيفية إنشاء مصدر بيانات لفهرسة البيانات من حساب تخزين باستخدام واجهة برمجة تطبيقات REST لإنشاء مصدر بيانات وسلسلة اتصال هوية مدارة. تنسيق سلسلة اتصال الهوية المدارة هو نفسه ل REST API و .net SDK ومدخل Azure.

POST https://[service name].search.windows.net/datasources?api-version=2020-06-30
Content-Type: application/json
api-key: [admin key]

{
    "name" : "sql-datasource",
    "type" : "azuresql",
    "credentials" : { 
        "connectionString" : "Database=[SQL database name];ResourceId=/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.Sql/servers/[SQL Server name];Connection Timeout=30;"
    },
    "container" : { 
        "name" : "my-table" 
    }
} 

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

تدعم واجهة برمجة تطبيقات REST للمعاينة 2021-04-30 الاتصالات استنادا إلى هوية مدارة معينة من قبل المستخدم. عند الاتصال بهوية مدارة معينة من قبل المستخدم، هناك تغييران في تعريف مصدر البيانات:

  • أولا، تنسيق الخاصية "بيانات الاعتماد" هو اسم كتالوج أولي أو قاعدة بيانات و ResourceId الذي لا يحتوي على مفتاح حساب أو كلمة مرور. يجب أن يتضمن ResourceId معرف الاشتراك الخاص بقاعدة بيانات Azure SQL ومجموعة موارد قاعدة بيانات SQL واسم قاعدة بيانات SQL. هذا هو نفس تنسيق الهوية المدارة المعينة من قبل النظام.

  • ثانيا، ستضيف خاصية "هوية" تحتوي على مجموعة الهويات المدارة المعينة من قبل المستخدم. يجب توفير هوية مدارة واحدة فقط تم تعيينها من قبل المستخدم عند إنشاء مصدر البيانات. قم بتعيينه لكتابة "userAssignIdentity".

فيما يلي مثال على كيفية إنشاء كائن مصدر بيانات مفهرس باستخدام واجهة برمجة تطبيقات REST لإنشاء أو تحديث مصدر البيانات :

POST https://[service name].search.windows.net/datasources?api-version=2021-04-30-preview
Content-Type: application/json
api-key: [admin key]

{
    "name" : "sql-datasource",
    "type" : "azuresql",
    "credentials" : { 
        "connectionString" : "Database=[SQL database name];ResourceId=/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.Sql/servers/[SQL Server name];Connection Timeout=30;"
    },
    "container" : { 
        "name" : "my-table" 
    },
    "identity" : { 
        "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
        "userAssignedIdentity" : "/subscriptions/[subscription ID]/resourcegroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]"
    }
}   

4 - إنشاء الفهرس

يحدد الفهرس الحقول الموجودة في مستند وسمات وتركيبات أخرى تشكل تجربة البحث.

في ما يلي استدعاء إنشاء فهرس REST API مع حقل قابل للبحث booktitle :

POST https://[service name].search.windows.net/indexes?api-version=2020-06-30
Content-Type: application/json
api-key: [admin key]

{
    "name" : "my-target-index",
    "fields": [
        { "name": "id", "type": "Edm.String", "key": true, "searchable": false },
        { "name": "booktitle", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false }
    ]
}

5 - إنشاء المفهرس

يربط المفهرس مصدر بيانات بفهرس بحث مستهدف، ويوفر جدولا زمنيا لأتمتة تحديث البيانات. بمجرد إنشاء الفهرس ومصدر البيانات، تصبح جاهزا لإنشاء المفهرس.

إليك استدعاء واجهة برمجة تطبيقات إنشاء مفهرس REST مع تعريف مفهرس Azure SQL. سيتم تشغيل المفهرس عند إرسال الطلب.

POST https://[service name].search.windows.net/indexers?api-version=2020-06-30
Content-Type: application/json
api-key: [admin key]

{
    "name" : "sql-indexer",
    "dataSourceName" : "sql-datasource",
    "targetIndexName" : "my-target-index"

استكشاف الأخطاء وإصلاحها

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

يمكنك أيضا استبعاد أي مشكلات في جدار الحماية من خلال تجربة الاتصال مع وبدون قيود معمول بها.

راجع أيضًا