Use Azure role-based access controls (Azure RBAC) in Azure Cognitive Search

يوفر Azure نظام تخويل عام للتحكم في الوصول (RBAC) يستند إلى الأدوار لجميع الخدمات التي تعمل على النظام الأساسي. في البحث المعرفي، يمكنك:

  • استخدم الأدوار المتاحة بشكل عام لإدارة الخدمة.

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

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

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

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

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

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

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

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

ملاحظة

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

إمكانات المعاينة والقيود

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

  • لا توجد قيود إقليمية أو طبقية أو تسعير لاستخدام معاينة Azure RBAC ، ولكن يجب أن تكون خدمة البحث الخاصة بك في سحابة Azure العامة. لا تتوفر المعاينة في Azure Government أو Azure Germany أو Azure China 21Vianet.

  • إذا قمت بترحيل اشتراكك في Azure إلى مستأجر جديد، فستحتاج إلى إعادة تمكين معاينة RBAC.

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

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

الاشتراك في المعاينة

ينطبق على: مساهم بيانات فهرس البحث, قارئ بيانات فهرس البحث, مساهم في خدمة البحث

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

  1. افتح مدخل Azure وابحث عن خدمة البحث.

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

  3. في الشعار الأزرق الذي يشير إلى المعاينة، حدد تسجيل لإضافة الميزة إلى اشتراكك.

    screenshot of how to sign up for the rbac preview in the portal

يمكنك أيضا التسجيل للمعاينة باستخدام التحكم في التعرض لميزات Azure (AFEC) والبحث عن التحكم في الوصول المستند إلى الدور لخدمة البحث (معاينة). لمزيد من المعلومات حول إضافة ميزات المعاينة، راجع إعداد ميزات المعاينة في اشتراك Azure.

ملاحظة

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

تمكين معاينة RBAC لعمليات مستوى البيانات

ينطبق على: مساهم بيانات فهرس البحث, قارئ بيانات فهرس البحث, مساهم في خدمة البحث

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

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

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

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

    الخيار الحالة الوصف
    مفتاح API متوفر بشكل عام (افتراضي) يتطلب مشرفا أو مفاتيح واجهة برمجة تطبيقات للاستعلام في رأس الطلب للتفويض. لا يتم استخدام أي أدوار.
    التحكم في الوصول استناداً إلى الدور معاينة يتطلب العضوية في تعيين دور لإكمال المهمة، الموضحة في الخطوة التالية. كما يتطلب رأس تفويض. يؤدي تحديد هذا الخيار إلى تقييدك بالعملاء الذين يدعمون واجهة برمجة تطبيقات REST للمعاينة 2021-04-30.
    ⁧⁩كلاهما⁧⁩ معاينة الطلبات صالحة باستخدام مفتاح API أو رمز مميز للتفويض.

