تنفيذ Dynamic Data Masking

مكتمل

يعمل "Dynamic Data Masking" عن طريق تشويش البيانات للحد من أن تُكتشف. يمكن للمستخدمين الذين لا يحتاجون إلى رؤية البيانات الحساسة عرض العمود الذي يحتوي على البيانات، ولكن ليس البيانات الفعلية نفسها. لاحظ أن "Dynamic Data Masking" يعمل على مستوى التقديم، وأن البيانات المكشوفة سيراها دائمًا المستخدمون ذوي الامتيازات العالية.

يتميز "Dynamic Data Masking" بأنه لا يتطلب العديد من التعديلات على التطبيق أو قاعدة البيانات. يمكنك تكوينه من خلال مدخل Microsoft Azure، أو استخدام T-SQL كما هو موضح أدناه:

Screenshot of the dynamic data masking T-SQL commands.

في المثال أعلاه، يتم إخفاء عمودي "PhoneNumber" و"EmailAddress" من المستخدم "DDMDemo" الذي لديه الإذن SELECT فقط على الجدول. يُسمح للمستخدم برؤية آخر أربعة أرقام من رقم الهاتف لأنه مخفي باستخدام الدالة partial التي تستبدل جميع الأرقام باستثناء آخر أربعة أرقام في العمود. يعتبر هذا الإخفاء وظيفة مخصصة. بالإضافة إلى T-SQL، إذا كنت تستخدم قاعدة بيانات Azure SQL، فإنه يمكنك إنشاء قواعد إخفاء ديناميكي في مدخل Microsoft Azure:

Screenshot of how to add masking rule in Azure portal.

يمكنك الوصول إلى الشاشة لإضافة قاعدة إخفاء بالانتقال إلى قاعدة البيانات في مدخل Microsoft Azure وتحديد "Dynamic Data Masking" في قسم "Security" للجزء الرئيسي لقاعدة بياناتك.

يدعم "Dynamic Data Masking" أنماط الإخفاء التالية التي يمكن استخدامها:

دالة الإخفاء تعريف مثال T-SQL
الإعداد الافتراضي إخفاء البيانات الموجودة في العمود دون الكشف عن أي جزء من القيم للمستخدم. قد يرى المستخدم XXXX لقيم السلسلة و0 للأرقام و01.01.1900 لقيم التاريخ. ALTER TABLE [Customer] ALTER COLUMN Address ADD MASKED WITH (FUNCTION = 'default()')
بطاقة الائتمان إخفاء جميع الأحرف باستثناء الأحرف الأربعة الأخيرة، ما يسمح للمستخدمين بمشاهدة الأرقام الأربعة الأخيرة. يمكن أن يكون هذا الإخفاء مفيدًا لوكلاء خدمة العملاء الذين يحتاجون إلى عرض الأرقام الأربعة الأخيرة من رقم بطاقة الائتمان ولكنهم لا يحتاجون إلى رؤية الرقم بالكامل. وتظهر البيانات في بالتنسيق المعتاد لرقم بطاقة الائتمان XXXX-XXXX-XXXX-1234. ALTER TABLE [Customer] ALTER COLUMN Address ADD MASKED WITH (FUNCTION = 'partial(0,"XXXX-XXXX-XXXX-",4)')
بريد إلكتروني لا يظهر سوى الحرف الأول ولاحقة النطاق الزائدة، على سبيل المثال، “aXXX@XXXXXXX.com” ALTER TABLE [Customer] ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()')
الرقم‬ يجب استخدام تنسيق الإخفاء هذا على الأعمدة الرقمية. إنه يعرض رقمًا عشوائيًا كقيمة مخفية بدلاً من القيمة الفعلية. يُعرض رقم مختلف مع كل استعلام. ALTER TABLE [Customer] ALTER COLUMN [Month] ADD MASKED WITH (FUNCTION = 'random(1, 12)')
Custom string يسمح هذا الخيار بإخفاء النص بأي قيمة، وعرض عدد مخصص من الأحرف في أي من طرفي القيمة المخفية. إذا كان طول القيمة التي يتم إخفاؤها مساويًا لعدد الأحرف التي يحددها الإخفاء أو أقل منه، فسيتم عرض الأحرف المخفية فقط. ALTER TABLE [Customer] ALTER COLUMN [PhoneNumber] ADD MASKED WITH (FUNCTION = 'partial(1,"XXXXXXX",0)')

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

إشعار

من الممكن تحديد البيانات التي تُخفى باستخدام الاستدلال استنادًا إلى النتائج. إذا كنت تستخدم إخفاء البيانات، يجب عليك أيضًا الحد من قدرة المستخدم على تشغيل الاستعلامات المخصصة.

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

حالة الاستخدام

إخفاء البيانات هو ميزة بسيطة غير معقدة ومثالية لعدة سيناريوهات، بما في ذلك:

  • إخفاء البيانات من مستخدمي التطبيق الذين ليس لديهم وصول مباشر إلى قاعدة البيانات.

  • تقييد المعلومات الخاصة لمجموعة من المستخدمين.

  • توفير بيانات مخفية للموردين الخارجيين، حيث تحتاج إلى حماية المعلومات الحساسة مع الحفاظ على العلاقات بين العناصر في البيانات.

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

استيراد البيانات وتصديرها

نسخ البيانات من عمود مخفي إلى جدول آخر باستخدام SELECT INTO أو INSERT INTO يؤدي إلى بيانات مخفية في الجدول الهدف.

عندما يقوم مستخدم ليس لديه امتياز UNMASK بتشغيل SQL Server Import and Export، سيحتوي ملف البيانات المُصدر على بيانات مخفية، وستحتوي قاعدة البيانات المستوردة على بيانات مخفية بشكل غير نشط.

لمعرفة المزيد حول كيفية عمل "Dynamic Data Masking"، راجع إخفاء البيانات الديناميكية.