چگونه می‌ توان داده‌ ها را در SQL Server سرور Mask کرد؟

چگونه می‌ توان داده‌ ها را در SQL Server سرور Mask کرد؟

نوشته شده توسط: تیم فنی نیک آموز
تاریخ انتشار: ۱۱ آذر ۱۳۹۹
آخرین بروزرسانی: ۲۱ شهریور ۱۴۰۳
زمان مطالعه: 14 دقیقه
۴
(۲)

Data Masking در SQL Server نوعی تکنیک امنیتی برای محافظت از اطلاعات حساس و محرمانگی داده‌هاست. امنیت و محافظت از اطلاعات برای مدیران پایگاه داده و کسانی که با سرورهای دیتابیس کار می‌کنند، همواره جزو اولویت‌هاست و این تکنیک امنیتی به کمکشان می‌آید تا آن‌ها را به این هدف نزدیک‌تر کند. در این مقاله، می‌خواهیم شیوۀ ماسک کردن در SQL Server را بررسی کنیم و ببینیم که چگونه می‌توان داده‌ها را در سرور SQL پنهان کنیم.

قبل از شروع

بسیاری از اوقات، مفاهیم با هم اشتباه گرفته می‌شوند و مهم است که از این تفاوت‌ها آگاه باشیم:

Encrypting! = Masking

ماسک کردن در SQL Server چیست؟

Mask به معنای ایجاد یک لایۀ محافظ است؛ پوشاندن، پنهان کردن چیزی یا نشان دادن چیزی که واقعی نیست.

Data Masking در SQL Server به پوشاندن داده‌ها و جایگزین کردن آن‌ها با مقادیر ساختگی گفته می‌شود و هدف آن جلوگیری از دسترسی غیرمجاز به اطلاعات محرمانه بدون تغییر داده‌های اصلی در پایگاه داده است. داده‌ها براساس نقش یا سطح دسترسی کاربر در طول اجرای کوئری‌ها پنهان می‌شوند.

ماسک کردن در SQL Server برای حفظ امنیت داده‌ها بسیار مفید و ضروری است. شما می‌توانید این کار را از طریق فناوری Dynamic Data Masking انجام دهید. در این حالت حتی اگر داده‌ها در اختیار کاربران غیرمجاز قرار بگیرد، خطرات امنیتی آن‌ها را تهدید نمی‌کند.

دوره آموزش امنیت در SQL Server 2022 نیک آموز

چرا از ماسک کردن در SQL Server استفاده می کنیم؟

ماسک کردن در SQL Server از دسترسی غیرمجاز کاربران به داده‌های حساس جلوگیری می‌کند. با پوشاندن آن‌ها در سطوح مختلف پایگاه داده، کنترل کامل داده‌ها را در اختیار شما قرار می‌دهد. در صورتی که قصد دارید امکان دسترسی به داده‌ها را برای یک کاربر فراهم کنید، باید از مجوز Unmask استفاده کنید.

این مجوز می‌تواند در سطح دیتابیس، جدول یا حتی ستون به کاربر داده شود و نقش او را تغییر دهد. همچنین می‌توانید در صورت نیاز، دسترسی او را لغو کنید. Data Masking در SQL Server روشی دقیق برای کنترل و محدود کردن دسترسی به داده‌های ذخیره‌شده در دیتابیس است و مدیریت امنیت داده‌ها را بهبود می‌بخشد.

چه زمانی از ماسک کردن در SQL Server استفاده می کنیم؟

پوشاندن داده های حساس در SQL Server در این موقعیت‌ها به کارتان می‌آید:

  • محیط‌های تست و توسعه
  • مراکز تماس و برنامه‌های مرتبط با دسترسی محدود به داده‌ها
  • برخی از DBAها با دسترسی محدود
  • تحلیلگران پایگاه داده با دسترسی محدود
  • موارد خارجی که با داده‌های ما کار می‌کنند

انواع روش های ماسک کردن در SQL Server

ماسک کردن در SQL Server بسیار آسان است و با ستون‌هایی انجام می‌شود که داده‌های حساس دارند. چهار عملکرد اساسی Data Masking در SQL Server وجود دارد که نمونۀ کدنویسی آن‌ها را در زیر می‌بینید.

 

