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版、標准版中包括了該功能。使用備份加密需要有二個先決條件:
存在證書或非對稱密鑰 選擇備份加密算法
下面使用原聲數據加密對備份加密,首先建立證書:
CREATE CERTIFICATE BackupCertificate
WITH SUBJECT = 'Backup Encryption Certificate';
GO
建立完成後,直接使用證書進行備份加密:
BACKUP DATABASE TestBK TO DISK ='C:\Test_Encrypted.bak'WITH COMPRESSION, 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.測試語句
圖4看到,使用備份加密對數據庫備份大小幾乎毫無影響。
圖4.不同的加密算法對備份壓縮幾乎毫無影響
圖5.加密算法對備份的影響
由圖4和圖5的結論可以得出,無論使用了何種加密算法,加密對壓縮比率幾乎毫無影響。
原生加密備份對性能的影響
使用原生備份加密是一項極大的消耗CPU的操作,下面在圖3的基礎上進一步添加不壓縮備份的情況,備份的時間如圖6所示。
圖6.不同壓縮算法下備份時間
由圖6測試可以看出,除了3DES算法需要消耗的時間較長之外,AES算法在CPU不成為備份機瓶頸的情況下,對備份時間並無太大的影響。但加密對具體環境的影響會因環境而已,不同環境下的測試結果呈現可能會大相徑庭,如果擔心原生加密備份對性能產生影響,請先在具體環境進行測試。
小結
SQL Server原聲備份加密對數據安全提供了非常好的解決方案。使用原生備份加密基本不會增加備份文件大小,並且打破了使用透明數據加密後幾乎沒有壓縮率的窘境。使用原生備份加密無論在將數據備份到異地數據中心,還是將數據備份到雲端,都可以以非常低的成本對數據提供額外的安全保障。