چگونه می توان دیتای حساس را در SqlServer ماسک کرد ؟
یکی از مهم ترین اقدامات یک مدیر پایگاه داده محافظت و مراقبت از دیتای پایگاه های داده در اختیار می باشد ، بحث امنیت و محافظت از اطلاعات یک مقوله جدا نشدنی از وظایف ادمین های دیتابیس می باشد ، یکی از راه های خیلی خوب در این زمینه ماسکه کردن دیتای حساس ما می باشد ، در این روش می توان دیتای خاصی که مد نظر ما می باشد را با روش خاصی پنهان سازی کرد .
در این روش نکته مهمی وجود دارد : این روش با Encrypting اشتباه گرفته نشود
این روش از فناوری Dynamic Data Masking استفاده می کند و همانطور که از نامش پیداست یک پوشش بر روی دیتای حساس ما کشیده و از دید کاربر غیر مجاز مخفی سازی می کند و در اصل دیتایی را نشان می دهد که در واقعیت وجود ندارد .
با ذکر این توضیحات مشخص است که این قابلیت بسیار کاربردی می باشد . و در شرایط و سناریو های خاص قابل استفاده می باشد که چند نمونه از آنها را در زیر مشاهده میکنید .
- جهت استفاده کارشناسان Data Analyzing
- کاربران خارج از سازمان که نیاز است با دیتابیس های ما کار کنند .
- برای کاربران و ادمین های دیتابیس ولی با دسترسی محدود
- محیط های تست و توسعه نرم افزار
- و…
پیاده سازی
برای پیاده سازی ماسک کردن دیتا و ساخت جدولی با این مشخصه از کد زیر استفاده میکنیم :
USE master
GO
-- Create User nonAdminUser SQLDBA.IR
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'663322',
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 SQLDBA.IR
DROP TABLE IF EXISTS dbo.UserInfo
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
('Mehdi', 'Rahmanzadeh', '6037-7011-7012-7013', 'MRahmanzadeh@Gmail.com', 135468519)
GO
SELECT * FROM dbo.UsersData
GO
-- Run simulating a different user connection
-- nonAdminUser only have datareader role
EXECUTE AS USER = 'nonAdminUser'
SELECT * FROM dbo.UsersData
REVERT
در SQL Server، میتوانید از مکانیزم ماسکگذاری (Masking) برای محافظت از دادههای حساس استفاده کنید. ماسکگذاری به شما اجازه میدهد دادههای حساس را با یک مقدار پوشش داده شده جایگزین کنید، به طوری که دسترسی به دادههای اصلی محدود شود. در زیر توضیحاتی درباره نحوه ماسکگذاری دیتای حساس در SQL Server آورده شده است:
1. انواع ماسکها: SQL Server انواع مختلفی از ماسکها را ارائه میدهد که میتوانید بر اساس نوع داده و نیاز خود از آنها استفاده کنید. برخی از ماسکهای موجود عبارتند از:
– Default: دادهها را بدون تغییر نمایش میدهد.
– Partial: بخشی از دادهها را ماسک میکند.
– Random: دادهها را با مقدار تصادفی جایگزین میکند.
– Email: ایمیل را به صورت “xxxxx@example.com” ماسک میکند.
– Custom String: دادهها را با یک رشته سفارشی جایگزین میکند.
2. اعمال ماسک بر روی ستونها: برای اعمال ماسک بر روی ستونها در SQL Server، میتوانید از دستور ALTER TABLE استفاده کنید و ستونهای مورد نظر را با ماسکهای مشخص شده تغییر دهید. به عنوان مثال:
“`
ALTER TABLE TableName ALTER COLUMN ColumnName ADD MASKED WITH (FUNCTION = ‘masking_function’)
“`
3. مجوزها و دسترسی: حتماً مطمئن شوید که مجوزها و دسترسیهای لازم برای دسترسی به دادههای اصلی را برای کاربران مناسب تنظیم کردهاید. با ماسکگذاری دادهها، دسترسی به دادههای حساس محدود میشود، اما این مسئله نباید از نظر امنیتی به دسترسی کاربران به دادههای ماسک شده تأثیر بگذارد.
ماسکگذاری دادهها در SQL Server یک روش مفید است که به شما کمک میکند از حفظ امنیت دادههای حساس در پایگاه داده خود اطمینان حاصل کنید. با استفاده از ماسکها مناسب و تنظیمات مجوز، میتوانید دسترسی به دادههای حساس را محدود کرده و از سوء استفاده محتمل در صورت نفوذ به سیستم جلوگیری کنید.
دیدگاه ها 1