إذا لم تتمكن من حفظ اختيارك ، أو إذا حصلت على "فشل تحديث التحكم في الوصول إلى واجهة برمجة التطبيقات لخدمة <name>البحث . DisableLocalAuth هو معاينة ولم يتم تمكينه لهذا الاشتراك"، لم يتم بدء تسجيل اشتراكك أو لم تتم معالجته.

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

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

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

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

  1. قم بفتح ⁧⁩مدخل Azure⁧⁩.

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

  3. حدد التحكم في الوصول (IAM) في جزء التنقل الأيمن.

  4. حدد + Add>Add role assignment.

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

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

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

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

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

  1. قم بفتح ⁧⁩مدخل Azure⁧⁩.

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

  3. في صفحة نظرة عامة، حدد علامة التبويب الفهارس :

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

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

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

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

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

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

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

  2. في جزء التنقل الأيمن، حدد التحكم في الوصول (IAM).

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

  4. انقر بزر الماوس الأيمن فوق "البحث في قارئ بيانات الفهرس " (أو دور آخر) وحدد استنساخ لفتح معالج إنشاء دور مخصص .

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

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

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

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

    • ضمن Microsoft.Search/operations، حدد قراءة: سرد كافة العمليات المتوفرة.
    • ضمن Microsoft.Search/searchServices/indexes، حدد قراءة : قراءة الفهرس.
  9. في الصفحة نفسها، قم بالتبديل إلى إجراءات البيانات وضمن Microsoft.Search/searchServices/indexes/documents، حدد قراءة : قراءة المستندات.

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

    {
     "properties": {
         "roleName": "search index data explorer",
         "description": "",
         "assignableScopes": [
             "/subscriptions/a5b1ca8b-bab3-4c26-aebe-4cf7ec4791a0/resourceGroups/heidist-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. حدد مراجعة + إنشاء لإنشاء الدور. يمكنك الآن تعيين مستخدمين ومجموعات لهذا الدور.

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

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

لتعطيل المصادقة المستندة إلى المفاتيح، استخدم إصدار واجهة برمجة تطبيقات Management REST 2021-04-01-Preview وأرسل طلبين متتاليين لخدمة التحديث.

أذونات المالك أو المساهم مطلوبة لتعطيل الميزات. استخدم ساعي البريد أو أداة اختبار ويب أخرى لإكمال الخطوات التالية (انظر النصيحة أدناه):

  1. في الطلب الأول ، قم بتعيين "AuthOptions" إلى "aadOrApiKey" لتمكين مصادقة Azure AD. لاحظ أن الخيار يشير إلى توفر أي من النهجين: Azure AD أو مفاتيح واجهة برمجة التطبيقات الأصلية.

    PUT https://management.azure.com/subscriptions/{{subscriptionId}}/resourcegroups/{{resource-group}}/providers/Microsoft.Search/searchServices/{{search-service-name}}?api-version=2021-04-01-Preview
    {
      "location": "{{region}}",
      "sku": {
        "name": "standard"
      },
      "properties": {
        "authOptions": {
          "aadOrApiKey": {
            "aadAuthFailureMode": "http401WithBearerChallenge"
          }
        }
      }
    }
    
  2. في الطلب الثاني ، قم بتعيين " disableLocalAuth" إلى true. تقوم هذه الخطوة بإيقاف تشغيل جزء مفتاح واجهة برمجة التطبيقات من خيار "aadOrApiKey" ، مما يتيح لك Azure AD المصادقة فقط.

    PUT https://management.azure.com/subscriptions/{{subscriptionId}}/resourcegroups/{{resource-group}}/providers/Microsoft.Search/searchServices/{{search-service-name}}?api-version=2021-04-01-Preview
    {
      "location": "{{region}}",
      "sku": {
        "name": "standard"
      },
      "properties": {
        "disableLocalAuth": true
      }
    }
    

لا يمكنك الجمع بين الخطوتين الأولى والثانية. في الخطوة الأولى، يجب أن يكون "disableLocalAuth" خاطئا لتلبية متطلبات إعداد "AuthOptions"، في حين أن الخطوة الثانية تغير هذه القيمة إلى true.

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

تلميح

تتم مصادقة إدارة استدعاءات واجهة برمجة تطبيقات REST من خلال Azure Active Directory. للحصول على إرشادات حول إعداد مبدأ أمان وطلب، راجع منشور المدونة هذا Azure REST APIs مع Postman (2021). تم اختبار المثال السابق باستخدام التعليمات ومجموعة ساعي البريد المقدمة في منشور المدونة.

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

الوصول المشروط هو أداة في Azure Active Directory تستخدم لفرض النهج التنظيمية. باستخدام سياسات الوصول المشروط، يمكنك تطبيق عناصر التحكم في الوصول الصحيحة عند الحاجة للحفاظ على أمان مؤسستك. عند الوصول إلى خدمة البحث Azure Cognitive باستخدام التحكم في الوصول المستند إلى الدور، يمكن ل "الوصول المشروط" فرض السياسات التنظيمية.

لتمكين نهج الوصول المشروط للبحث المعرفي في Azure، اتبع الخطوات التالية:

  1. ⁩سجِّل الدخول ⁧⁩إلى مدخل Microsoft Azure.

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

  3. حدد نُهج.

  4. حدد ⁧⁩+ نهج جديد⁧⁩.

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

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

  7. احفظ السياسة.

هام

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