پوشش دهی داده های داینامیک (Dynamic Data Masking) در SQL Server 2016

این مقاله درباره ی پوشش اطلاعات داینامیک(DDM) است. در اینجا چگونگی پوشش داده، و فعال کردن داده های masking در یک برنامه و نحوه ارائه دسترسی کاربران مختلف به اطلاعات پوشانده شده را آموزش میدهیم.

پوشش دهی داده های داینامیک (Dynamic Data Masking) در SQL Server 2016

پوشش داده داینامیک(Dynamic Data Masking)
 

Data Masking  روشی جدید برای نمایش داده ها با استفاده از کاراکتر های تصادفی و یا دادهایی که ساختاری شبیه به داده های اصلی دارند، ایجاد میکند ؛که بطور معمول برای حفاظت از اطلاعات حساس انجام میشود.

پوشاندن داده های داینامیک (DDM) یک فناوری در حال تحول است که اشیا ,در زمان واقعی، data masking داده هارا تولید میکند . DDM جریان داده را به طوری که اطلاعات  درخواست شده ،حساس نباشد و هیچ تغییر فیزیکی در داده های اصلی تولید شده رخ ندهد، تغییر میدهد.

DDM برای  جلوگیری از دسترسی غیر مجاز به اطلاعات حساس ،به کاربران  اجازه می دهد تا انتخاب کنند که چه مقدار از اطلاعات حساس  در  لایه کاربرد در معرض نمایش قرار گیرد. این یکی از ویژگی های حفاظت و پنهان کردن داده های حساس است. پوشش داده داینامیک، برای استفاده از برنامه های موجود که با قوانین پوشش در نتایج query استفاده میشود، آسان است.  بسیاری از برنامه های کاربردی می تواند اطلاعات حساس را بدون تغییر کوئری ها پنهان کنند.

 

چرا پوشش داده پویا(Dynamic Data Masking) ؟

بسیاری از برنامه های کاربردی حاوی اطلاعات حساسی هستند که در دیتابیس ذخیره شده اند و فقط برای کاربرانی که نیاز دارند، در دسترس است. تنها مشترکان صاحب امتیاز  که نیاز به دیدن داده  دارند،  باید قادر به دسترسی به آن داده ها باشند. بسیاری از کاربران نحوه دسترسی متمایزی برای دسترسی به داده های همزمان  دارند. کاربران نرم افزار باید فقط به بخش هایی از اطلاعات که نیاز دارند ،دسترسی داشته باشند. data field های حساس باید در دسترس مهندسانی که ارتباط مستقیم با تولید دیتابیس دارند قرار گیرد .

database

 

در Microsoft SQL Server 2016  یک ویژگی امنیتی به نام پوشش داده های پویا ساخته شده است. این یکی از ویژگی برنامه ریزی امنیتی جدید در SQL Server 2016  است که دسترسی به اطلاعات حساس را توسط نتایج obfuscating query  محدود میکند . شما باید توانایی محافظت از اطلاعات حساس در برابر دسترسی های غیر مجاز برای کاربر نهایی را ، با استفاده از built-in و یا قوانین customizable masking داشته باشید.  کاربر ممتاز می تواند اطلاعات پنهان و حساس  را ببیند.

بهترین گزینه برای افزایش تقاضا در برنامه های کاربردی به منظور برآورده کردن استانداردهای حفظ حریم خصوصی و الزامات قانونی برای پوشش اطلاعات حساس،   پوشش داده های پویا است، که بسیار ساده و آسان قابل استفاده است.

 

ویژگی ها

سیاست configurable masking را با استفاده  از دستور ساده T-SQL ارائه میدهد.

fly obfuscation  داده ها در نتایج  query است.

دیتابیس فیزیکی تغییر نمیکند و عملیات دیتابیس تحت تاثیر قرار نمیگیرد.

انعطاف پذیری برای تعریف مجموعه ای از کاربران SQL ممتاز(privileged SQL) یا  برای دسترسی بدون پوشش رول تعریف شود.

 

انواع Mask ها


4 نوع  Mask ارائه شده توسط SQL سرور 2016 وجود دارد:

Mask .1 پیش فرض(Default Mask)

Mask ها  اطلاعات کامل را  بر اساس نوع داده اختصاص میدهند.

انواع رشته (کاراکتر، NCHAR، VARCHAR، NVARCHAR، text ،  ntext )   را جایگزین داده ها با XXXX یا تعداد کمتری XS میکند ، که اندازهفیلد کمتر از 4 است.

برای   نوع داده های عددی (bigint, bit, decimal, int, money, numeric, smallint, smallmoney, tinyint, float, real) از مقدار  0 استفاده میشود.

 داده های باینری  (binary, varbinary, image) در یک بایت ازمقدار باینری 0 استفاده میشود.

 

Email Mask .2

Email Mask  مخصوص ذخیره  رشته های ایمیل است . حرف اول ایمیل پس از XXX، و بعد از آن  علامت @، و پس از XXXX و پسوند ثابت ".com" برای فرم یک ایمیل استفاده میشود. به عنوان مثال. aXXX@XXXX.com

 

Custom Mask .3

SQL Server 2016  اجازه می دهد تا  Mask خود را برای یک رشته خاص تعریف کنید . در این روش، تعریف پیشوند و پسوند کاراکترها در Padding نشان داده خواهد شد .

 

