الاتصال ب Azure الذكاء الاصطناعي Search باستخدام الأدوار

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

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

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

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

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

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

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

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

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

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

إشعار

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

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

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

تعيين أدوار لإدارة الخدمة

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

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

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

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

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

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

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

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

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

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

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

هام

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

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

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

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

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

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

  5. حدد دورا:

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

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

  6. في علامة التبويب الأعضاء ، حدد هوية المستخدم أو المجموعة Microsoft Entra.

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

  8. كرر للأدوار الأخرى. يحتاج معظم المطورين إلى الثلاثة.

تعيين أدوار للاستعلامات للقراءة فقط

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

وهذا دور محدد جدا. فهو يمنح GET أو POST حق الوصول إلى مجموعة المستندات الخاصة بفهرس البحث للبحث والإكمال التلقائي والاقتراحات. لا يدعم عمليات GET أو LIST على فهرس أو كائنات المستوى الأعلى الأخرى، أو إحصائيات خدمة GET.

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

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

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

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

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

  5. حدد دور Search Index Data Reader.

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

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

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

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

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

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

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

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

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

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

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

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

إذا كنت بالفعل مساهما أو مالكا لخدمة البحث، يمكنك تقديم رمز حامل لهوية المستخدم للمصادقة على 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 لإنشاء الدور. يمكنك الآن تعيين المستخدمين والمجموعات للدور.

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

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

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

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

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

  3. حدد نُهج.

  4. حدد "New policy".

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

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

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

هام

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

القيود

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

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

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

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

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

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