تكوين المفاتيح المدارة من قبل العميل لتشفير البيانات في Azure Cognitive Search

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

ترشدك هذه المقالة خلال خطوات إعداد تشفير المفتاح المدار من قبل العميل (CMK) أو تشفير "جلب المفتاح الخاص بك" (BYOK). فيما يلي بعض النقاط التي يجب وضعها في الاعتبار:

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

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

  • يحدث تشفير CMK عند إنشاء كائن. لا يمكنك تشفير الكائنات الموجودة بالفعل.

دعم تشفير CMK

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

يتم إجراء التشفير عبر المحتوى التالي:

  • كل المحتوى داخل الفهارس وقوائم المرادفات، بما في ذلك الأوصاف.

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

تشفير مزدوج

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

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

المنطقة تاريخ إنشاء الخدمة
منطقة غرب الولايات المتحدة الأمريكية 2 بعد 1 أغسطس 2020
شرق الولايات المتحدة بعد 1 أغسطس 2020
جنوب وسط الولايات المتحدة بعد 1 أغسطس 2020
ولاية فرجينيا الأمريكية بعد 1 أغسطس 2020
US Gov – أريزونا بعد 1 أغسطس 2020
جميع المناطق الأخرى المدعومة بعد 13 مايو 2021

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

يتم استخدام الأدوات والخدمات التالية في هذا السيناريو.

يجب أن يكون لديك عميل بحث يمكنه إنشاء الكائن المشفر. في هذه التعليمة البرمجية، ستشير إلى مفتاح المخزن الرئيسي ومعلومات تسجيل Active Directory. يمكن أن يكون هذا الرمز تطبيقا عاملا أو نموذجا أوليا للتعليمات البرمجية مثل نموذج التعليمات البرمجية C # DotNetHowToEncryptionUsingCMK.

تلميح

يمكنك استخدام Postmanأو Visual Studio Code أو Azure PowerShell لاستدعاء واجهات برمجة تطبيقات REST التي تنشئ فهارس وخرائط مترادفة تتضمن معلمة مفتاح تشفير. يمكنك أيضا استخدام Azure SDKs. لا يتم دعم دعم البوابة الإلكترونية لإضافة مفتاح إلى الفهارس أو خرائط المرادفات.

نصائح Key Vault

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

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

  • تمكين تسجيل الدخول Key Vault بحيث يمكنك مراقبة استخدام المفاتيح.

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

1 - تمكين الحماية من التطهير

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

لمنع فقدان البيانات الناجم عن عمليات حذف المفاتيح Key Vault العرضية، يجب تمكين الحماية من الحذف الناعم والتطهير في مخزن المفاتيح. يتم تمكين الحذف الناعم بشكل افتراضي ، لذلك لن تواجه مشكلات إلا إذا قمت بتعطيله عن قصد. لا يتم تمكين حماية التطهير بشكل افتراضي، ولكنها مطلوبة لتشفير المفاتيح التي يديرها العميل في البحث المعرفي.

يمكنك تعيين كلتا الخاصيتين باستخدام أوامر البوابة الإلكترونية أو PowerShell أو Azure CLI.

  1. سجل الدخول إلى مدخل Azure وافتح صفحة نظرة عامة على المخزن الرئيسي.

  2. في صفحة نظرة عامة ضمن الأساسيات، قمبتمكين الحمايةمن الحذف الناعم والتطهير.

2 - إنشاء مفتاح في Key Vault

تخطي إنشاء المفاتيح إذا كان لديك بالفعل مفتاح في Azure Key Vault تريد استخدامه، ولكن قم بتجميع معرف المفتاح. ستحتاج إلى هذه المعلومات عند إنشاء كائن مشفر.

  1. سجل الدخول إلى مدخل Azure وافتح صفحة نظرة عامة على المخزن الرئيسي.

  2. حدد المفاتيح على اليمين، ثم حدد + إنشاء/استيراد.

  3. في جزء إنشاء مفتاح، من قائمة الخيارات، اختر الطريقة التي تريد استخدامها لإنشاء مفتاح. يمكنك إنشاء مفتاح جديد أو Upload مفتاح موجود أو استخدام استعادة النسخ الاحتياطي لتحديد نسخة احتياطية من مفتاح.

  4. أدخل اسما لمفتاحك، وحدد اختياريا خصائص المفتاح الأخرى.

  5. حدد إنشاء لبدء التوزيع.

  6. حدد المفتاح، وحدد الإصدار الحالي، ثم قم بتدوين معرف المفتاح. يتكون من قيمة المفتاح Uriواسم المفتاحوإصدار المفتاح. ستحتاج إلى المعرف لتحديد فهرس مشفر في Azure Cognitive Search.

    Create a new key vault key

3 - إنشاء مبدأ أمني

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

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