Random Mask .4

Mask تصادفی می تواند برای  بیش از یک فیلد عددی تعریف شود .  یک عدد تصادفی در محدوده مشخصی تعریف میشود.

 

افزودن Mask به فیلدها

در اینجا از   SQL Server Management StudioSQL Server 2016    استفاده  میکنیم.یک دیتابیس و جدول سفارشی ایجاد میکنیم.

کوئری انتخاب شده در جدول  را اجرا میکنیم.

result

برنامه اجرا میکنیم ، نتیجه همان است.

result

در حال حاضر ما masking را روی جدول اجرا می کنیم. اجرای masking داده پویا کاملا ساده است. نحوه ی اجرای پوشش داده بر روی یک ستون خاص است:

    Alter table [Table Name] Alter Column [Column Name] ADD MASKED WITH (FUNCTION=’[masking function]’)  

 

Default Masking

masking فقط با تغییر در جدول با دسترسی از admin اعمال می شود.

    Alter table CustomersAlter Column LastNameADD MASKED WITH (FUNCTION=’default()’)  

 

پس از اجرای موفقیت آمیز این کوئری،  نتایج را بررسی کنید. همان نتایج در SSMS خواهد بود ،اما نتایج دربرنامه تغییر کرده است. داده ها در admin privilege بدون پوشش  خواهد شد، اما در حساب سرویس امتیاز پوشیده میشود. در اینجا شما می توانید ببینید که آخرین قسمت نام به طور کامل پوشانده شده است. نکته  قابل توجه : ما اجازه  هر گونه تغییر در برنامه را نداریم.

result

 

Email Masking

 پس از  استفاده از  email mask  ،تغییرات در  ستون ایمیل در جدول customers اعمال خواهد شد:

    Alter table CustomersAlter Column EmailADD MASKED WITH (FUNCTION=’email()’)  

 

در حال حاضر دوباره برنامه را  برای دیدن نتایج refresh میکنیم. همانطور که در بالا توضیح داده شد، می توانید فیلد ایمیل پوشانده شده را ببینید.

result

Custom Masking

یک ستون phone در جدول customers است . استفاده از Custom Masking به  آن ستون برای مخفی کردن اطلاعات اعمال خواهد شد:

    Alter table CustomersAlter Column PhoneADD MASKED WITH (FUNCTION=’partial(2, ”X-XXXX-X”,2)’)  

partial function برای custom mask بر روی فیلد phone اعمال می شود.

result

 

Random Masking

Random Masking  یک عدد تصادفی در محدوده تعریف شده در یک ستون خاص قرار میدهد.  در ستون ID با استفاده از Random Masking اعمال خواهد شد:

    Alter table CustomersAlter Column CustomerIdADD MASKED WITH (FUNCTION=’random(10000,99999)’)  

تابع تصادفی نیاز به دو پارامتر، کران پایین و حد بالا دارد.  در حال حاضر دوباره برنامه را  برای دیدن نتایج refresh میکنیم. باز هم شما می توانید ببینید که فیلد  CustomerId  با یک عدد صحیح تصادفی بین دو مقدار که در تابع masking  تعریف شده است ،نمایش داده میشود.

result

 

نکته اصلی که باید توجه کنید این است که، در تمام سناریو،  اجازه هیچ گونه تغییر در برنامه را نداریم . ما فقط mask را  اعمال می کنیم.

 

Dropping mask

 حذف mask از هر ستون آسان است و فقط نیاز به یک دستور ساده T-SQL برای حذف از ستون است.

Altertable Customers AlterColumn CustomerId DROP MASKED

 

اجازه و لغو کاربران برای دیدن اطلاعات بدون پوشش

Admin user  ها همیشه  داده های بدون پوشش اصلی را می بیند،  این دلیل ممتاز بودن انهاست .  و می تواند به کاربر غیر ممتاز  که نیاز شغلی  دارد ،اجازه ی دیدن اطلاعات بدون پوشش  را دهد.

Grant Unmask TO DBUser

نگران نباشید، شما می توانید دسترسی بدون پوشش را  لغو کنید .

Revoke Unmask TO DBUser

 

پیگیری ستون پوشانده شده

برای پیگیری ستونی که در آن عملکرد mask  استفاده شده است، یک سیستم جدید به نام masked_columns تعریف شده است.

    SELECT c.name, tbl.name as table_name, c.is_masked, c.masking_function  
    FROMsys.masked_columns AS c  
    JOINsys.tablesAS tbl   
    ON c.[object_id] = tbl.[object_id]  
    WHERE is_masked = 1;  

result

 

نتیجه گیری

این مقاله در مورد پوشش داده بود. در این مقاله شما  نحوه پوشش داده  ، و فعال کردن داده های masking در یک برنامه  و نحوه ارائه دسترسی کاربران مختلف به اطلاعات پوشانده شده را آموختید. نکته اصلی این بود که پیاده سازی masking داده بسیار اسان است .مزیت اصلی پوشش داده این است که لازم نیست، تغییری در برنامه انجام دهیم. ما فقط باید  آن را در دیتابیس پیاده سازی کنیم .

دانلود نسخه ی PDF این مطلب