إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
يدعم Azure Synapse Analytics إخفاء البيانات الديناميكي (DDM) في مجموعات SQL مخصصة. يحد التمويه الديناميكي للبيانات من تعرض البيانات الحساسة عن طريق إخفائها للمستخدمين غير المميزين.
يساعد التمويه الديناميكي في منع الوصول غير المصرح به إلى البيانات الحساسة من خلال تمكين العملاء من تحديد كمية البيانات الحساسة التي يجب الكشف عنها مع تأثير ضئيل على طبقة التطبيق. إنها ميزة أمان قائمة على السياسات تخفي البيانات الحساسة في مجموعة نتائج الاستعلام عبر حقول قاعدة بيانات معينة، بينما لا تتغير البيانات في قاعدة البيانات.
على سبيل المثال، قد يتعرف ممثل الخدمة في مركز الاتصال على المتصل من خلال تأكيد عدة أحرف من عنوان بريده الإلكتروني، لكن لا ينبغي الكشف عن عنوان البريد الإلكتروني الكامل لممثل الخدمة. يمكن تعريف قاعدة إخفاء تخفي عنوان البريد الإلكتروني بالكامل في مجموعة نتائج أي استفسار. كمثال آخر، يمكن تعريف قناع بيانات مناسب لحماية البيانات الشخصية، بحيث يمكن للمطور الاستعلام عن بيئات الإنتاج لأغراض استكشاف الأخطاء دون انتهاك لوائح الامتثال.
ملحوظة
يدعم التمويه الديناميكي للبيانات في مجموعات SQL المخصصة ل Azure Synapse، لكنه غير مدعوم في مجموعات Apache Spark أو مجموعات SQL بدون خادم.
أساسيات التمويه الديناميكي للبيانات
تقوم بإعداد سياسة إخفاء البيانات الديناميكي في بوابة Azure عن طريق اختيار لوحة إخفاء البيانات الديناميكي تحت الأمان في لوحة الإعدادات. يمكنك أيضا استخدام Transact-SQL (T-SQL)، كما في مثال الإذن الحبيبي في هذا المقال. لمزيد من المعلومات، راجع التمويه الديناميكي للبيانات.
سياسة إخفاء البيانات الديناميكي
مستخدمو SQL المستبعدون من التمويه: مجموعة من مستخدمي SQL، يمكن أن يشملون هويات من Microsoft Entra ID، يحصلون على بيانات مكشوفة في نتائج استعلام SQL. يمكن للمستخدمين الذين لديهم صلاحيات إدارية مثل مسؤول الخادم، ومسؤول Microsoft Entra، ودور db_owner عرض البيانات الأصلية بدون أي قناع. (ملاحظة: ينطبق أيضا على دور مسؤول النظام في SQL Server)
قواعد الإخفاء: مجموعة من القواعد التي تحدد الحقول المخصصة التي سيتم إخفاؤها ودالة الإخفاء المستخدمة. يمكن تعريف الحقول المُعينة باستخدام اسم مخطط قاعدة بيانات واسم الجدول واسم العمود.
وظائف الإخفاء: مجموعة من الطرق التي تتحكم في كشف البيانات لسيناريوهات مختلفة.
دالة الإخفاء منطق التمويه الإعداد الافتراضي التمويه الكامل وفقا لأنواع بيانات الحقول المخصصة
استخدمXXXX(أو أقل) إذا كان حجم الحقل أقل من 4 أحرف لأنواع بيانات السلاسل (nchar، nvarchar).
استخدم قيمة صفرية لأنواع البيانات الرقمية (bigint، bit، عشري، int، نقود، رقمي، صغير،صغير،تعويم، حقيقي).
*استخدم1900-01-01لأنواع بيانات التاريخ/الوقت (تاريخ، تاريخ-وقت2، تاريخ الوقت، تعويض التاريخ، وقت التاريخ، الوقت، الوقت).بطاقة ائتمان طريقة القناع، التي تكشف آخر أربعة أرقام من الحقول المخصصة وتضيف سلسلة ثابتة كبادئة على شكل بطاقة ائتمان. XXXX-XXXX-XXXX-1234البريد الالكتروني طريقة الإخفاء، التي تعرض الحرف الأول وتستبدل النطاق ب XXX.com باستخدام بادئة نصية ثابتة على شكل عنوان بريد إلكتروني. aXX@XXXX.comرقم عشوائي طريقة التمويه، التي تولد رقما عشوائيا وفقا للحدود المختارة وأنواع البيانات الفعلية. إذا كانت الحدود المحددة متساوية، فإن دالة التمويه تكون عددا ثابتا. النص المخصص طريقة التقسيس، التي تعرض الحروف الأولى والأخيرة وتضيف سلسلة حشو مخصصة في المنتصف. إذا كان الوتر الأصلي أقصر من البادئة واللاحقة المكشوفة، يستخدم فقط خيط الحشوة. prefix[padding]suffixDatetime يتيح التمويه الدقيق لأعمدة التاريخ/الوقت، وهي datetime، datetime2، date، time، datetimeoffset، وsmalldatetimetime. يمكنك إخفاء مكونات محددة مثل السنة ( datetime("Y"))، الشهر (datetime("M"))، اليوم (datetime("D"))، الساعة (datetime("h"))، الدقيقة (datetime("m"))، أو الثانية (datetime("s")). تطبق هذه الدالة باستخدام T-SQL.
على سبيل المثال:
- سنة القناع:ALTER COLUMN BirthDay ADD MASKED WITH (FUNCTION = 'datetime("Y")').
- شهر الكمامات:ALTER COLUMN BirthDay ADD MASKED WITH (FUNCTION = 'datetime("M")').
- دقيقة القناع:ALTER COLUMN BirthDay ADD MASKED WITH (FUNCTION = 'datetime("m")').
الحقول الموصى بها لإخفاء الأدلة
محرك توصيات DDM يحدد بعض الحقول من قاعدة بياناتك كحقول حساسة محتملة، وقد تكون مرشحة جيدة للتمويه. في لوحة تقطيع البيانات الديناميكي في البوابة، ترى الأعمدة الموصى بها لقاعدة بياناتك. اختر إضافة القناع لعمود أو أكثر، ثم اختر دالة الإخفاء المناسبة واختر حفظ، لتطبيق القناع على هذه الحقول.
إدارة إخفاء البيانات الديناميكي باستخدام T-SQL
- لإنشاء قناع بيانات ديناميكي، انظر إنشاء قناع بيانات ديناميكي.
- لإضافة أو تعديل قناع على عمود موجود، راجع إضافة أو تعديل قناع على عمود موجود.
- لمنح الأصلاحات لعرض البيانات غير المخفية، راجع منح الأصلاحيات لعرض البيانات غير المقنعة.
- لوضع قناع بيانات ديناميكي، انظر إسقاط قناع بيانات ديناميكي.
قم بإعداد إخفاء البيانات الديناميكي لقاعدة بياناتك باستخدام PowerShell cmdlets
نُهج إخفاء البيانات
قواعد إخفاء البيانات
- Get-AzSqlDatabaseDataMaskingRule
- New-AzSqlDatabaseDataMaskingRule
- Remove-AzSqlDatabaseDataMaskingRule
- Set-AzSqlDatabaseDataMaskingRule
قم بإعداد إخفاء البيانات الديناميكي لقاعدة بياناتك باستخدام واجهة برمجة تطبيقات REST
يمكنك استخدام واجهة برمجة تطبيقات REST لإدارة سياسات وقواعد إخفاء البيانات برمجيا. يدعم واجهة برمجة تطبيقات REST المنشورة العمليات التالية:
نُهج إخفاء البيانات
- إنشاء أو تحديث: ينشئ أو يحدث سياسة إخفاء بيانات في قاعدة البيانات.
- احصل على: يحصل على سياسة إخفاء بيانات في قاعدة البيانات.
قواعد إخفاء البيانات
- إنشاء أو تحديث: ينشئ أو يحدث قاعدة إخفاء بيانات في قاعدة البيانات.
- قائمة بقاعدة بيانات: تحصل على قائمة بقواعد إخفاء بيانات قاعدة البيانات.
الأذونات
لمعرفة المزيد عن الأذونات عند استخدام التمويه الديناميكي للبيانات باستخدام أمر T-SQL، راجع الأذونات.
مثال على الإذن الدقيق
منع الوصول غير المصرح به إلى البيانات الحساسة والحصول على السيطرة عن طريق إخفائها عن مستخدم غير مصرح له في مستويات مختلفة من قاعدة البيانات. يمكنك منح أو إلغاء UNMASK الأذونات على مستوى قاعدة البيانات، أو المخطط، أو الجدول أو على مستوى العمود لأي مستخدم أو دور في قاعدة البيانات. بالاقتران مع مصادقة Microsoft Entra، UNMASK يمكن إدارة الأذونات للمستخدمين والمجموعات والتطبيقات التي يتم حفظها داخل بيئة Azure الخاصة بك. يوفر الإذن UNMASK طريقة دقيقة للتحكم في الوصول غير المصرح به إلى البيانات المخزنة في قاعدة البيانات وتقييد ذلك وتحسين إدارة أمن البيانات.
إنشاء مخطط يحتوي على جداول المستخدم:
CREATE SCHEMA Data; GOأنشئ جدولا بأعمدة مقنعة:
CREATE TABLE Data.Membership ( MemberID INT IDENTITY (1, 1) NOT NULL, 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 );إدراج بيانات العينة:
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');إنشاء مخطط ليحتوي على جداول الخدمة:
CREATE SCHEMA Service; GOإنشاء جدول خدمة بأعمدة مقنعة:
CREATE TABLE Service.Feedback ( MemberID INT IDENTITY (1, 1) NOT NULL, Feedback VARCHAR (100) MASKED WITH (FUNCTION = 'default()') NULL, Rating INT MASKED WITH (FUNCTION = 'default()'), Received_On DATETIME );إدراج بيانات العينة:
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');إنشاء مستخدمين مختلفين في قاعدة البيانات:
CREATE USER ServiceAttendant WITHOUT LOGIN; GO CREATE USER ServiceLead WITHOUT LOGIN; GO CREATE USER ServiceManager WITHOUT LOGIN; GO CREATE USER ServiceHead WITHOUT LOGIN; GOمنح أذونات القراءة للمستخدمين في قاعدة البيانات:
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;امنح أذونات مختلفة
UNMASKللمستخدمين:امنح الإذن على مستوى
UNMASKالعمود لServiceAttendant:GRANT UNMASK ON Data.Membership (FirstName) TO ServiceAttendant;امنح الإذن على مستوى
UNMASKالجدول لServiceLead:GRANT UNMASK ON Data.Membership TO ServiceLead;امنح إذن على مستوى
UNMASKالمخطط لServiceManager:GRANT UNMASK ON SCHEMA::Data TO ServiceManager; GRANT UNMASK ON SCHEMA::Service TO ServiceManager;منح إذن على مستوى
UNMASKقاعدة البيانات لServiceHead؛GRANT UNMASK TO ServiceHead;
استعلام البيانات في سياق المستخدم
ServiceAttendant:EXECUTE AS USER = 'ServiceAttendant'; SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay FROM Data.Membership; SELECT MemberID, Feedback, Rating FROM Service.Feedback; REVERT;استعلام البيانات في سياق المستخدم
ServiceLead:EXECUTE AS USER = 'ServiceLead'; SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay FROM Data.Membership; SELECT MemberID, Feedback, Rating FROM Service.Feedback; REVERT;استعلام البيانات في سياق المستخدم
ServiceManager:EXECUTE AS USER = 'ServiceManager'; SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay FROM Data.Membership; SELECT MemberID, Feedback, Rating FROM Service.Feedback; REVERT;استعلام البيانات في سياق المستخدم
ServiceHeadEXECUTE AS USER = 'ServiceHead'; SELECT MemberID, FirstName, LastName, Phone, Email, BirthDay FROM Data.Membership; SELECT MemberID, Feedback, Rating FROM Service.Feedback; REVERT;لإلغاء
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;