TDE ilk olarak SQL Server 2008 ‘in Enterprise
ve Developer sürümlerinde karşımıza çıkmıştı. Bu özellik sayesinde
Database’lerimizi ve Backup’larımızı encrypt edebiliyoruz. TDE
yapılandırmasında veya sonrasında programlama tarafında herhangi bir code değişikliğine
gerek duyulmamaktadır. TDE enable edildiği andan itibaren database,
background’da encrypt edilir. Bu süreçte, connection pooling ‘de herhangi bir
reset’lenme yaşanmaz ve client’ların connection’larının sürekliliği korunur.
Database, encrypt edilirken bu süreç page level’da oluşturulur. Bu yüzden Data
ve Log dosylarında herhangi bir büyüme oluşmaz.
TDE, process esnasında database boot record
altında tutulan Database Encryption Key (DEK) ile işlem görür. DEK, master
database’i altında tutulan sertifika ile korunan bir Symmetric Key dir. DEK
sayesinde AES ve 3DES algoritmalarında encryption yapılabilmektedir.
TDE oluşturulduktan sonra kesinlikle private
key’in tutulduğu sertifikanın backup alınması gerekmektedir. Eğer TDE enabled
olan bir Database’in backup’ını başka bir sunucuya restore etmek isterseniz, bu
sertifikaya gereksinim duyulur veya mevcut sertifikada bir problem olduğu
taktirde hicbir şekilde Database’inize erişemezsiniz.
TDE ‘yi oluşturmak için aşağıdaki adımları
izlemeliyiz;
1. Master Key ‘in oluşturulması
2. Sertifikanın oluşturulması
3. Encryption Key ‘in oluşturulup sertifika ile
ilişkilendirilmesi
4. Database üzerinde encryption ‘ın enable
edilmesi
Yukarıdaki adımları izleyerek aşağıdaki gibi
TDE ‘yi enable edelim;
USE [master]
|
GO
|
|
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Sifre_@Deneme175'
|
GO
|
İkinci adım olarak sertifikamızı oluşturup,
Master Key tarafından korunmasını sağlayalım.
USE [master]
|
GO
|
|
CREATE CERTIFICATE
TDETest WITH SUBJECT = 'TDE Sertifikasi'
|
GO
|
Oluşturulan sertifikanın Master Key tarafından
korunduğunun teyidini alalım.
SELECT name,
pvt_key_encryption_type_desc
|
FROM sys.certificates WHERE [name]
= 'TDETest'
|
Bir sonraki adım olarak Database’imiz için
Database Encryption Key (DEK) oluşturuyoruz.
Use [SQLBilgiguvenlik]
|
GO
|
|
CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM
= AES_256
|
ENCRYPTION BY SERVER
CERTIFICATE TDETest
|
GO
|
DEK ‘i oluşturduğumuzda aşağıdaki gibi bir
uyarı mesajı karşımıza çıkıyor.
Warning: The certificate used for encrypting
the database encryption key has not been backed up. You should immediately back
up the certificate and the private key associated with the certificate. If the
certificate ever becomes unavailable or if you must restore or attach the
database on another server, you must have backups of both the certificate and
the private key or you will not be able to open the database.
Yukarıda da değindiğimiz gibi kesinlikle bir
sonraki adım olarak Sertifikamızı ve DEK ‘i yedeklememiz gerekiyor. Bunun için
aşağıdaki gibi Sertifikamızın ve Database Encryption Key ‘in backup ‘ını
alıyoruz.
USE [master]
|
GO
|
|
BACKUP CERTIFICATE TDETest
|
TO FILE
= 'C:\TDETest_Key\TDETest_Sertifika.cert'
|
WITH PRIVATE KEY (FILE
= 'C:\TDETest_Key\TDETest_EncryptionPrivateKey.key', ENCRYPTION BY PASSWORD ='Sifre_@Deneme175')
|
GO
|
Son adım olarak Database’imiz üzerinde TDE ‘yi
enable ediyoruz.
USE [master]
|
GO
|
|
ALTER DATABASE [SQLBilgiguvenlik] SET ENCRYPTION ON
|
Artık Database ‘imiz encrypt edilmiş oldu. TDE
‘yi en iyi şekilde test etmek için encrypt edilmiş olan Database ‘imizin backup
‘ını alıp farklı bir sunucuya restore etmeyi deneyelim.
USE [master]
|
GO
|
|
BACKUP DATABASE [SQLBilgiguvenlik]
|
TO DISK='C:\Backup\SQLBilgiguvenlik_FullBackup.bak'
|
GO
|
Farklı bir sunucu üzerinde restore ediyoruz.
USE [master]
|
GO
|
|
RESTORE DATABASE [SQLBilgiguvenlik]
|
FROM DISK='D:\SQLBilgiguvenlik_FullBackup.bak'
|
GO
|
Restore etmeye çalıştığımızda aşağıdaki gibi
bir hata mesajı ile karşılaşıyoruz.
Msg 33111, Level 16, State 3, Line 2
Cannot find server certificate with thumbprint ’0xB21CB3194587F6921BA66705B2E61CD08912E85A’.
Msg 3013, Level 16, State 1, Line 2
RESTORE DATABASE is terminating abnormally.
Cannot find server certificate with thumbprint ’0xB21CB3194587F6921BA66705B2E61CD08912E85A’.
Msg 3013, Level 16, State 1, Line 2
RESTORE DATABASE is terminating abnormally.
Bu şekilde bir hata mesajını almamız çok
normal. TDE ‘nin zaten burada çalıştığını anlamış oluyoruz. Sertifikamız yoksa
hicbir şekilde Database ‘e erişim sağlanamıyor. Bunun için almış olduğumuz
backup ‘dan database ‘imizi restore etmek istediğimiz sunucuya sertifikamızı
restore ediyoruz. Bunun için hem Sertifikamızı hem de Private Key ‘imizi
kullanmamız gerekiyor
USE [master]
|
GO
|
|
CREATE CERTIFICATE TDETest
|
FROM FILE
= 'D:\TDETest_Sertifika.cert'
|
WITH PRIVATE KEY (FILE
= 'D:\TDETest_EncryptionPrivateKey.key',
|
DECRYPTION BY PASSWORD = 'Sifre_@Deneme175')
|
GO
|
Hiç yorum yok:
Yorum Gönderme