تمكن الهوية المدارة خدمة البحث لديك من المصادقة على Azure Key Vault دون تخزين بيانات الاعتماد (ApplicationID أو ApplicationSecret) في التعليمات البرمجية. ترتبط دورة حياة هذا النوع من الهوية المدارة بدورة حياة خدمة البحث، والتي يمكن أن يكون لها هوية مدارة واحدة فقط. لمزيد من المعلومات حول كيفية عمل الهويات المدارة، راجع ما هي الهويات المدارة لموارد Azure.

  1. اجعل خدمة البحث خدمة موثوق بها.

    Turn on system assigned managed identity

تشمل الشروط التي ستمنعك من تبني هذا النهج ما يلي:

  • لا يمكنك منح أذونات الوصول إلى خدمة البحث مباشرة إلى مخزن المفاتيح (على سبيل المثال، إذا كانت خدمة البحث في مستأجر Active Directory مختلف عن Azure Key Vault).

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

4 - منح الأذونات

في هذه الخطوة، ستنشئ سياسة وصول في Key Vault. يمنح هذا النهج التطبيق الذي قمت بتسجيله في Active Directory الإذن لاستخدام المفتاح الذي يديره العميل.

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

  1. لا يزال في مدخل Azure، افتح صفحة نظرة عامة على المخزن الرئيسي.

  2. حدد نهج Access على اليمين، وحدد + إنشاء لبدء معالج إنشاء نهج وصول.

    Create an access policy.

  3. في صفحة الأذونات ، حدد الحصول علىأذونات المفاتيح والأذوناتالسرية وأذوناتالشهادة. حدد مفتاح إلغاء الالتفاف ومفتاح الالتفاف ل ** عمليات التشفير على المفتاح .

    Select permissions in the Permissions page.

  4. حدد "Next".

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

  6. حدد التاليوإنشاء.

هام

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

5 - تشفير المحتوى

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

  1. اتصل بإنشاء واجهات برمجة التطبيقات لتحديد خاصية encryptionKey :

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

    يوضح المثال الأول "مفتاح تشفير" لخدمة بحث تتصل باستخدام هوية مدارة:

    {
      "encryptionKey": {
        "keyVaultUri": "https://demokeyvault.vault.azure.net",
        "keyVaultKeyName": "myEncryptionKey",
        "keyVaultKeyVersion": "eaab6a663d59439ebb95ce2fe7d5f660"
      }
    }
    

    يتضمن المثال الثاني "accessCredentials"، وهو ضروري إذا قمت بتسجيل تطبيق في Azure AD:

    {
      "encryptionKey": {
        "keyVaultUri": "https://demokeyvault.vault.azure.net",
        "keyVaultKeyName": "myEncryptionKey",
        "keyVaultKeyVersion": "eaab6a663d59439ebb95ce2fe7d5f660",
        "accessCredentials": {
          "applicationId": "00000000-0000-0000-0000-000000000000",
          "applicationSecret": "myApplicationSecret"
        }
      }
    }
    

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

ملاحظة

لا يعتبر أي من تفاصيل المخزن الرئيسية هذه سريا ويمكن استرداده بسهولة من خلال الاستعراض إلى صفحة Azure Key Vault ذات الصلة في مدخل Azure.

أمثلة REST

يعرض هذا القسم JSON لعدة كائنات بحيث يمكنك معرفة مكان تحديد موقع "encryptionKey" في تعريف كائن.

تشفير الفهرس

يمكن العثور على تفاصيل إنشاء فهرس جديد عبر واجهة برمجة تطبيقات REST في إنشاء فهرس (REST API) ، حيث الفرق الوحيد هنا هو تحديد تفاصيل مفتاح التشفير كجزء من تعريف الفهرس:

