iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 6
2
Security

資料安全與簡單加密演算法見面會 系列 第 6

[Day06] 資料儲存安全(SQL備份檔案加密)

有些時候,為了節省storage空間,但又需要符合法令的保存期限或是備援需要,我們會將資料庫備份檔案(.bak)放置到其他媒體上作週期性或永久的保留。

可以儲存的媒體像是磁帶(Tape)、硬碟(Disk)甚至直接備份上到雲端(cloud)等,但因為備份檔案只要出了嚴密防衛的京城就會出現更多風險要管理,另外昨天複習到的透明資料加密(TDE)也有一些壓縮及效能的副作用(side effect),如果剛好只想保護資料庫備份檔案(.bak),也許我們可以透過備份加密碼或是備份加密兩種方式。

備份檔案加密碼


本來想實作密碼的,但一查發現,備份檔案加密碼在SQL Server 2012已經被取消。

從 SQL Server 2012 開始, PASSWORD 和 MEDIAPASSWORD 選項無法再用於建立備份。

為容相同之前版本的備份,只剩下還原時可以使用密碼開啟舊版本SQL建立的備份。

好,剩下加密這一種方法了。

備份檔案加密

加密備份是SQL Server 2014新功能,標準版、企業版都支援:

Msdn上提到的優點:

加密資料庫備份能幫助您確保資料的安全:SQL Server 提供建立備份時加密備份資料的選項。
加密亦可用於使用 TDE 加密的資料庫。
SQL Server Managed Backup to Microsoft Azure建立的備份支援加密,可提供離站備份額外的安全性。
此功能支援最高 AES 256 位元的多個加密演算法。 如此可提供您選項,選取符合您需求的演算法。
您可以將加密金鑰與延伸金鑰管理 (EKM) 提供者整合。

好!來捲開衣袖動手實作!

首先先關閉昨天複習的透明資料加密(TDE)

alter database [SecurityDB]
set encryption off 

備份加密


然後將SecurityDB進行備份,重點是進行加密,這邊我們選擇較高強度的AES256加密演算法。
(因為昨天複習透明資料加密(TDE)時已經在Master Database建立好伺服器憑證了,這邊可以一起使用)

BACKUP DATABASE [SecurityDB]
TO DISK = N'C:\SQL\SecurityDB.bak'
WITH   
  COMPRESSION,
  ENCRYPTION
   (
   ALGORITHM = AES_256,
   SERVER CERTIFICATE = Cert
   ),
  STATS = 10
GO

偷搬


如果把.bak搬到第二台db去還原,會出現以下錯誤。

http://ithelp.ithome.com.tw/upload/images/20161221/20103434MLTFiH27i4.png

沒辦法還原,初步的防護算是成功了,不過有時候有個萬一,真的想到其他資料庫想還原時要如何處理ㄋ?

還原加密的備份檔


如果想要第二台資料庫還原資料庫:

首先要備份第一台存放憑證及與保護憑證的private key 。

--備份憑證 
USE master; 
BACKUP CERTIFICATE cert  
  TO FILE = N'c:\sql\dbcert.cer' 
        WITH PRIVATE KEY 
        ( 
        FILE = N'c:\sql\dbcert.pvk', 
        ENCRYPTION BY PASSWORD = '1qaz2wsx!' 
        ); 
GO 

接著到第二台匯入憑證

這一個步驟應該可有可無,如果原本第二台資料庫原本就有Master key,這個步驟可以省略。

USE master; 
GO 
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'imMKpassword2'; 
GO 

匯入伺服器憑證到Master DB

USE master; 
CREATE CERTIFICATE cert 
    FROM FILE = 'D:\backup\dbcert.cer' 
WITH PRIVATE KEY (FILE = 'D:\backup\dbcert.pvk', DECRYPTION BY PASSWORD = '1qaz2wsx!') 

然後重新Restore DB

http://ithelp.ithome.com.tw/upload/images/20161221/20103434Q7yGrkANIY.png

參考

備份加密
https://msdn.microsoft.com/zh-tw/library/dn449489.aspx


法蘭克福警車
http://ithelp.ithome.com.tw/upload/images/20161221/20103434sZbBN0MeHi.jpg
2015.12攝於法蘭克福,Germany


上一篇
[Day05] 資料儲存安全(SQL透明資料加密)
下一篇
[Day07] 資料儲存安全(SQL Always Encrypted)上
系列文
資料安全與簡單加密演算法見面會 30

尚未有邦友留言

立即登入留言