USE master;
GO
-- Create User nonAdminUser
IF EXISTS (SELECT TOP 1 1 FROM sys.syslogins WHERE name = 'nonAdminUser')
BEGIN
    DROP LOGIN nonAdminUser;
    DROP USER nonAdminUser;
END
GO
CREATE LOGIN nonAdminUser
,WITH PASSWORD = N'123456'
     ,DEFAULT_DATABASE = master
     ,DEFAULT_LANGUAGE = us_english
     ,CHECK_EXPIRATION = OFF;
     CHECK_POLICY = OFF;
GO
CREATE USER nonAdminUser FOR LOGIN nonAdminUser;
ALTER ROLE db_datareader ADD MEMBER nonAdminUser;
ALTER ROLE db_datawriter ADD MEMBER nonAdminUser
GO
-- Create table appliying masking functions
DROP TABLE IF EXISTS dbo.UserInfo;
GO
CREATE TABLE dbo.UserInfo
(
    ,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.UserInfo
(
    ,FirstName
    ,LastName
    ,CreditCard
    ,Email
    DocNumber
)
VALUES
('Mohammad', 'Nozaim', '4940-9898-8989-1234', 'mohammadnozaime@Gmail.com', 123581321);
GO
SELECT * FROM dbo.UserInfo;
GO
--  Run simulating a different user connection
--  nonAdminUser only have datareader role
EXECUTE AS USER = 'nonAdminUser';
SELECT * FROM dbo.UserInfo;
REVERT;

 

کاربرد های ماسک کردن در SQL Server

پوشاندن داده های حساس در SQL Server یک تکنیک امنیتی داده محسوب می‌شود و به شما این امکان را می‌دهد که داده‌های حساس را مبهم کنید تا از دید بقیه پنهان شوند. کاربردهای این تکنیک امنیتی به شرح زیر است:

  • حملات امنیتی دیگر تأثیری بر سلامت و امنیت داده‌های شما نخواهد داشت.
  • زمانی که می‌خواهید داده‌ها را آزمایش کنید و به داده‌های اصلی نیازی ندارید، در این شرایط می‌توانید از داده‌های ماسک‌شده کپی بگیرید و آن‌ها را با داده‌های واقعی جایگزین کنید تا دمو یا آزمایش را با اطمینان خاطر از امنیت داده‌های اصلی انجام دهید.
  • این تکنیک تضمین می‌کند که داده‌ها به شکل اصلی خود باز نمی‌گردند و امنیت آن‌ها کاملاً تأمین شده است.
  • از دسترسی غیرمجاز به اطلاعات حساس و شخصی و نشت آن‌ها جلوگیری می‌شود.
  • به‌اشتراک‌گذاری داده‌ها با اشخاص ثالث را با اطمینان از پنهان بودن اطلاعات حساس انجام می‌دهید.

پیاده سازی ماسک کردن دیتا

در این بخش، شیوۀ ماسک کردن داده‌ها را در ۳ مرحله شرح می‌دهیم.

مرحلۀ اول: ایجاد جدول جدید

در اولین مرحله، یک جدول جدید ایجاد کنید و داده‌ها را در جدول قرار دهید. در تصویر زیر می‌بینید که جدول کارکنان ایجاد شده و مقادیری مثل اسم، فامیل، حقوق، ایمیل و شمارۀ تلفن در آن قرار گرفته است.

 

 

ایجاد جدول جدید

 

مرحلۀ دوم: ایجاد کاربر جدید

در مرحلۀ بعد، یک کاربر جدید را انتخاب کنید و مجوز ورود انتخابی را برای آن کاربر در نظر بگیرید. یعنی می‌توانید مشخص کنید که کاربر می‌تواند کدام جدول‌ها یا ستون‌ها را مشاهده کند. در تصویر زیر، TestUser می‌تواند تمام داده‌ها را مشاهده کند، چون کوئری هنوز ماسک نشده است.

 

ایجاد کاربر جدید

 

مرحلۀ سوم: اعمال کردن Masking

در این مرحله می‌خواهیم به عنوان نمونه، داده‌های ستون LastName را ماسک کنیم. سینتکس آن به شکل زیر خواهد بود:

 

“Alter table [Table Name] ALTER [Column Name] ADD MASKED WITH (FUNCTION = ‘default()’)”.

 

اعمال کردن Masking

 

زمانی که ماسک کردن دیتا اعمال شد، می‌توانید برنامه را به عنوان TestUser اجرا کنید و ببینید که داده‌های ستون مد نظر کاملاً پوشانده شده است.

مثالی از نحوه پیاده سازی ماسک کردن دیتا در SQL Server

همان‌طور که در تصویر زیر می‌بینید، کاربری که به عنوان «nonAdminUser» فراخوانی می‌شود، داده‌های تغییریافته را بسته به عملکردی که اعمال کرده‌اید، با Masking Layer یا Random Data مشاهده می‌کند؛ با استفاده از همان دستور SELECT در جدول.

تفاوت ماسک کردن در SQL Server و Encryption

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

اوضاع برای ماسک کردن در SQL Server متفاوت است. زمانی که داده‌ها پوشانده می‌شوند، داده‌های واقعی با اطلاعات فرضی جایگزین می‌شوند و هیچ راهی برای بازگرداندن داده‌ها به حالت اولیه وجود ندارد. داده‌های واقعی دیگر قابل مشاهده و بازیابی نیستند.

البته همچنان می‌توانید با داده‌های پوشانده‌شده کار کنید و قابل استفاده هستند، اما داده‌های اصلی را دیگر نمی‌توانید بازیابی کنید. اگر می‌خواهید داده‌های حساس را ذخیره یا به جای دیگری منتقل کنید، بهتر است از رمزگذاری استفاده کنید. اگر هم قصد دارید بدون افشای داده‌های واقعی از آن‌ها استفاده کنید، ماسک کردن دیتا برای شما گزینۀ مناسب‌تری است.

بررسی ماسک شدن دیتا در جداول

بعد از اینکه Data Masking در SQL Server را به اتمام رساندید، باید نتایج را آزمایش کنید. یعنی بررسی کنید که آیا داده‌های پوشانده‌شده همان ساختار و قالب داده‌های اصلی را حفظ کرده‌اند یا خیر. همچنین باید مطمئن شوید که فرایند ماسک کردن داده‌ها بر یکپارچگی آن‌ها اثری نداشته است.

اگر مراحل ذکرشده را به درستی کنید، داده‌ها به مفاهیمی ناخوانا و بدون معنی تبدیل می‌شوند. به این ترتیب، می‌توانید مطمئن باشید که ماسک شدن دیتا با موفقیت انجام شده است.

توابع Mask در SQL Server

در تصویر زیر، ۴ تابع ماسک کردن SQL Server را به همراه توضیحات و مثال‌های آن مشاهده می‌کنید.

آخرین ملاحظات

هرگز فراموش نکنید که Data Masking در SQL Server به طور ۱۰۰% از اطلاعات شما محافظت نمی‌کند. شما در واقع از Mask برای نمایش داده‌ها استفاده می‌کنید و محتوا همان‌طور که هست، ذخیره می‌شود.

پس از چه چیزی محافظت می‌کنیم؟ مهم است که ابتدا داده‌های حساس را در SQL Server پیدا کنید و سپس آن‌ها را به طور مناسب نشانه‌گذاری کنید.
اگر می‌خواهید دربارۀ مجوزها و بهترین روش‌های ماسک کردن در SQL Server بیشتر بدانید، می‌توانید نگاهی به اسناد رسمی بیندازید.

چه رتبه ای می‌دهید؟

میانگین ۴ / ۵. از مجموع ۲

اولین نفر باش

title sign
دانلود مقاله
چگونه می‌ توان داده‌ ها را در SQL Server سرور Mask کرد؟
فرمت PDF
4 صفحه
حجم 1 مگابایت
دانلود مقاله
title sign
معرفی نویسنده
تیم فنی نیک آموز
مقالات
373 مقاله توسط این نویسنده
محصولات
0 دوره توسط این نویسنده
تیم فنی نیک آموز
title sign
دیدگاه کاربران

هر روز یک ایمیل، هر روز یک درس
آموزش SQL Server بصورت رایگان
همین حالا فرم زیر را تکمیل کنید
دانلود رایگان جلسه اول
نیک آموز علاوه بر آموزش، پروژه‌های بزرگ در حوزه هوش تجاری و دیتا انجام می‌دهد.
close-link