إخفاء البيانات الديناميكي

ينطبق على:قاعدة بيانات Azure SQL مثيل Azure SQL المُدار Azure Synapse Analytics

تدعم قاعدة بيانات Azure SQL ومثيل Azure SQL المدار وAzure Synapse Analytics إخفاء البيانات الديناميكية. يحد إخفاء البيانات الديناميكية من تعرض البيانات الحساسة بإخفائها للمستخدمين غير المتميزين.

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

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

أساسيات إخفاء البيانات الديناميكية

يمكنك إعداد سياسة إخفاء البيانات الديناميكية في مدخل Azure عن طريق تحديد وحدة Dynamic Data Masking ضمن Security في جزء تكوين قاعدة بيانات SQL. لا يمكن تعيين هذه الميزة باستخدام المدخل للمثيل المدار SQL. لمزيد من المعلومات، راجع إخفاء البيانات الديناميكية.

سياسة إخفاء البيانات الديناميكية

  • مستخدمو SQL المستبعدين من الإخفاء - مجموعة من مستخدمي SQL أو هويات Azure AD التي تحصل على بيانات غير مقنعة/مخفية في نتائج الاستعلام SQL. دائمًا ما يتم استبعاد المستخدمين الذين لديهم امتيازات المسؤول من الإخفاء، ومشاهدة البيانات الأصلية دون أي إخفاء.
  • قواعد الإخفاء - مجموعة من القواعد التي تحدد الحقول المعينة التي ستنفذ عليها عمليات الإخفاء ووظيفة الإخفاء المستخدمة. يمكن تعريف الحقول المُعينة باستخدام اسم مخطط قاعدة بيانات واسم الجدول واسم العمود.
  • دوال الإخفاء - مجموعة من الطرق التي تتحكم في تعرض البيانات لسيناريوهات مختلفة.
دالة الإخفاء منطق الإخفاء
افتراضي إخفاء كامل وفقا لأنواع البيانات في الحقول المعينة

• استخدم XXXX أو Xs الأقل إذا كان حجم الحقل أقل من 4 أحرف لأنواع بيانات السلسلة (nchar، ntext، nvarchar).
• استخدم قيمة صفرية لأنواع البيانات الرقمية (bigint, bit, decimal, int, money, numeric, smallint, smallmoney, tinyint, float, real).
• استخدام 01-01-1900 لأنواع البيانات التاريخ / الوقت (date, datetime2, datetime, datetimeoffset, smalldatetime, time).
• بالنسبة لمتغير SQL، تُستخدم القيمة الافتراضية للنوع الحالي.
• بالنسبة إلى XML، يتم استخدام المستند <masked/>.
• استخدام قيمة فارغة لأنواع البيانات الخاصة (timestamp table, hierarchyid, GUID, binary, image, varbinary spatial types).
بطاقة الائتمان أسلوب إخفاء يعرض الأرقام الأربعة الأخيرة في الحقول المعينة، ويضيف سلسلة ثابتة كبادئة في شكل بطاقة ائتمان.

XXXX-XXXX-XXXX-1234
بريد إلكتروني أسلوب إخفاء يعرض الحرف الأول ويستبدل المجال بـ XXX.com باستخدام بادئة سلسلة ثابتة في شكل عنوان بريد إلكتروني.

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

Screenshot that shows the masking method for generating a random number.
نص مخصص أسلوب إخفاء يعرض الأحرف الأولى والأخيرة ويضيف سلسلة حشو مخصصة في الوسط. إذا كانت السلسلة الأصلية أقصر من البادئة المكشوفة واللاحقة، تُستخدم سلسلة الحشو فقط.
prefix[padding]suffix

Navigation pane

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

إدارة إخفاء البيانات الديناميكية باستخدام T-SQL

جهز إخفاء البيانات الديناميكية لقاعدة البيانات باستخدام Cmdlets PowerShell

نُهج إخفاء البيانات

قواعد إخفاء البيانات

جهز إخفاء البيانات الديناميكية لقاعدة البيانات باستخدام واجهة برمجة تطبيقات REST

يمكنك استخدام واجهة برمجة تطبيقات REST لإدارة نهج وقواعد إخفاء البيانات برمجيا. تدعم واجهة برمجة تطبيقات REST المنشورة العمليات التالية:

نُهج إخفاء البيانات

قواعد إخفاء البيانات

الأذونات

هذه هي الأدوار المضمنة لتكوين إخفاء البيانات الديناميكية:

هذه هي الإجراءات المطلوبة لاستخدام إخفاء البيانات الديناميكية:

