Database Encryption in SQL Server 2008

سناریو / مشکل: بکاپ های که از بانک ها گرفته میشود در هر سیستمی قابل بازیابی است و در صورت خارج شدن از سازمان دیتا در هر سیتمی قابل استفاده است.

 سناریو / مشکل: فایل های اصلی بانک اطلاعاتی شامل MDF , LDF در صورت دزدیده شدن در هر سیستمی قابل استفاده هستند.

راه حل: رمزنگاری بانک اطلاعاتی

Transparent Data Encryption نوع دیگری از رمزنگاری هست که با SQL SERVER 2008 معرفی شده و رمزنگاری رو در سطح دیتابیس انجام میده و محدود به ستون ها و رکوردهای دیتابیس نیست و از data فایل و log فایل محافظت میکنه.

پیاده سازی Transparent Data Encryption در بانک اطلاعاتی همونطور که اسمش پیداس برای برنامه های کاربردی که از بانک اطلاعاتی استفاده میکنند بصورت نا پیدا (transparent) است یعنی بدون نیاز به هیچ تغییری میتونیم این مکانیزم امنیتی رو در سطح دیتابیس داشته باشیم.

بعد از فعال کردن این نوع رمزنگاری در بانک اطلاعاتی بکاپی که از این بانک گرفته میشود(در سرور مبدا) فقط و فقط در سروری که certificate از سرور مبدا داشته باشد قابل بازیابی است همچنیا برای attach کردن فایل های اصلی بانک اطلاعاتی در سرور مقصد هم این فرایند نیاز است.

USE master ;
GO
--The database master key is a symmetric key used to protect 
--the private keys of certificates and asymmetric keys that are present in the database.
--When it is created, the master key is encrypted by using the Triple DES algorithm and a user-supplied password.

--To enable the automatic decryption of the master key, a copy of the key is encrypted by using the service master key 
--and stored in both the database and in master.

CREATE MASTER KEY ENCRYPTION BY PASSWORD='P@ssw0rd';
GO


-- When SQL Server generates a self-signed certificate, the private key is always created. 
-- By default, the private key is encrypted using the database master key.

CREATE CERTIFICATE MyEncryptionCert 
  WITH SUBJECT = 'My TDE Certificate';

GO
  
BACKUP CERTIFICATE MyEncryptionCert
  TO FILE= 'C:\Backup\MyEncryptionCert.cer'
  WITH PRIVATE KEY (FILE = 'C:\Backup\MyEncryptionCert.pvk' , ENCRYPTION BY PASSWORD= 'MyPassw0rd');
   
GO

USE AdventureWorks;
GO

CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE MyEncryptionCert;
GO

SELECT * FROM sys.dm_database_encryption_keys

GO

ALTER DATABASE AdventureWorks
  SET ENCRYPTION ON
  
GO

SELECT * FROM sys.dm_database_encryption_keys

GO  

USE Master
Go

BACKUP DATABASE AdventureWorks TO DISK='C:\Backup\AW_Encrypted.bak';

GO

-- CREATE the Certificate on the Server which is used to Restore the encrypted database.
-- You need to first create a MASTER KEY in the server if it does not exist.

-- You may simulate this by dropping the Certificate on this Server.

USE Master;
GO

DROP CERTIFICATE myEncryptionCert;
GO


CREATE CERTIFICATE MyEncryptionCert
  FROM FILE= 'C:\Backup\MyEncryptionCert.cer'
  WITH PRIVATE KEY (FILE = 'C:\Backup\MyEncryptionCert.pvk' , DECRYPTION BY PASSWORD= 'MyPassw0rd');
   
GO

-- YOU Can now restore the Encrypted database successfully.

نظرات

  1. خوب بود. اما این موضوع بسیار جای کار و بررسی بیشتر دارد که امیدوارم در بلاگ های فارسی از جمله بلاگ شما بیشتر به آن پرداخته شود.

    موفق باشید

    پاسخحذف
  2. سلام
    اطلاعات تکمیلی (البته غیر فارسی)
    http://technet.microsoft.com/en-us/library/cc278098%28SQL.100%29.aspx#_Toc189384676
    ضمنا اگه سوالی بود مطرح کنید

    پاسخحذف

ارسال یک نظر

پست‌های معروف از این وبلاگ

lnav ابزاری بسیار کاربردی برای پیمایش لاگ ها در لینوکس و البته مک

ساختن ایمیج های داکری به کمک BuildKit - بخش دوم

ساختن ایمیج های داکری به کمک BuildKit - بخش اول