چگونه می توان داده ها را در SQL Server سرور Mask کرد؟
چگونه میتوان دادهها را در SQL Server سرور Mask کرد؟ با Dynamic Data Masking اطلاعات حساس را بدون تغییر داده اصلی مخفی کنید.
01 شهریور 1405
لینک کوتاه
چگونه میتوان دادهها را در SQL Server Mask کرد؟
در بسیاری از سازمانها، پایگاه داده SQL Server حاوی اطلاعات حساسی مانند شماره تلفن، ایمیل، کد ملی، اطلاعات مالی و مشخصات مشتریان است. دسترسی مستقیم کاربران، کارشناسان پشتیبانی، توسعهدهندگان یا محیطهای تست به این اطلاعات میتواند خطر افشای دادههای محرمانه را افزایش دهد.یکی از راهکارهای کاربردی برای کاهش این ریسک، Mask کردن دادهها در SQL Server است.
Data Masking یا پوشاندن دادهها به روشی گفته میشود که اطلاعات واقعی برای کاربران غیرمجاز یا محیطهای خاص قابل مشاهده نباشد، در حالی که داده اصلی همچنان در پایگاه داده حفظ میشود.
SQL Server برای این کار قابلیتی با نام Dynamic Data Masking یا DDM ارائه میدهد.
Data Masking در SQL Server چیست؟
Data Masking فرآیندی برای مخفی یا محدود کردن نمایش اطلاعات حساس است. فرض کنید جدولی مانند Customers دارید که اطلاعات مشتریان در آن ذخیره شده است:
CREATE TABLE Customers
(
Id INT,
FullName NVARCHAR(100),
PhoneNumber VARCHAR(20),
Email VARCHAR(100)
);
ممکن است اطلاعات جدول به شکل زیر باشد:
Id FullName PhoneNumber Email
1 Ali Ahmadi 09121234567 ali@example.com
اگر بخواهیم شماره تلفن برای برخی کاربران به شکل زیر نمایش داده شود:
XXXXXXX4567
میتوانیم از قابلیت Dynamic Data Masking استفاده کنیم.
نکته مهم این است که در این روش، مقدار اصلی داده در جدول تغییر نمیکند؛ بلکه SQL Server هنگام نمایش اطلاعات به کاربران خاص، مقدار را Mask میکند.
Dynamic Data Masking چیست؟
Dynamic Data Masking یا DDM یکی از قابلیتهای SQL Server برای محدود کردن نمایش اطلاعات حساس است. این قابلیت بدون نیاز به تغییر ساختار اصلی برنامه میتواند نحوه نمایش دادهها را برای کاربران مشخص کنترل کند.
برای مثال، فرض کنید در ستون شماره تلفن مقدار زیر ذخیره شده است:
09121234567
پس از اعمال Mask ممکن است کاربر مقدار زیر را مشاهده کند:
XXXXXXX4567
اما مقدار واقعی همچنان در پایگاه داده باقی میماند.
این ویژگی برای سناریوهایی مانند محیطهای تست، پشتیبانی و دسترسی محدود کاربران بسیار کاربردی است.
چگونه یک ستون را در SQL Server Mask کنیم؟
برای اعمال Dynamic Data Masking میتوان هنگام ایجاد جدول، ستون را با گزینه MASKED WITH تعریف کرد.برای مثال:
CREATE TABLE Customers
(
Id INT,
FullName NVARCHAR(100),
Email VARCHAR(100)
MASKED WITH (FUNCTION = 'email()')
);
در این مثال، ستون Email با Function مربوط به ایمیل Mask میشود.
اما اگر جدول از قبل ایجاد شده باشد، میتوان Mask را با دستور ALTER TABLE اضافه کرد.
ALTER TABLE Customers
ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()');
بعد از اجرای این دستور، کاربران عادی که مجوز مشاهده داده بدون Mask را ندارند، مقدار Mask شده را مشاهده خواهند کرد.
🌟 آیا میخواهید به یک متخصص پایگاه داده تبدیل شوید و در دنیای فناوری اطلاعات بدرخشید؟با دوره آموزشی SQL Server ما، شما میتوانید به راحتی و با روشی عملی، تمام مهارتهای لازم را یاد بگیرید!این دوره به شما آموزش میدهد که چگونه دادهها را به بهترین شکل مدیریت کنید، گزارشهای قدرتمند بسازید و به تحلیلهای عمیق دست یابید.با محتوای جذاب و پروژههای واقعی، شما نه تنها تئوری را یاد میگیرید، بلکه تواناییهای عملی خود را نیز تقویت میکنید.پس فرصت را از دست ندهید! همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آینده شغلی روشنتر بردارید!
انواع Data Masking در SQL Server
SQL Server چند روش اصلی برای Mask کردن دادهها در اختیار برنامهنویسان و مدیران پایگاه داده قرار میدهد.۱. Default Mask
یکی از سادهترین روشها استفاده از default() است.
ALTER TABLE Customers
ALTER COLUMN FullName
ADD MASKED WITH (FUNCTION = 'default()');
در این حالت، SQL Server مقدار جایگزینی متناسب با نوع داده نمایش میدهد.
برای مثال، داده عددی ممکن است با صفر و داده متنی با کاراکترهای عمومی جایگزین شود.
این روش زمانی مناسب است که مهم نباشد کاربر چه مقدار جایگزینی مشاهده میکند و فقط هدف، پنهان کردن مقدار واقعی باشد.
۲. Email Masking
برای اطلاعات ایمیل میتوان از email() استفاده کرد:
ALTER TABLE Customers
ALTER COLUMN Email
ADD MASKED WITH (FUNCTION = 'email()');
اگر مقدار واقعی به شکل زیر باشد:
ali@example.com
نمایش Mask شده میتواند چیزی شبیه این باشد:
aXXX@XXXX.com
این روش برای ستونهایی که اطلاعات ایمیل کاربران را نگهداری میکنند بسیار مناسب است.
۳. Random Mask
برای ستونهای عددی میتوان از Mask تصادفی استفاده کرد:ALTER TABLE Customers
ALTER COLUMN Salary
ADD MASKED WITH (FUNCTION = 'random(1,100)');
در این حالت، کاربران غیرمجاز مقدار تصادفی در محدوده مشخصشده مشاهده میکنند.
این روش زمانی کاربرد دارد که کاربر نیازی به مشاهده مقدار واقعی ندارد اما برنامه همچنان باید یک مقدار عددی دریافت کند.
۴. Partial Mask
یکی از کاربردیترین روشها، نمایش بخشی از مقدار واقعی و مخفی کردن بخش دیگر آن است.برای مثال:
ALTER TABLE Customers
ALTER COLUMN PhoneNumber
ADD MASKED WITH (FUNCTION = 'partial(0,"XXXXXXX",4)');
در این حالت میتوان بخشی از شماره را پنهان کرد و چند کاراکتر انتهایی را نمایش داد.
این نوع Mask برای شماره تلفن، شماره کارت، کدهای شناسایی و سایر دادههای حساس بسیار مفید است.

