پوشش دهی داده های داینامیک (Dynamic Data Masking) در SQL Server 2016
سه شنبه 28 اردیبهشت 1395این مقاله درباره ی پوشش اطلاعات داینامیک(DDM) است. در اینجا چگونگی پوشش داده، و فعال کردن داده های masking در یک برنامه و نحوه ارائه دسترسی کاربران مختلف به اطلاعات پوشانده شده را آموزش میدهیم.
پوشش داده داینامیک(Dynamic Data Masking)
Data Masking روشی جدید برای نمایش داده ها با استفاده از کاراکتر های تصادفی و یا دادهایی که ساختاری شبیه به داده های اصلی دارند، ایجاد میکند ؛که بطور معمول برای حفاظت از اطلاعات حساس انجام میشود.
پوشاندن داده های داینامیک (DDM) یک فناوری در حال تحول است که اشیا ,در زمان واقعی، data masking داده هارا تولید میکند . DDM جریان داده را به طوری که اطلاعات درخواست شده ،حساس نباشد و هیچ تغییر فیزیکی در داده های اصلی تولید شده رخ ندهد، تغییر میدهد.
DDM برای جلوگیری از دسترسی غیر مجاز به اطلاعات حساس ،به کاربران اجازه می دهد تا انتخاب کنند که چه مقدار از اطلاعات حساس در لایه کاربرد در معرض نمایش قرار گیرد. این یکی از ویژگی های حفاظت و پنهان کردن داده های حساس است. پوشش داده داینامیک، برای استفاده از برنامه های موجود که با قوانین پوشش در نتایج query استفاده میشود، آسان است. بسیاری از برنامه های کاربردی می تواند اطلاعات حساس را بدون تغییر کوئری ها پنهان کنند.
چرا پوشش داده پویا(Dynamic Data Masking) ؟
بسیاری از برنامه های کاربردی حاوی اطلاعات حساسی هستند که در دیتابیس ذخیره شده اند و فقط برای کاربرانی که نیاز دارند، در دسترس است. تنها مشترکان صاحب امتیاز که نیاز به دیدن داده دارند، باید قادر به دسترسی به آن داده ها باشند. بسیاری از کاربران نحوه دسترسی متمایزی برای دسترسی به داده های همزمان دارند. کاربران نرم افزار باید فقط به بخش هایی از اطلاعات که نیاز دارند ،دسترسی داشته باشند. data field های حساس باید در دسترس مهندسانی که ارتباط مستقیم با تولید دیتابیس دارند قرار گیرد .
در 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 استفاده میکنیم.یک دیتابیس و جدول سفارشی ایجاد میکنیم.
کوئری انتخاب شده در جدول را اجرا میکنیم.
برنامه اجرا میکنیم ، نتیجه همان است.
در حال حاضر ما 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 بدون پوشش خواهد شد، اما در حساب سرویس امتیاز پوشیده میشود. در اینجا شما می توانید ببینید که آخرین قسمت نام به طور کامل پوشانده شده است. نکته قابل توجه : ما اجازه هر گونه تغییر در برنامه را نداریم.
Email Masking
پس از استفاده از email mask ،تغییرات در ستون ایمیل در جدول customers اعمال خواهد شد:
Alter table CustomersAlter Column EmailADD MASKED WITH (FUNCTION=’email()’)
در حال حاضر دوباره برنامه را برای دیدن نتایج refresh میکنیم. همانطور که در بالا توضیح داده شد، می توانید فیلد ایمیل پوشانده شده را ببینید.
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 اعمال می شود.
Random Masking
Random Masking یک عدد تصادفی در محدوده تعریف شده در یک ستون خاص قرار میدهد. در ستون ID با استفاده از Random Masking اعمال خواهد شد:
Alter table CustomersAlter Column CustomerIdADD MASKED WITH (FUNCTION=’random(10000,99999)’)
تابع تصادفی نیاز به دو پارامتر، کران پایین و حد بالا دارد. در حال حاضر دوباره برنامه را برای دیدن نتایج refresh میکنیم. باز هم شما می توانید ببینید که فیلد CustomerId با یک عدد صحیح تصادفی بین دو مقدار که در تابع masking تعریف شده است ،نمایش داده میشود.
نکته اصلی که باید توجه کنید این است که، در تمام سناریو، اجازه هیچ گونه تغییر در برنامه را نداریم . ما فقط 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;
نتیجه گیری
این مقاله در مورد پوشش داده بود. در این مقاله شما نحوه پوشش داده ، و فعال کردن داده های masking در یک برنامه و نحوه ارائه دسترسی کاربران مختلف به اطلاعات پوشانده شده را آموختید. نکته اصلی این بود که پیاده سازی masking داده بسیار اسان است .مزیت اصلی پوشش داده این است که لازم نیست، تغییری در برنامه انجام دهیم. ما فقط باید آن را در دیتابیس پیاده سازی کنیم .
- SQL Server
- 3k بازدید
- 3 تشکر