راهنمای جامع پیادهسازی رمزنگاری بکاپها در SQL Server با استفاده از Master Key و Certificate
مقدمه
امنیت اطلاعات در دنیای امروز یکی از مهمترین دغدغههای سازمانها محسوب میشود. یکی از جنبههای حیاتی امنیت دادهها، محافظت از فایلهای پشتیبان (Backup) بانکهای اطلاعاتی است. در این مقاله، به صورت گامبهگام و کاملاً عملی، فرآیند پیادهسازی رمزنگاری بکاپها در SQL Server را با استفاده از Master Key و Certificate آموزش خواهیم داد.
چرا رمزنگاری بکاپها ضروری است:
قبل از ورود به جزئیات فنی، بیایید به این سؤال پاسخ دهیم که چرا باید بکاپهای خود را رمزنگاری کنیم:
- حفاظت از دادههای حساس در برابر دسترسی غیرمجاز
- تطابق با الزامات قانونی مانند GDPR، HIPAA و استانداردهای بانکی
- امنیت در هنگام انتقال فایلهای بکاپ به مراکز دیگر
- جلوگیری از سوءاستفاده در صورت گم شدن یا سرقت رسانههای بکاپ
پیشنیازها
- دسترسی به SQL Server با نسخه ۲۰۱۴ یا بالاتر (ترجیحاً)
- دسترسی سطح بالای ادمینی (sysadmin) روی سرورهای هدف
- مسیرهای ذخیرهسازی مشخص برای فایلهای کلید و گواهی
مرحله اول: ایجاد Master Key در سرورهای Primary
Master Key اولین لایه از سلسلهمراتب رمزنگاری در SQL Server است. این کلید برای محافظت از کلیدهای خصوصی و گواهیها استفاده میشود.
اسکریپت ایجاد Master Key:
USE MASTER ;
GO
-- بررسی وجود Master Key قبل از ایجاد
IF NOT EXISTS (SELECT * FROM sys.symmetric_keys WHERE name LIKE '%Master%')
BEGIN
CREATE MASTER KEY
ENCRYPTION BY PASSWORD = 'Password';
PRINT 'Master Key با موفقیت ایجاد شد.';
END
ELSE
BEGIN
PRINT 'Master Key از قبل وجود دارد.';
END
GO
نکته مهم: پسورد تعیین شده برای Master Key را در یک مکان امن (ترجیحاً مدیریت پسورد سازمانی) ثبت کنید. در این مثال، پسورد Password از فایل FinalPassword دریافت شده است.
مرحله دوم ایجاد Certificate در سرورهای Primary:
پس از ایجاد Master Key، نوبت به ایجاد Certificate میرسد Certificateها در SQL Server برای رمزنگاری دادهها و بکاپها استفاده میشوند.
اسکریپت ایجاد Certificate:
USE MASTER ;
GO
-- حذف Certificate در صورت وجود (اختیاری - با احتیاط استفاده شود)
-- IF EXISTS (SELECT * FROM sys.certificates WHERE name = 'smGK_BackupCertificate')
-- DROP CERTIFICATE smGK_BackupCertificate;
-- GO
-- ایجاد Certificate جدید
CREATE CERTIFICATE smGK_BackupCertificate
WITH SUBJECT = 'smGK_BackupCertificate',
EXPIRY_DATE = '2030-12-31'; -- تاریخ انقضای بلندمدت برای جلوگیری از مشکلات دورهای
GO
PRINT 'Certificate با نام smGK_BackupCertificate با موفقیت ایجاد شد.';
GO
توضیحات پارامترها:
- SUBJECT : توضیحی درباره کاربرد Certificate ( میتواند هر رشته متنی باشد )
- EXPIRY_DAT : تاریخ انقضا (پیشنهاد میشود حداقل ۵ سال در نظر گرفته شود)
مرحله سوم بکاپگیری از Certificate و کلید خصوصی :
برای استفاده از Certificate در سرورهای دیگر (مانند سرورهای Secondary یا Disaster Recovery) ، باید از آن بکاپ بگیریم و فایلها را در مسیر امنی نگهداری کنیم.
اسکریپت بکاپگیری از Certificate:
USE MASTER;
GO
-- تعریف مسیرهای ذخیرهسازی
DECLARE @CertPath NVARCHAR(500) = N'E:\GKKeys\';
DECLARE @CertFile NVARCHAR(500) = @CertPath + N'SMGK_BACKUP_CERTIFICATE.cer';
DECLARE @KeyFile NVARCHAR(500) = @CertPath + N'SMGK_BACKUP_CERTIFICATE_PRIVATE_KEY.key';
DECLARE @KeyPassword NVARCHAR(100) = N'Password';
-- بررسی وجود پوشه مقصد (در محیط واقعی باید از قبل ایجاد شده باشد)
PRINT 'شروع فرآیند بکاپگیری از Certificate...';
BACKUP CERTIFICATE smGK_BackuCertificate
TO FILE = @CertFile
WITH PRIVATE KEY
(
FILE = @KeyFile,
ENCRYPTION BY PASSWORD = @KeyPassword
);
PRINT 'بکاپ Certificate با موفقیت ایجاد شد.';
PRINT 'مسیر فایل Certificate: ' + @CertFile;
PRINT 'مسیر فایل کلید خصوصی: ' + @KeyFile;
GO
توصیههای امنیتی مهم:
- مسیر E:\GKKeys\ باید از قبل ایجاد شده باشد
- دسترسی به این پوشه فقط برای ادمینهای سیستم مجاز باشد
- از فایلهای ایجاد شده، بکاپ جداگانه در محیطی امن (مانند Tape یا Cloud Storage) تهیه شود
- پسورد vrHz93Gp5Vca362N نیز مانند پسورد Master Key باید در فایل FinalPassword نگهداری شود
مرحله چهارم تکرار فرآیند روی تمام سرورهای Primary :
مراحل یک تا سه باید روی تمامی سرورهای Primary که قرار است بکاپهای آنها رمزنگاری شود، اجرا گردد .
نظرات خوانندگان
0 نظرهنوز نظری برای این مقاله ثبت نشده است. اولین نفری باشید که نظر میدهد!