SQL Server: (Transparent Data Encryption-Dosya / Database Bazlı Şifreleme)

25 Ekim 2020 Pazar

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.


Share/Bookmark

0 comments :