قراءة / كتابة:

  • Microsoft.Sql/servers/databases/dataMaskingPolicies/* Read:
  • Microsoft.Sql/servers/databases/dataMaskingPolicies/read Write:
  • Microsoft.Sql/servers/databases/dataMaskingPolicies/write

لمعرفة المزيد حول الأذونات عند استخدام إخفاء البيانات الديناميكية مع الأمر T-SQL، راجع أذونات

مثال على الإذن متعدد المستويات

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

  1. إنشاء مخطط يحتوي على جداول المستخدم

    CREATE SCHEMA Data; 
    GO 
    
  2. قم بإنشاء جدول بأعمدة مقنعة

    CREATE TABLE Data.Membership (
      MemberID int IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
      FirstName varchar(100) MASKED WITH (FUNCTION = 'partial(1, "xxxxx", 1)') NULL,
      LastName varchar(100) NOT NULL,
      Phone varchar(12) MASKED WITH (FUNCTION = 'default()') NULL,
      Email varchar(100) MASKED WITH (FUNCTION = 'email()') NOT NULL,
      DiscountCode smallint MASKED WITH (FUNCTION = 'random(1, 100)') NULL,
      BirthDay datetime MASKED WITH (FUNCTION = 'default()') NULL
    ); 
    
  3. إدخال بيانات عينة

    INSERT INTO Data.Membership (FirstName, LastName, Phone, Email, DiscountCode, BirthDay) 
    VALUES    
    ('Roberto', 'Tamburello', '555.123.4567', 'RTamburello@contoso.com', 10, '1985-01-25 03:25:05'),   
    ('Janice', 'Galvin', '555.123.4568', 'JGalvin@contoso.com.co', 5,'1990-05-14 11:30:00'),   
    ('Shakti', 'Menon', '555.123.4570', 'SMenon@contoso.net', 50,'2004-02-29 14:20:10'),   
    ('Zheng', 'Mu', '555.123.4569', 'ZMu@contoso.net', 40,'1990-03-01 06:00:00'); 
    
  4. إنشاء مخطط لاحتواء جداول الخدمة

    CREATE SCHEMA Service; 
    GO 
    
  5. إنشاء جدول خدمة بأعمدة مقنعة

    CREATE TABLE Service.Feedback ( 
        MemberID int IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED, 
        Feedback varchar(100) MASKED WITH (FUNCTION = 'default()') NULL, 
        Rating int MASKED WITH (FUNCTION='default()'), 
        Received_On datetime 
        );
    
  6. إدخال بيانات عينة

    INSERT INTO Service.Feedback(Feedback,Rating,Received_On)
    VALUES  
    ('Good',4,'2022-01-25 11:25:05'),   
    ('Excellent', 5, '2021-12-22 08:10:07'),   
    ('Average', 3, '2021-09-15 09:00:00'); 
    
  7. إنشاء مستخدمين مختلفين في قاعدة البيانات

    CREATE USER ServiceAttendant WITHOUT LOGIN;  
    GO
    
    CREATE USER ServiceLead WITHOUT LOGIN;  
    GO
    
    CREATE USER ServiceManager WITHOUT LOGIN;  
    GO  
    
    CREATE USER ServiceHead WITHOUT LOGIN;  
    GO
    
  8. منح أذونات القراءة للمستخدمين في قاعدة البيانات

    ALTER ROLE db_datareader ADD MEMBER ServiceAttendant; 
    
    ALTER ROLE db_datareader ADD MEMBER ServiceLead; 
    
    ALTER ROLE db_datareader ADD MEMBER ServiceManager; 
    
    ALTER ROLE db_datareader ADD MEMBER ServiceHead; 
    
  9. منح أذونات UNMASK مختلفة للمستخدمين

    --Grant column level UNMASK permission to ServiceAttendant  
    GRANT UNMASK ON Data.Membership(FirstName) TO ServiceAttendant;  
    
    -- Grant table level UNMASK permission to ServiceLead  
    GRANT UNMASK ON Data.Membership TO ServiceLead;  
    
    -- Grant schema level UNMASK permission to ServiceManager  
    GRANT UNMASK ON SCHEMA::Data TO ServiceManager;  
    GRANT UNMASK ON SCHEMA::Service TO ServiceManager;  
    
    --Grant database level UNMASK permission to ServiceHead;  
    GRANT UNMASK TO ServiceHead;
    
  10. الاستعلام عن البيانات ضمن سياق المستخدم ServiceAttendant

    EXECUTE AS USER='ServiceAttendant';  
    SELECT MemberID,FirstName,LastName,Phone,Email,BirthDay FROM Data.   Membership;  
    SELECT MemberID,Feedback,Rating FROM Service.Feedback;  
    REVERT; 
    
  11. الاستعلام عن البيانات ضمن سياق المستخدم ServiceLead

    EXECUTE AS USER='ServiceLead';  
    SELECT MemberID,FirstName,LastName,Phone,Email,BirthDay FROM Data.   Membership;  
    SELECT MemberID,Feedback,Rating FROM Service.Feedback;  
    REVERT; 
    
  12. الاستعلام عن البيانات ضمن سياق المستخدم ServiceManager

    EXECUTE AS USER='ServiceManager';  
    SELECT MemberID,FirstName,LastName,Phone,Email FROM Data.Membership;  
    SELECT MemberID,Feedback,Rating FROM Service.Feedback;  
    REVERT; 
    
  13. الاستعلام عن البيانات ضمن سياق المستخدم ServiceHead

    EXECUTE AS USER='ServiceHead';  
    SELECT MemberID,FirstName,LastName,Phone,Email,BirthDay FROM Data.Membership;  
    SELECT MemberID,Feedback,Rating FROM Service.Feedback;  
    REVERT;  
    
  14. لإلغاء أذونات UNMASK، استخدم عبارات T-SQL التالية:

    REVOKE UNMASK ON Data.Membership(FirstName) FROM ServiceAttendant; 
    
    REVOKE UNMASK ON Data.Membership FROM ServiceLead; 
    
    REVOKE UNMASK ON SCHEMA::Data FROM ServiceManager; 
    
    REVOKE UNMASK ON SCHEMA::Service FROM ServiceManager; 
    
    REVOKE UNMASK FROM ServiceHead; 
    

راجع أيضًا