محافظت از اطلاعات ما ، خصوصاً برای ما که با سرورهای پایگاه داده کار می کنیم ، اجباری است، امنیت جدا از این شغل نیست. Masking گزینه خوبی برای محافظت از اطلاعات حساس است و به همین دلیل اکنون خواهیم دید که چگونه می توان داده ها را در SQL Server پنهان کرد.
قبل از شروع
من دیده ام که بسیاری از اوقات مفاهیم اشتباه گرفته می شوند و ما باید از تفاوت ها آگاه باشیم.
Encrypting != Masking
چگونه کار می کند؟
Mask به معنای واقعی کلمه ، ایجاد یک لایه محافظ است. پوشاندن ، پنهان کردن چیزی، نشان دادن چیزی که واقعی نیست. Masking در SQL Server می تواند بسیار مفید باشد و ما می توانیم این کار را از طریق فناوری به نام Dynamic Data Masking انجام دهیم. سپس می توانیم داده ها را در اختیار کاربران غیرمجاز قرار دهیم.
Data Masking را در کجا اعمال می کنیم؟
می توانیم درباره برخی سناریوها فکر کنیم :
- محیط های تست و توسعه
- مراکز تماس و برنامه های مرتبط با دسترسی محدود به داده ها
- برخی از DBA ها با دسترسی محدود
- تحلیلگران پایگاه داده با دسترسی محدود
- موارد خارجی که با داده های ما کار می کنند.
کدنویسی
خواهید دید که در SQL Server به آسانی افزودن برخی از کدها هنگام ایجاد جدولی که می خواهیم آن را مخفی کنیم ،این کار آسان است. شما این کار را با ستون هایی انجام می دهید که می دانید داده های حساس دارند.
چهار عملکرد اساسی Mask وجود دارد.
;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
آخرین ملاحظات
هرگز فراموش نکنید که Data Masking در SQL Server به طور 100% از اطلاعات شما محافظت نمی کند. به معنای واقعی کلمه شما از Mask برای نمایش داده ها استفاده می کنید ، محتوا همچنان همانطور که هست ذخیره می شود.
از چه چیزی محافظت می کنیم؟ مهم است که ابتدا داده های حساس را در SQL Server پیدا کنید و سپس آنها را به طور مناسب نشانه گذاری کنید.
اگر می خواهید درباره مجوزها و بهترین روش ها بیشتر بدانید ، می توانید نگاهی به اسناد رسمی بی اندازید.
دانلود این مقاله آموزشی
3 دیدگاه
صفایی
سلام
این امکان روی چه نسخه ای از sql server پشتیبانی می شود
مسعود طاهری
از نسخه 2016 به بعد
محمد عرفانی
جالب بود