SQL Server 2014 CTP2之後公布了一項針對備份的特性,那就是原生備份加密。考慮到之前網絡上影響很壞的數據庫洩漏事件,本質上都是數據庫備份洩漏給第三方導致,SQL Server的原聲數據備份可以使得即使備份本身被盜,在沒有加密證書的情況下也無法使用,這有效的解決了上述數據洩漏問題。
原先的解決方案
在SQL Server 2014之前,如果希望實現對備份實現加密,會通過如下兩種方式之一實現:
使用透明數據加密(TDE)加密整個數據庫,從而使得備份和事務日志也會被加密
使用第三方備份加密工具
首先來談一下使用透明數據加密,如果僅僅是為了對備份加密,使用TDE有點過於大材小用,因為使用TDE會導致數據庫本身和日志被加密,對CPU帶來額外開銷,此外,使用TDE加密過的數據庫如果使用備份壓縮,壓縮比率會非常低。如果使用SQL Server 2014的原生備份加密,則無需對整個數據庫進行加密,備份僅僅在被寫入磁盤之前被加密。原聲備份加密如果結合備份壓縮功能,那麼會先進行壓縮,再加密,從而得到非常高的壓縮比率。
其次使用第三方備份加密工具需要額外的費用,並且在執行過程中也會有比較繁瑣的操作成本,使用第三方備份當需要對備份到Azure的備份進行加密時,將會非常繁瑣,而使用原生備份加密,可以直接對備份到Azure的備份進行加密,從而對OFF-SITE備份提供了額外的安全性。
使用原生數據加密
在SQL Server 2014 企業版、BI版、標准版中包括了該功能。使用備份加密需要有二個先決條件:
存在證書或非對稱密鑰
選擇備份加密算法
下面使用原聲數據加密對備份加密,首先建立證書:
CREATECERTIFICATE BackupCertificate WITHSUBJECT = 'Backup Encryption Certificate'; GO
建立完成後,直接使用證書進行備份加密:
BACKUP DATABASETestBK TODISK ='C:\Test_Encrypted.bak'WITHCOMPRESSION, ENCRYPTION (ALGORITHM = AES_256, SERVER CERTIFICATE = BackupCertificate);
結果如圖1所示,在圖1中,注意到SQL Server給出了提示信息要備份證書以及證書的私鑰,否則數據將無法使用。通常在最佳實踐中,當證書創建時就應該備份,數據安全永遠是第一位的。
圖1.提示備份證書私鑰
在圖1中,注意到備份指定的加密算法是AES_256算法。SQL Server 2014提供了4種對備份加密的算法,分別是AES128、AES196、AES256和三重DES算法。
在SQL Server 2014的Management Studio中也對原聲備份加密提供了GUI的支持,如圖2所示。
圖2.GUI對原生備份加密的GUI支持
前文提到,使用原生備份加密可以使得備份壓縮幾乎不受加密的影響,下面備份一個2.5G左右的測試庫,指定壓縮備份,第一個例子僅使用壓縮備份,第2-4例子使用壓縮備份+不同的壓縮算法,測試語句如圖3所示。
圖3.測試語句