مشاهده داده Mask شده
فرض کنید یک جدول مشتری داریم:CREATE TABLE Customers
(
Id INT,
Name NVARCHAR(100),
Phone VARCHAR(20)
MASKED WITH (FUNCTION = 'partial(0,"XXXXXXX",4)')
);
پس از وارد کردن داده:
INSERT INTO Customers
VALUES
(1, 'Ali Ahmadi', '09121234567');
کاربری که مجوز لازم برای مشاهده دادههای بدون Mask را نداشته باشد، ممکن است چیزی مشابه زیر ببیند:
Id Name Phone
1 Ali Ahmadi XXXXXXX4567
در حالی که داده اصلی همچنان 09121234567 است.
چه کسی میتواند داده اصلی را مشاهده کند؟
یکی از نکات بسیار مهم در Dynamic Data Masking، موضوع مجوزهای کاربران است.Mask کردن داده به این معنی نیست که اطلاعات برای تمام کاربران و در تمام شرایط غیرقابل دسترس میشود.
کاربران دارای مجوزهای مناسب، مانند کاربران دارای مجوز UNMASK، میتوانند داده واقعی را مشاهده کنند.
برای اعطای مجوز مشاهده داده بدون Mask میتوان از دستور زیر استفاده کرد:
GRANT UNMASK TO UserName;
در نسخهها و تنظیمات مختلف SQL Server، سطح دسترسی میتواند در سطح پایگاه داده یا سایر محدودههای مجاز مدیریت شود.
به همین دلیل، هنگام طراحی سیستم امنیتی باید علاوه بر Mask کردن، مجوزهای کاربران نیز بهدقت بررسی شوند.
حذف Mask از یک ستون
اگر در آینده بخواهیم Mask یک ستون را حذف کنیم، میتوانیم از DROP MASKED استفاده کنیم:ALTER TABLE Customers
ALTER COLUMN Email
DROP MASKED;
پس از اجرای این دستور، Mask از ستون موردنظر حذف میشود.
آیا Dynamic Data Masking دادهها را رمزنگاری میکند؟
خیر. این موضوع یکی از مهمترین نکاتی است که باید هنگام استفاده از SQL Server Dynamic Data Masking بدانیم.Data Masking با Encryption یا رمزنگاری متفاوت است.
در Dynamic Data Masking، داده اصلی همچنان به همان شکل در پایگاه داده ذخیره میشود و فقط نحوه نمایش آن برای کاربران خاص تغییر میکند.
بنابراین نباید DDM را جایگزین رمزنگاری اطلاعات حساس در نظر گرفت.
برای مثال، اگر یک سازمان نیاز داشته باشد اطلاعات بسیار حساس را در برابر دسترسی مستقیم یا سرقت فایلهای پایگاه داده محافظت کند، باید راهکارهای امنیتی دیگری مانند Encryption را نیز بررسی کند.
تفاوت Data Masking و Encryption
در Encryption، داده به شکل رمزنگاریشده ذخیره یا منتقل میشود و برای خواندن آن به کلید یا مکانیزم رمزگشایی نیاز است.اما در Dynamic Data Masking، داده اصلی تغییر نمیکند و SQL Server در زمان نمایش، نسخه Mask شده را در اختیار کاربری که مجوز مناسب ندارد قرار میدهد.
به زبان ساده:
- Encryption: داده را رمزنگاری میکند.
- Data Masking: نمایش داده را محدود میکند.
- بنابراین این دو فناوری میتوانند در کنار یکدیگر استفاده شوند و اهداف امنیتی متفاوتی دارند.
کاربرد Data Masking در محیط تست
یکی از مهمترین کاربردهای Mask کردن داده در SQL Server، محیطهای توسعه و تست است.فرض کنید یک شرکت اطلاعات واقعی مشتریان را در پایگاه داده Production نگهداری میکند.
توسعهدهندگان برای تست نرمافزار به نسخهای از این اطلاعات نیاز دارند، اما نباید اطلاعات واقعی مشتریان را مشاهده کنند.
در چنین شرایطی، Masking میتواند به کاهش ریسک افشای اطلاعات کمک کند.
برای مثال، به جای اینکه توسعهدهنده شماره واقعی مشتری را مشاهده کند:
09121234567
میتواند مقدار Mask شدهای مانند این ببیند:
XXXXXXX4567
این روش به تیم توسعه اجازه میدهد ساختار و دادههای موردنیاز برای تست را داشته باشد، بدون اینکه لزوماً اطلاعات حساس را مشاهده کند.
مزایای Mask کردن دادهها در SQL Server
استفاده صحیح از Data Masking مزایای مختلفی دارد:-
کاهش احتمال افشای اطلاعات حساس
-
کنترل بهتر دسترسی کاربران به دادهها
-
مناسب برای محیطهای تست و توسعه
-
کاهش نمایش اطلاعات شخصی کاربران
-
امکان اعمال Mask بدون تغییر مقدار واقعی داده
-
پیادهسازی نسبتاً ساده در SQL Server
-
امکان تعریف Maskهای مختلف برای انواع داده
با این حال، Masking باید بخشی از یک معماری امنیتی کامل باشد و نباید بهعنوان تنها راهکار حفاظت از اطلاعات در نظر گرفته شود.
نکات مهم امنیتی هنگام استفاده از Data Masking
قبل از استفاده از Dynamic Data Masking بهتر است چند نکته مهم را در نظر بگیرید.اول اینکه مشخص کنید چه اطلاعاتی واقعاً حساس هستند. اطلاعاتی مانند شماره تلفن، ایمیل، کد ملی، شماره کارت، آدرس و اطلاعات مالی ممکن است نیازمند سطح متفاوتی از محافظت باشند.
دوم اینکه مجوزهای کاربران را بررسی کنید. اگر کاربری مجوز مشاهده داده بدون Mask را داشته باشد، اعمال Mask بهتنهایی مانع مشاهده اطلاعات واقعی توسط او نمیشود.
سوم اینکه Dynamic Data Masking را با Encryption، کنترل دسترسی، Audit و سایر قابلیتهای امنیتی اشتباه نگیرید.
چهارم اینکه قبل از اعمال Mask در محیط Production، رفتار برنامه را بهطور کامل آزمایش کنید؛ زیرا بعضی برنامهها ممکن است به نوع یا مقدار واقعی داده وابسته باشند.
جمعبندی
Mask کردن داده در SQL Server یکی از روشهای کاربردی برای کاهش نمایش اطلاعات حساس به کاربران غیرمجاز است. قابلیت Dynamic Data Masking این امکان را فراهم میکند که دادههای حساسی مانند ایمیل، شماره تلفن و اطلاعات عددی بدون تغییر مقدار اصلی، به شکل Mask شده نمایش داده شوند.
برای این کار میتوان از Functionهایی مانند ()default() ، email() ، random و ()partial استفاده کرد.
همچنین با مدیریت مجوزهای دسترسی میتوان مشخص کرد چه کاربرانی امکان مشاهده مقدار واقعی را داشته باشند.
با وجود مزایای DDM، باید توجه داشت که Data Masking جایگزین رمزنگاری و سایر راهکارهای امنیتی نیست.
بهترین رویکرد این است که Masking را در کنار کنترل دسترسی، رمزنگاری، ثبت رویدادها و سایر روشهای امنیتی SQL Server استفاده کنیم.
در نتیجه، اگر هدف شما محافظت از اطلاعات حساس در زمان نمایش، بهخصوص در محیطهای تست و پشتیبانی است، Dynamic Data Masking میتواند یکی از ابزارهای مفید SQL Server برای پیادهسازی یک سیاست امنیتی مناسب باشد.



کاربران ما
شما هم نظرتون با ما دریاره “چگونه می توان داده ها را در SQL Server سرور Mask کرد؟” اشتراک بزارید
برای ارسال نظر لطفا ورود یا ثبت نام کنید