اشرح تشفير العناصر وميزة secure enclaves

مكتمل

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

مشفر دومًا

يسمح Always Encrypted بتشفير البيانات داخل تطبيق العميل، وحماية البيانات الحساسة من البرامج الضارة والمستخدمين ذوي الامتيازات العالية، مثل مسؤولي قواعد البيانات (DBAs) أو مسؤولي الخادم أو مسؤولي السحابة أو أولئك الذين يديرون البيانات ولكن يجب ألا يكون لديهم حق الوصول إليها. يحدث هذا التشفير تلقائيًا استنادًا إلى الإعدادات الموجودة في قاعدة بيانات Microsoft SQL Server، والتي تخبر التطبيق عن إعدادات التشفير في عمود قاعدة البيانات.

يوفر الجدول التالي بعض السيناريوهات لاستخدام Always Encrypted:

السيناريو تعريف
العميل والبيانات الداخلية بالنسبة للسيناريوهات التي تحتاج فيها إلى حماية قاعدة بياناتك الداخلية من المستخدمين ذوي الامتيازات العالية، على سبيل المثال، الموردين الخارجيين الذين يديرون SQL Server.
العميل المحلي باستخدام البيانات في Azure في هذا السيناريو، لضمان عدم وصول مسؤولي سحابة Microsoft إلى البيانات، يتم تخزين مفاتيح Always Encrypted في مخزن المفاتيح المستضاف محليًا، لـ SQL Database أو SQL Server الذي يعمل في جهاز ظاهري على Microsoft Azure.
العميل والبيانات في Azure في هذا السيناريو، تتم استضافة البيئة بالكامل على Azure. في حين أن Always Encrypted لا يعزل البيانات تمامًا عن مسؤولي السحابة، لا يزال العميل يستفيد من حقيقة أن البيانات مشفرة في قاعدة البيانات.

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

فيما يلي مثال على تمكين ميزة Always Encrypted. كما هو موضح أدناه، يمكنك أن ترى أن كلا عمودي NationalIDNumber وBirthDate في نص عادي.

Query from Unencrypted table for Always Encrypted.

ستوضح لك الصور القليلة التالية كيف يمكننا تشفير كلا هذين العمودين باستخدام Always Encrypted. يمكن إجراء التشفير باستخدام T-SQL، ولكن في هذا المثال، سترى المعالج من SQL Server Management Studio. يمكنك الوصول إلى المعالج عن طريق الضغط بزر الماوس الأيمن على اسم الجدول في مستكشف عناصر SQL Server كما هو موضح أدناه.

Launching the Encryption Wizard in SQL Server Management Studio.

عندما تحدد Encrypt Columns...، سيتم تشغيل المعالج.

Always Encrypted Wizard launch screen from SSMS.

في الصورة أدناه، سترى شاشة التشغيل «Always Encrypted». حدد Next لاختيار الأعمدة التي تريد تشفيرها.

Column selection screen for Always Encrypted Wizard.

في الصورة أعلاه، هناك نوعان مختلفان من التشفير محددان. يتم تشفير العمود NationalIDNumber بالتشفير المحدد، ويتم تشفير العمود BirthDate باستخدام التشفير العشوائي.

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

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

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

بعد تحديد الأعمدة التي تقوم بتشفيرها، يمكنك تحديد Next وسترى شاشة Master Key Configuration:

Master Key Configuration for Always Encrypted Wizard.

في هذه الشاشة، تقوم بإنشاء المفتاح master للعمود، والذي يتم استخدامه لتشفير مفاتيح تشفير العمود. يمكنك توفير المفتاح الخاص بك، إذا كنت تستخدم T-SQL لتشفير الأعمدة. يجب تخزين هذا المفتاح في مخزن مفاتيح مثل Windows Certificate Store أو Azure Key Vault أو وحدة أمان الجهاز. لا يخزن محرك قاعدة البيانات مطلقًا المفتاح master للعمود، ويحتوي فقط على بيانات التعريف الخاصة بمكان تخزينه. يحمي عدم تخزين المفتاح الرئيسي الوصول إلى البيانات من المستخدمين الذين لديهم حق الوصول الكامل إلى قاعدة البيانات.

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

في المثال أدناه، يتم تخزين المفتاح في Azure Key Vault. في الشاشة التالية، سيوفر لك المعالج خيارًا إما لإنهاء عملية التشفير الآن، أو لإنشاء برنامج PowerShell نصي. بمجرد إكمال العملية، ستظهر البيانات كمشفّرة لأي شخص يستفسر عن البيانات بدون المفتاح.

Employees Table with Encrypted Data from SSMS.

لفك تشفير البيانات من عمود Always Encrypted، يحتاج التطبيق الخاص بك إلى برنامج تشغيل الجهاز Always Encrypted للاتصال بقاعدة البيانات، متبوعًا بالإجراءات التالية:

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

بالإضافة إلى برنامج تشغيل الجهاز، تحتاج سلسلة الاتصال بالتطبيق إلى توفير الإعداد Column Encryption Setting=enabled. سيؤدي هذا الإعداد إلى إجراء بحث عن بيانات التعريف لكل عمود يستخدمه التطبيق.

إشعار

لتقليل عمليات البحث عن بيانات التعريف، يحتاج التطبيق إلى تحديث عن طريق تحديث SqlCommandColumnEncryptionSetting على كائنات SqlConnection داخل تطبيق .NET. يجب تعيين هذه الإعدادات لكل استعلام قاعدة بيانات يرسله التطبيق.

ميزة Secure enclaves

يدعم Always Encrypted ميزة تدعي secure enclaves، والتي تتيح استعلامًا أكثر قوة عن البيانات المشفرة.

جيب الأمن هو منطقة آمنة من الذاكرة داخل عملية SQL Server والتي تعمل كبيئة تنفيذ موثوقة لمعالجة البيانات المشفرة. يظهر هذا الجيب كمربع أسود لـ SQL Server، ولا يمكن عرض أي بيانات أو تعليمات برمجية، حتى مع وجود مصحح أخطاء.

توضح الصورة أدناه بنية هذه العملية:

Secure Enclaves Architecture for Always Encrypted.

يعالج Always Encrypted باستخدام ميزة secure enclaves أيضًا بعض قيود التشفير العشوائي، التي تتيح مطابقة الأنماط وعمليات المقارنة والفهرسة على الأعمدة باستخدام نوع التشفير هذا.