{
 "name": "hotels",
 "fields": [
  {"name": "HotelId", "type": "Edm.String", "key": true, "filterable": true},
  {"name": "HotelName", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": true, "facetable": false},
  {"name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "en.lucene"},
  {"name": "Description_fr", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "fr.lucene"},
  {"name": "Category", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true},
  {"name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "sortable": false, "facetable": true},
  {"name": "ParkingIncluded", "type": "Edm.Boolean", "filterable": true, "sortable": true, "facetable": true},
  {"name": "LastRenovationDate", "type": "Edm.DateTimeOffset", "filterable": true, "sortable": true, "facetable": true},
  {"name": "Rating", "type": "Edm.Double", "filterable": true, "sortable": true, "facetable": true},
  {"name": "Location", "type": "Edm.GeographyPoint", "filterable": true, "sortable": true}
 ],
  "encryptionKey": {
    "keyVaultUri": "https://demokeyvault.vault.azure.net",
    "keyVaultKeyName": "myEncryptionKey",
    "keyVaultKeyVersion": "eaab6a663d59439ebb95ce2fe7d5f660",
    "accessCredentials": {
      "applicationId": "00000000-0000-0000-0000-000000000000",
      "applicationSecret": "myApplicationSecret"
    }
  }
}

يمكنك الآن إرسال طلب إنشاء الفهرس، ثم البدء في استخدام الفهرس بشكل طبيعي.

تشفير خريطة المرادف

قم بإنشاء خريطة مرادف مشفرة باستخدام واجهة برمجة تطبيقات إنشاء مرادف Azure Cognitive Search REST. استخدم الخاصية "encryptionKey" لتحديد مفتاح التشفير الذي تريد استخدامه.

{
  "name" : "synonymmap1",
  "format" : "solr",
  "synonyms" : "United States, United States of America, USA\n
  Washington, Wash. => WA",
  "encryptionKey": {
    "keyVaultUri": "https://demokeyvault.vault.azure.net",
    "keyVaultKeyName": "myEncryptionKey",
    "keyVaultKeyVersion": "eaab6a663d59439ebb95ce2fe7d5f660",
    "accessCredentials": {
      "applicationId": "00000000-0000-0000-0000-000000000000",
      "applicationSecret": "myApplicationSecret"
    }
  }
}

يمكنك الآن إرسال طلب إنشاء خريطة مرادف ، ثم البدء في استخدامه بشكل طبيعي.

تشفير مصدر البيانات

إنشاء مصدر بيانات مشفر باستخدام إنشاء مصدر بيانات (REST API). استخدم الخاصية "encryptionKey" لتحديد مفتاح التشفير الذي تريد استخدامه.

{
  "name" : "datasource1",
  "type" : "azureblob",
  "credentials" :
  { "connectionString" : "DefaultEndpointsProtocol=https;AccountName=datasource;AccountKey=accountkey;EndpointSuffix=core.windows.net"
  },
  "container" : { "name" : "containername" },
  "encryptionKey": {
    "keyVaultUri": "https://demokeyvault.vault.azure.net",
    "keyVaultKeyName": "myEncryptionKey",
    "keyVaultKeyVersion": "eaab6a663d59439ebb95ce2fe7d5f660",
    "accessCredentials": {
      "applicationId": "00000000-0000-0000-0000-000000000000",
      "applicationSecret": "myApplicationSecret"
    }
  }
}

يمكنك الآن إرسال طلب إنشاء مصدر البيانات، ثم البدء في استخدامه بشكل طبيعي.

تشفير مجموعة المهارات

قم بإنشاء مجموعة مهارات مشفرة باستخدام واجهة برمجة تطبيقات Create Skillset REST. استخدم الخاصية "encryptionKey" لتحديد مفتاح التشفير الذي تريد استخدامه.

{
    "name": "skillset1",
    "skills":  [ omitted for brevity ],
    "cognitiveServices": { omitted for brevity },
      "knowledgeStore":  { omitted for brevity  },
    "encryptionKey": (optional) { 
        "keyVaultKeyName": "myEncryptionKey",
        "keyVaultKeyVersion": "eaab6a663d59439ebb95ce2fe7d5f660",
        "keyVaultUri": "https://demokeyvault.vault.azure.net",
        "accessCredentials": {
            "applicationId": "00000000-0000-0000-0000-000000000000",
            "applicationSecret": "myApplicationSecret"}
    }
}

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

تشفير المفهرس

قم بإنشاء مفهرس مشفر باستخدام واجهة برمجة تطبيقات إنشاء مفهرس REST. استخدم الخاصية "encryptionKey" لتحديد مفتاح التشفير الذي تريد استخدامه.

{
  "name": "indexer1",
  "dataSourceName": "datasource1",
  "skillsetName": "skillset1",
  "parameters": {
      "configuration": {
          "imageAction": "generateNormalizedImages"
      }
  },
  "encryptionKey": {
    "keyVaultUri": "https://demokeyvault.vault.azure.net",
    "keyVaultKeyName": "myEncryptionKey",
    "keyVaultKeyVersion": "eaab6a663d59439ebb95ce2fe7d5f660",
    "accessCredentials": {
      "applicationId": "00000000-0000-0000-0000-000000000000",
      "applicationSecret": "myApplicationSecret"
    }
  }
}

يمكنك الآن إرسال طلب إنشاء المفهرس، ثم البدء في استخدامه بشكل طبيعي.

هام

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

العمل مع المحتوى المشفر

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

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

  1. حدد المفتاح المستخدم بواسطة فهرس أو خريطة مرادف.
  2. أنشئ مفتاحا جديدا في مخزن المفاتيح، ولكن اترك المفتاح الأصلي متاحا.
  3. قم بتحديث خصائص encryptionKey على خريطة فهرس أو مرادف لاستخدام القيم الجديدة. يمكن تحديث الكائنات التي تم إنشاؤها في الأصل باستخدام هذه الخاصية فقط لاستخدام قيمة مختلفة.
  4. قم بتعطيل المفتاح السابق أو حذفه في مخزن المفاتيح. راقب الوصول إلى المفتاح للتحقق من استخدام المفتاح الجديد.

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

الخطوات التالية

إذا لم تكن معتادا على بنية أمان Azure، فراجع وثائق أمان Azure، وعلى وجه الخصوص، هذه المقالة: