ماسک‌گذاری دیتا-SQL Server-امنیت دیتابیس-Dynamic Data Masking-حفاظت از اطلاعات-امنیت اطلاعات-مدیریت پایگاه داده-DDM

یکی از مهم‌ترین مسئولیت‌های مدیران پایگاه داده، محافظت از اطلاعات حساس در پایگاه‌های داده سازمان است. در دنیای امروز که امنیت اطلاعات اهمیت فوق‌العاده‌ای دارد، استفاده از ابزارها و روش‌هایی برای جلوگیری از دسترسی غیرمجاز به داده‌ها امری حیاتی است.
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 به شما کمک کنیم.

نظری داده نشده

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *