یکی از مهمترین مسئولیتهای مدیران پایگاه داده، محافظت از اطلاعات حساس در پایگاههای داده سازمان است. در دنیای امروز که امنیت اطلاعات اهمیت فوقالعادهای دارد، استفاده از ابزارها و روشهایی برای جلوگیری از دسترسی غیرمجاز به دادهها امری حیاتی است.
Dynamic Data Masking (DDM) یا ماسکگذاری پویا، یکی از ابزارهای قدرتمند SQL Server برای محافظت از دادههای حساس بدون نیاز به تغییر در اپلیکیشنهای موجود است.
تفاوت ماسکگذاری با رمزنگاری
اولین نکتهای که باید به آن توجه شود این است که ماسکگذاری با رمزنگاری تفاوت دارد. در حالی که رمزنگاری (Encryption) اطلاعات را رمزنگاری و فقط برای کاربران دارای کلید قابل مشاهده میکند، ماسکگذاری دادهها را به صورت پویا برای کاربران غیرمجاز تغییر میدهد، بدون اینکه داده واقعی در پایگاه داده تغییر کند.
یعنی کاربر مجاز اطلاعات واقعی را میبیند، اما کاربر محدودشده، نسخهای ماسکشده از همان داده را مشاهده میکند.
کاربردهای Dynamic Data Masking
DDM در سناریوهای مختلفی کاربرد دارد، از جمله:
- تحلیلگران داده و تیمهای BI که فقط باید دادههای خلاصه شده را ببینند
- کاربران بیرونی (Third-party) یا پیمانکاران با دسترسی محدود
- محیطهای تست و توسعه که استفاده از دادههای واقعی در آنها امن نیست
- ادمینهای دیتابیس با سطح دسترسی مشخص
پیادهسازی ماسکگذاری دیتا در SQL Server
۱. ساخت کاربر محدود برای تست
USE master;
GO
IF EXISTS (SELECT TOP 1 1 FROM sys.syslogins WHERE name = 'NotAdminUsr')
BEGIN
DROP LOGIN NotAdminUsr;
DROP USER NotAdminUsr;
END;
GO
CREATE LOGIN NotAdminUsr WITH PASSWORD = N'123456', DEFAULT_DATABASE = master;
CREATE USER NotAdminUsr FOR LOGIN NotAdminUsr;
ALTER ROLE db_datareader ADD MEMBER NotAdminUsr;
ALTER ROLE db_datawriter ADD MEMBER NotAdminUsr;
GO
۲. ساخت جدول با ستونهای ماسکگذاریشده
DROP TABLE IF EXISTS dbo.UsersData;
GO
CREATE TABLE dbo.UsersData (
id INT IDENTITY(1,1),
FirstName VARCHAR(15),
LastName VARCHAR(15) MASKED WITH (FUNCTION = 'default()'),
CreditCard VARCHAR(25) MASKED WITH (FUNCTION = 'partial(4,"XXXXXXX",0)'),
Email VARCHAR(25) MASKED WITH (FUNCTION = 'email()'),
DocNumber BIGINT MASKED WITH (FUNCTION = 'random(111111,999999)')
);
GO
INSERT INTO dbo.UsersData (FirstName, LastName, CreditCard, Email, DocNumber)
VALUES ('Roozbeh', 'Amiressami', '6274-1211-7266-3040', 'roozbeh@amiressami.com', 135468519);
۳. مشاهده نتیجه با دسترسی محدود
EXECUTE AS USER = 'NotAdminUsr';
SELECT * FROM dbo.UsersData;
REVERT;
انواع ماسکها در SQL Server
نوع ماسک | توضیح | نمونه |
---|---|---|
default() | داده را به صورت پیشفرض پنهان میکند | XXXX |
partial() | بخشی از داده را نشان میدهد و باقی را مخفی میکند | ۶۲۷۴-XXXXXXX |
email() | ایمیل را به صورت ماسکشده نشان میدهد | xxxx@lambdaco.org |
random() | مقدار تصادفی در بازهای مشخص را جایگزین میکند | ۸۴۷۲۹۱ |
Custom String | جایگزینی سفارشی با یک رشته ثابت | ***** |
اعمال ماسکگذاری بر روی ستونهای موجود
برای افزودن ماسک به ستونهای موجود:
ALTER TABLE TableName
ALTER COLUMN ColumnName
ADD MASKED WITH (FUNCTION = 'masking_function');
نکات امنیتی مهم
- ماسکگذاری جایگزین مجوزها و کنترل دسترسی نیست. همیشه از Least Privilege پیروی کنید.
- کاربران با نقش
db_owner
یاUNMASK
، دادههای واقعی را مشاهده خواهند کرد. - ماسکگذاری بر روی داده ذخیرهشده تأثیری ندارد؛ فقط نمایش داده را تغییر میدهد.
پرسشهای پرتکرار (FAQ)
آیا ماسکگذاری روی عملکرد دیتابیس تأثیر دارد؟
تأثیر آن بسیار کم است چون در سطح نمایش و نه در ذخیرهسازی اعمال میشود.
آیا میتوان ماسکها را برای فیلتر کردن یا جستجو استفاده کرد؟
خیر، فیلترها روی داده واقعی اعمال میشوند. ماسک فقط روی نمایش داده تأثیر دارد.
آیا این ویژگی در همه نسخههای SQL Server فعال است؟
Dynamic Data Masking از SQL Server 2016 به بعد در دسترس است، اما در نسخههای مختلف قابلیتهای متفاوتی دارد.
چگونه میتوان دسترسی کامل به دادهها را به کاربر داد؟
با اعطای مجوز UNMASK
:
GRANT UNMASK TO [UserName];
ارتباط و مشاوره
اگر به دنبال افزایش امنیت اطلاعات در سازمان خود هستید و قصد دارید از قابلیت Dynamic Data Masking بهصورت اصولی بهره ببرید:
همین حالا با تیم تخصصی لاندا تماس ✆ بگیرید
ما آمادهایم تا در زمینه طراحی، پیادهسازی، یا آموزش SQL Server به شما کمک کنیم.
- مشاوره تخصصی
- اجرای پروژههای امنیت اطلاعات
- آموزش عملی برای تیم فنی شما
نظری داده نشده