الاتصال إلى Azure الذكاء الاصطناعي Search باستخدام عناصر التحكم في الوصول المستندة إلى الدور

يوفر Azure نظام تخويل عالمي للتحكم في الوصول استنادا إلى الدور لجميع الخدمات التي تعمل على النظام الأساسي. في Azure الذكاء الاصطناعي Search، يمكنك استخدام أدوار Azure من أجل:

  • عمليات وحدة التحكم (مهام إدارة الخدمة من خلال Azure Resource Manager).

  • عمليات مستوى البيانات، مثل إنشاء الفهارس وتحميلها والاستعلام فيها.

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

إشعار

ملاحظة سريعة حول المصطلحات. تشير وحدة التحكم إلى العمليات المدعومة في Management REST API أو مكتبات العميل المكافئة. يشير مستوى البيانات إلى العمليات مقابل نقطة نهاية خدمة البحث، مثل الفهرسة أو الاستعلامات، أو أي عملية أخرى محددة في Search REST API أو مكتبات العميل المكافئة.

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

الدور المستوى ‏‏الوصف
المالك التحكم بالبيانات الوصول الكامل إلى مستوى التحكم لمورد البحث، بما في ذلك القدرة على تعيين أدوار Azure. يمكن فقط لدور المالك تمكين خيارات المصادقة أو تعطيلها أو إدارة الأدوار للمستخدمين الآخرين. مسؤولو الاشتراك هم أعضاء بشكل افتراضي.

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

على مستوى البيانات، يتمتع هذا الدور بنفس الوصول مثل دور مساهم خدمة البحث. يتضمن الوصول إلى جميع إجراءات مستوى البيانات باستثناء القدرة على الاستعلام عن المستندات أو فهرستها.
القارئ التحكم بالبيانات الوصول للقراءة عبر الخدمة بأكملها، بما في ذلك مقاييس البحث ومقاييس المحتوى (التخزين المستهلك وعدد العناصر) وتعريفات الكائنات لموارد مستوى البيانات (الفهارس والمفهرسات وما إلى ذلك). ومع ذلك، لا يمكنه قراءة مفاتيح واجهة برمجة التطبيقات أو قراءة المحتوى داخل الفهارس.
مساهم خدمة البحث التحكم بالبيانات الوصول للقراءة والكتابة إلى تعريفات الكائنات (الفهارس والأسماء المستعارة وخرائط المرادفات والمفهرسات ومصادر البيانات ومجموعات المهارات). هذا الدور للمطورين الذين ينشئون كائنات، وللمسؤولين الذين يديرون خدمة بحث وعناصرها، ولكن دون الوصول إلى محتوى الفهرسة. استخدم هذا الدور لإنشاء الفهارس وحذفها وإدراجها والحصول على تعريفات الفهرس والحصول على معلومات الخدمة (الإحصائيات والحصص النسبية) وتحليلات الاختبار وإنشاء وإدارة خرائط المرادفات والمفهرسات ومصادر البيانات ومجموعات المهارات. راجع Microsoft.Search/searchServices/* للحصول على قائمة الأذونات.
مساهم بيانات فهرس البحث بيانات الوصول للقراءة والكتابة إلى المحتوى في الفهارس. هذا الدور مخصص للمطورين أو مالكي الفهرس الذين يحتاجون إلى استيراد مجموعة مستندات فهرس أو تحديثها أو الاستعلام عنها. لا يدعم هذا الدور إنشاء الفهرس أو إدارته. بشكل افتراضي، يكون هذا الدور لجميع الفهارس على خدمة البحث. راجع منح حق الوصول إلى فهرس واحد لتضييق النطاق.
قارئ بيانات فهرس البحث بيانات الوصول للقراءة فقط للاستعلام عن فهارس البحث. هذا الدور مخصص للتطبيقات والمستخدمين الذين يقومون بتشغيل الاستعلامات. لا يدعم هذا الدور الوصول للقراءة إلى تعريفات الكائنات. على سبيل المثال، لا يمكنك قراءة تعريف فهرس البحث أو الحصول على إحصائيات خدمة البحث. بشكل افتراضي، يكون هذا الدور لجميع الفهارس على خدمة البحث. راجع منح حق الوصول إلى فهرس واحد لتضييق النطاق.

إشعار

إذا قمت بتعطيل الوصول المستند إلى دور Azure، فستظل الأدوار المضمنة لمستوى التحكم (المالك والمساهم والقارئ) متوفرة. يؤدي تعطيل الوصول المستند إلى الدور إلى إزالة الأذونات المتعلقة بالبيانات المقترنة بهذه الأدوار فقط. إذا تم تعطيل أدوار مستوى البيانات، فإن Search Service Contributor يعادل مساهم مستوى التحكم.

القيود

  • قد يؤدي اعتماد التحكم في الوصول استنادا إلى الدور إلى زيادة زمن انتقال بعض الطلبات. تؤدي كل مجموعة فريدة من مورد الخدمة (الفهرس والمفهرس وما إلى ذلك) ومدير الخدمة المستخدم في الطلب إلى إجراء فحص للتخويل. يمكن أن تضيف عمليات التحقق من التخويل هذه ما يصل إلى 200 مللي ثانية من زمن الانتقال إلى الطلب.

  • في حالات نادرة حيث تنشأ الطلبات من عدد كبير من أساسيات الخدمة المختلفة، وجميعها تستهدف موارد خدمة مختلفة (الفهارس، والمفهرسات، وما إلى ذلك)، من الممكن أن تؤدي عمليات التحقق من التخويل إلى تقييد. لن يحدث التقييد إلا إذا تم استخدام مئات المجموعات الفريدة من مورد خدمة البحث ومدير الخدمة في غضون ثانية.

تكوين الوصول المستند إلى الدور لمستوى البيانات

ينطبق على: Search Index Data Contributor، Search Index Data Reader، Search Service Contributor

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

  1. سجل الدخول إلى مدخل Microsoft Azure وافتح صفحة خدمة البحث.

  2. حدد Keys في جزء التنقل الأيمن.

    لقطة شاشة لصفحة المفاتيح مع خيارات المصادقة.

  3. اختر خيار التحكم في الوصول إلى واجهة برمجة التطبيقات. نوصي بكليهما إذا كنت تريد المرونة أو تحتاج إلى ترحيل التطبيقات.

    خيار ‏‏الوصف
    مفتاح API (افتراضي). يتطلب مسؤول أو استعلام مفاتيح API على عنوان الطلب للتخويل. لا يتم استخدام أي أدوار.
    التحكم في الوصول استناداً إلى الدور يتطلب عضوية في تعيين دور لإكمال المهمة، الموضحة في الخطوة التالية. كما يتطلب عنوان تخويل.
    الاثنان معاً الطلبات صالحة باستخدام مفتاح API أو التحكم في الوصول المستند إلى الدور.

التغيير فعال على الفور، ولكن انتظر بضع ثوان قبل الاختبار.

تحترم جميع استدعاءات الشبكة لعمليات خدمة البحث والمحتوى الخيار الذي تحدده: مفاتيح API أو الرمز المميز للحامل أو إما واحدة إذا حددت كلاهما.

عند تمكين التحكم في الوصول المستند إلى الدور في المدخل، يكون وضع الفشل هو "http401WithBearerChallenge" إذا فشل التخويل.

تعيين الأدوار

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

يجب أن تكون مالكاأو لديك أذونات Microsoft.Authorization/roleAssignments/write لإدارة تعيينات الأدوار.

تعيينات الأدوار في المدخل على مستوى الخدمة. إذا كنت تريد منح أذونات إلى فهرس واحد، فاستخدم PowerShell أو Azure CLI بدلا من ذلك.

  1. قم بتسجيل الدخول إلى بوابة Azure.

  2. انتقل إلى خدمة البحث.

  3. حدد Access Control (IAM) في جزء التنقل الأيمن.

  4. حدد "إضافة">لإضافة تعيين دور.

    صفحة التحكم في الوصول مع فتح قائمة إضافة تعيين دور.

  5. حدد دورا قابلا للتطبيق:

    • مالك
    • مساهم
    • القارئ
    • مساهم خدمة البحث
    • مساهم بيانات فهرس البحث
    • قارئ بيانات فهرس البحث
  6. في علامة التبويب الأعضاء ، حدد هوية المستخدم أو المجموعة Microsoft Entra.

  7. في علامة التبويب Review + assign ، حدد Review + assign لتعيين الدور.

اختبار تعيينات الأدوار

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

تأكد من تسجيل تطبيق العميل الخاص بك باستخدام معرف Microsoft Entra وأن لديك تعيينات الأدوار في مكانها قبل اختبار الوصول.

  1. قم بتسجيل الدخول إلى بوابة Azure.

  2. انتقل إلى خدمة البحث.

  3. في صفحة Overview، حدد علامة التبويب Indexes :

    • يمكن للمساهمين في خدمة البحث عرض أي كائن وإنشائه، ولكن لا يمكنهم تحميل المستندات أو الاستعلام عن فهرس. للتحقق من الأذونات، قم بإنشاء فهرس بحث.

    • يمكن لمساهمي بيانات فهرس البحث تحميل المستندات والاستعلام عن المستندات. للتحقق من الأذونات، استخدم مستكشف البحث للاستعلام عن المستندات. لا يوجد خيار تحميل المستندات في المدخل خارج معالج استيراد البيانات. نظرا لأن المعالج يقوم أيضا بإنشاء كائنات، فستحتاج إلى Search Service Contributor، بالإضافة إلى Search Index Data Contributor.

    • يمكن لقارئ بيانات فهرس البحث الاستعلام عن الفهرس. للتحقق من الأذونات، استخدم مستكشف البحث. يجب أن تكون قادرا على إرسال الاستعلامات وعرض النتائج، ولكن يجب ألا تتمكن من عرض تعريف الفهرس.

اختبار كمستخدم حالي

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

  1. احصل على رمز حامل للمستخدم الحالي باستخدام Azure CLI:

    az account get-access-token --scope https://search.azure.com/.default
    

    أو باستخدام PowerShell:

    Get-AzAccessToken -ResourceUrl https://search.azure.com
    
  2. في ملف نصي جديد في Visual Studio Code، الصق هذه المتغيرات:

    @baseUrl = PASTE-YOUR-SEARCH-SERVICE-URL-HERE
    @index-name = PASTE-YOUR-INDEX-NAME-HERE
    @token = PASTE-YOUR-TOKEN-HERE
    
  3. الصق ثم أرسل طلبا لتأكيد الوصول. فيما يلي واحد يستعلم عن فهرس التشغيل السريع للفنادق

    POST https://{{baseUrl}}/indexes/{{index-name}}/docs/search?api-version=2023-11-01 HTTP/1.1
      Content-type: application/json
      Authorization: Bearer {{token}}
    
        {
             "queryType": "simple",
             "search": "motel",
             "filter": "",
             "select": "HotelName,Description,Category,Tags",
             "count": true
         }
    

منح حق الوصول إلى فهرس واحد

في بعض السيناريوهات، قد تحتاج إلى الحد من وصول التطبيق إلى مورد واحد، مثل الفهرس.

لا يدعم المدخل حاليا تعيينات الأدوار على هذا المستوى من النقاوة، ولكن يمكن القيام بذلك باستخدام PowerShell أو Azure CLI.

في PowerShell، استخدم New-AzRoleAssignment، مع توفير اسم مستخدم Azure أو المجموعة، ونطاق التعيين.

  1. تحميل الوحدات النمطية Azure و AzureAD والاتصال بحساب Azure الخاص بك:

    Import-Module -Name Az
    Import-Module -Name AzureAD
    Connect-AzAccount
    
  2. إضافة تعيين دور محدد النطاق إلى فهرس فردي:

    New-AzRoleAssignment -ObjectId <objectId> `
        -RoleDefinitionName "Search Index Data Contributor" `
        -Scope  "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
    

إنشاء دور مخصص

إذا لم توفر الأدوار المضمنة المجموعة الصحيحة من الأذونات، يمكنك إنشاء دور مخصص لدعم العمليات التي تحتاجها

ينسخ هذا المثال قارئ بيانات فهرس البحث ثم يضيف القدرة على سرد الفهارس حسب الاسم. عادة، يعتبر سرد الفهارس على خدمة البحث حقا إداريا.

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

تنشئ هذه الخطوات دورا مخصصا يزيد من حقوق استعلام البحث لتضمين قوائم الفهارس حسب الاسم. عادة ما يعتبر سرد الفهارس دالة مسؤول.

  1. في مدخل Microsoft Azure، انتقل إلى خدمة البحث.

  2. في جزء التنقل الأيسر، حدد Access Control (IAM).

  3. في شريط الإجراءات، حدد Roles.

  4. انقر بزر الماوس الأيمن فوق Search Index Data Reader (أو دور آخر) وحدد Clone لفتح معالج Create a custom role.

  5. في علامة التبويب Basics، أدخل اسما للدور المخصص، مثل "Search Index Data Explorer"، ثم حدد Next.

  6. في علامة التبويب أذونات، حدد إضافة إذن.

  7. في علامة التبويب إضافة أذونات، ابحث عن لوحة البحث من Microsoft ثم حددها.

  8. تعيين الأذونات لدورك المخصص. في أعلى الصفحة، باستخدام تحديد الإجراءات الافتراضي:

    • ضمن Microsoft.Search/operations، حدد Read : List all available operations.
    • ضمن Microsoft.Search/searchServices/indexes، حدد Read : Read Index.
  9. في نفس الصفحة، قم بالتبديل إلى إجراءات البيانات وضمن Microsoft.Search/searchServices/indexes/documents، حدد Read : Read Documents.

    يبدو تعريف JSON مثل المثال التالي:

    {
     "properties": {
         "roleName": "search index data explorer",
         "description": "",
         "assignableScopes": [
             "/subscriptions/0000000000000000000000000000000/resourceGroups/free-search-svc/providers/Microsoft.Search/searchServices/demo-search-svc"
         ],
         "permissions": [
             {
                 "actions": [
                     "Microsoft.Search/operations/read",
                     "Microsoft.Search/searchServices/indexes/read"
                 ],
                 "notActions": [],
                 "dataActions": [
                     "Microsoft.Search/searchServices/indexes/documents/read"
                 ],
                 "notDataActions": []
             }
         ]
       }
     }
    
  10. حدد Review + create لإنشاء الدور. يمكنك الآن تعيين المستخدمين والمجموعات للدور.

تعطيل مصادقة مفتاح API

يمكن تعطيل الوصول إلى المفتاح أو المصادقة المحلية على خدمتك إذا كنت تستخدم أدوار Search Service Contributor و Search Index Data Contributor و Search Index Data Reader وMicrosoft Entra. يؤدي تعطيل مفاتيح واجهة برمجة التطبيقات إلى رفض خدمة البحث لجميع الطلبات المتعلقة بالبيانات التي تمرر مفتاح API في العنوان.

إشعار

يمكن تعطيل مفاتيح واجهة برمجة التطبيقات مسؤول فقط، وليس حذفها. يمكن حذف مفاتيح واجهة برمجة تطبيقات الاستعلام.

مطلوب أذونات المالك أو المساهم لتعطيل الميزات.

لتعطيل المصادقة المستندة إلى المفتاح، استخدم مدخل Microsoft Azure أو Management REST API.

  1. في مدخل Microsoft Azure، انتقل إلى خدمة البحث.

  2. في جزء التنقل الأيسر، حدد Keys.

  3. حدد التحكم في الوصول المستند إلى الدور.

التغيير فعال على الفور، ولكن انتظر بضع ثوان قبل الاختبار. بافتراض أن لديك الإذن لتعيين الأدوار كعضو في المالك أو مسؤول الخدمة أو المسؤول المشارك، يمكنك استخدام ميزات المدخل لاختبار الوصول المستند إلى الدور.

الوصول المشروط

نوصي Microsoft Entra Conditional Access إذا كنت بحاجة إلى فرض نهج تنظيمية، مثل المصادقة متعددة العوامل.

لتمكين نهج الوصول المشروط ل Azure الذكاء الاصطناعي Search، اتبع الخطوات التالية:

  1. تسجيل الدخول إلى مدخل Microsoft Azure.

  2. ابحث عن الوصول المشروط ل Microsoft Entra.

  3. حدد نُهج.

  4. حدد "New policy".

  5. في قسم تطبيقات السحابة أو الإجراءات في النهج، أضف Azure الذكاء الاصطناعي Search كتطبيق سحابي استنادا إلى الطريقة التي تريد بها إعداد نهجك.

  6. تحديث المعلمات المتبقية من النهج. على سبيل المثال، حدد المستخدمين والمجموعات التي ينطبق عليها هذا النهج.

  7. احفظ النهج.

هام

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

استكشاف مشكلات التحكم في الوصول استنادا إلى الدور وإصلاحها

عند تطوير التطبيقات التي تستخدم التحكم في الوصول استنادا إلى الدور للمصادقة، قد تحدث بعض المشكلات الشائعة:

  • إذا جاء الرمز المميز للتخويل من هوية مدارة وتم تعيين الأذونات المناسبة مؤخرا، فقد يستغرق الأمر عدة ساعات حتى تسري تعيينات الأذونات هذه.
  • التكوين الافتراضي لخدمة البحث هو المصادقة المستندة إلى المفتاح فقط. إذا لم تقم بتغيير إعداد المفتاح الافتراضي إلى كل منأو التحكم في الوصول المستند إلى الدور، فسيتم رفض جميع الطلبات التي تستخدم المصادقة المستندة إلى الدور تلقائيا بغض النظر عن الأذونات الأساسية.