- SQL Server 2014 Standart | Enterprise Edition
- SQL Server 2016 Standart | Enterprise Edition
- SQL Server 2017 Standart | Enterprise Edition
- SQL Server 2019 Standart | Enterprise Edition
SQL Server 2014 sürümünden itibaren MSSQL Server veritabanlarımızı (database) yedeklerken şifreleme (encryption) kullanmamıza olanak sağlıyor.
Şifrelemeyi kullanma sebebimiz; backup’larımızın bulunduğu klasöre erişim sağlamış bir saldırganın backup dosyamızı kopyalasa bile içindeki verilere erişememesini sağlamaktır.
Backup Encryption Nasıl Çalışır ?
A sunucusunda bir KEY (anahtar) oluşturulur.
Bu anahtar kullanılarak şifrelemeyi sağlayan bir CERTIFICATE (Sertifika) oluşturulur.
Veritabanımızın yedeği alınırken bu sertifika kullanılır ve böylece yedek alınırken şifreleme sağlanmış olur.
B sunucusunda RESTORE (geri yükleme) işlemi yapılırken bu sertifika yüklü olmak zorundadır. Eğer yüklü değil ise alınan BACKUP bu sunucuda işlenemez.
Sertifika Oluşturma ve Encrypted Backup Alma
KEY oluşturulur.
USE master
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'C0kg3L3_51frE'
CERTIFICATE Oluşturulur.
USE master
GO
CREATE CERTIFICATE Sertifika_Ismi --Kullanılacak sertifikanın ismi
WITH SUBJECT = 'Aciklama' --Description olarak düşünülebilir
,EXPIRY_DATE = '20301231' --Bu sertifika bu tarihe kadar geçerli eğer yazılmaz ise default 1 yıldır
GO
ENCRYPTED BACKUP Alınır
USE master
GO
BACKUP DATABASE [DBADB] TO DISK = N'\\sqlbackup\DBADB_FullBackup.bak'
WITH INIT, NAME = 'DBADB-Full Database Backup', SKIP, COMPRESSION, STATS = 5, CHECKSUM
,ENCRYPTION (ALGORITHM = AES_256,SERVER CERTIFICATE = Sertifika_Ismi) --şifreleme
GO
Encrypted Backup’ın Başka Bir Sunucuda Restore Edilmesi
Şifrelenmiş bir backupın başka bir SQL Server’da restore edilmesi için o SQL Server’a da şifreleme sertifikasının yüklenmesi gerekmektedir. Aksi halde SQL Server, backup’ın içini okuyamayacaktır.
Sertifikanın diğer server’da da aktif olması için önce yedeğinin alınması ve server’a yüklenmesi gerekmektedir.
Sertifikanın Yedeğinin Alınması
USE master
GO
BACKUP CERTIFICATE Sertifika_Ismi TO FILE = 'E:\CER\Crypto.cer' --Asıl sertifika dosyası
WITH PRIVATE KEY (FILE = 'E:\CER\Crypto.pvk', --Sertifikayı şifrelemek için kullanılan anahtar
ENCRYPTION BY PASSWORD = 'Dba*_5iFr3') --Sertifikayı şifrelemek için kullanılan anahtarın şifresi
GO
Oluşturulan iki dosya diğer server’a kopyalanır.
Diğer Sunucuya Sertifikanın Yüklenmesi
USE master
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'C0kg3L3_%1frE'
GO
CREATE CERTIFICATE Sertifika_Ismi FROM FILE ='D:\CER\Crypto.cer' --Sertifikanın localde bulunduğu yer
WITH PRIVATE KEY(FILE='D:\CER\Crypto.pvk', --Sertifika anahtarının localde bulunduğu yer
DECRYPTION BY PASSWORD='Dba*_5iFr3') --Anahtarı çözmek için kullanılan şifre
GO
Bu adımdan sonra şifreli bir şekilde aldığımız backup’ı bu sunucuya restore edebiliriz.
Daha detaylı ilgilendirme için microsoftun sitesini inceleyebilirsiniz.