TDE (Transparent Data Encryption) yöntemiyle, diskteki page’lere encyrpt edilerek yazılan veriler, memory’de decrypt şekilde tutulurlar. Bu durum verinin boyutunda bir değişikliğe sebep olmazken CPU kullanımını (%5-%10 civarı) ve index bozulma hızını artırabilir. Eğer key’ler veya sertifikalar daha sonra kullanılmak üzere yedeklenmemişse, Server seviyesinde oluşacak bir felaket durumundan sonra verilere erişilemez.
Öncelikle TDE yöntemiyle şifreleyeceğimiz bir veri tabanı oluşturalım.
CREATE DATABASE TDE_DB
TDE encryption için master veri tabanında üzerinde TDE için kullanılacak “Database Master Key"i oluşturalım. “Service Master Key” bu keyi korumaktadır.
USE master
CREATE MASTER KEY ENCRYPTION BY PASSWORD=’'pass@word1'
Oluşturduğumuz bu DMK ile korunan bir de server “Certificate” oluşturalım.
CREATE CERTIFICATE tde_Cert WITH SUBJECT='TDE sertifikasi'
Şifrelemek istediğimiz veri tabanını kullanıma alarak, TDE işlemi için gerekli olan “Data Encrption Key”i üreteceğiz.
USE TDE_DB GO
TDE işleminde kullanılacak "Database Encryption Key" oluşturalım. Bu key yukarıdaki “tde_Cert” tarafından korunacaktır. İstenirse server “Certificate” yerine server “Asymmetric Key” de kullanılabilir.
CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM=AES_128 ENCRYPTION BY SERVER CERTIFICATE tde_Cert
Bu işlemden sonra çıkan uyarıyı göz ardı etmeyip Certificate ve Private Keyin yedeğini almalıyız. Aksi halde bir felaket durumunda veri tabanını tekrar açıp kullanamayabiliriz.
USE master
BACKUP CERTIFICATE tde_Cert TO FILE ='C:\TDEBackups\tde_Cert.cer' WITH PRIVATE KEY (FILE ='C:\TDEBackups\tde_Cert.pvk', ENCRYPTION BY PASSWORD=N'pass@word1' )
Daha sonra bu sertifika şu şekilde yedekten tekrar üretilebilir.
USE master
CREATE CERTIFICATE tde_Cert FROM FILE= 'C:\TDEBackups\tde_Cert.cer'
WITH PRIVATE KEY ( FILE ='C:\TDEBackups\tde_Cert.pvk', DECRYPTION BY PASSWORD='pass@word1' )
Bu sertifika farklı bir serverda üretilecekse önce master database’inde DMK(Database Master Key) oluşturulmalıdır.
Bundan sonra TDE_DB isimli veri tabanımızda Transparent Data Encrytion’ı şu şekilde aktif edebiliriz.
USE TDE_DB
ALTER DATABASE TDE_DB SET ENCRYPTION ON
Artık veri tabanımız yeni bir servera taşındığında okunamayacak, okunabilmesi için yedeğini aldığımız sertifikaya ihtiyaç duyacaktır.
Yapılan tüm işlemleri geri almak istersek şu sırada keyler’i ve certificate’i kaldırabiliriz.
Önce TDE’yi pasif hale getirelim.
USE TDE_DB
ALTER DATABASE TDE_DB SET ENCRYPTION OFF
Database Encrption Key’i kaldıralım.
DROP DATABASE ENCRYPTION KEY
Server Certificate’i kaldıralım.
USE master
DROP CERTIFICATE tde_Cert
Master databaseindeki Database Master Key’i kaldıralım.
DROP MASTER KEY
Şifreleme yaptığımız serverda sorgu sonuçlarını decrypt edilmiş olarak göreceğiz. Ancak veri tabanımız yeni bir servera taşındığında, şifrelemede kullandığımız Server Certificate olmadan kullanılamayacaktır.
0 comments :
Yorum Gönder