2020最新 騰訊雲數據庫團隊:SQL Server 數據加密功能解析

數據加密是數據庫被**、物理介質被盜、備份被竊取的最後一道防線;數據加密,一方面解決數據被竊取安全問題,另一方面有關法律要求強制加密數據;SQL Server 的數據加密相較於其他數據庫,功能相對完善,加密方法較多。

通常來講,數據加密分爲對稱加密和非對稱加密。對稱加密:加密與解密使用同一**,**需要傳輸,安全性較弱,但性能較非對稱要好。非對稱加密:加密與解密使用不同**(公鑰和私鑰),較對稱**安全性較好,但是算法較複雜,帶來性能上的損失。因此,折中的方法是使用對稱**加密數據,使用非對稱**加密對稱**。這樣既保證高性能,又提高**的可靠性。

同樣,SQL Server 就使用了折中的方法,所以SQL Server 加密功能包含2個部分:數據加密和**管理

一.數據加密

說道數據加密,我們不得不說下加密算法,SQL Server支持多種加密算法: 

二.**管理:

1.SQL Server加密層次結構

由圖可以看出,加密是分層級的。每一個數據庫實例都擁有一個服務主**(Service Master Key),這個**是實例的根**,在實例安裝的時候自動生成,其本身由Windows提供的數據保護API進行保護(Data Pertection API),服務主**除了爲其子節點提供加密服務之外,還用於加密一些實例級別的信息,比如實例的登錄名密碼或者鏈接服務器的信息。

在服務主**之下的是數據庫主**(Database Master Key),這個**由服務主**進行加密。這是一個數據庫級別的**,可以用於爲創建數據庫級別的證書或非對稱**提供加密,每一個數據庫只能有一個數據庫主**。

EKM模塊,這個比較特別,全稱可擴展**管理模塊,該功能增強sqlserver**管理的能力,允許將**存儲到數據庫之外,包括一些硬件,如智能卡、USB設備或硬件安全模塊(HSM);並且允許使用第三方產品來管理**和進行加密;另外,有條件的可以使用更高性能的HSM模塊來加解密,減少加解密上性能的損失。

2.SQL Server加密方式

對象定義加密

未保證觸發器、存儲過程、視圖等定義信息,我們可以在定義sqlserver對象的時候添加WITH ENCRYPTION字段來加密對象。

列數據加密

通過函數加密表中的某一列數據。可以通過密碼、對稱**、非對稱**、證書等4中方式加密。其中,還包括 帶有驗證器的加密函數,驗證器用來解決密文替換問題,驗證器一般選用不更改獨一無二的id,這樣就算密文替換,驗證器不對,一樣失敗。

連接加密

通過證書的方式對ssl連接加密,一般用於鏡像,主從機器之前的連接就是通過這種方式。

TDE(透明數據加密)

透明數據加密,顧名思義,是在用戶不感知的情況下完成加解密操作。 它的加密是在頁級別進行,是在寫入磁盤前加密,讀入內存時解密,針對數據和日誌文件,做到實時I/O加密,並且備份文件也會一同加密。 **存在數據庫引導記錄中,收到證書或者非對稱**的保護,也可以與EKM模塊一同使用。官方說法,額外佔用3%-5%的cpu資源。 TDE也有一些缺點: 壓縮率小,由於它是先加密再壓縮的,所以無法顯著壓縮備份。 備份同樣是加密的,所有恢復的時候要小心,注意備份證書和**,才能在另個實例中還原數據庫 性能有一定損耗

備份加密(2014)

支持備份的過程中進行加密,並且支持先壓縮在加密,保持高壓縮比,打破了使用透明數據加密後幾乎沒有壓縮率的窘境。 因此,使用原生備份加密無論在將數據備份到異地數據中心,還是將數據備份到雲端,都能夠以非常低的成本對數據提供額外的安全保障。

全程加密(2016)

全程加密,數據永遠是加密狀態,你可以在加密數據上執行操作,無需先對它們解密,也就是說加密的敏感信息不會有機會變爲明文。 全程加密針對列做處理,在創建列主**,列加***後,可以在創建表的時候設置列加密。 加密模式分爲兩種:確定型加密與隨機型加密。 確定型加密能夠確保對某個值加密後的結果是始終相同的,這就允許使用者對該數據列進行等值比較、連接及分組操作。確定型加密的缺點在於有可能揣測出原文,而隨機型加密能夠保證某個給定值在任意兩次加密後的結果總是不同的,從而杜絕了猜出原值的可能性。官方建議需要搜索和分組的列使用確定性加密,而註釋和其他敏感不會進行搜索分組的信息使用隨機性加密。 最後附上TDE開通示例: 

【騰訊雲新用戶3600元優惠券,老用戶可以註冊新賬號領取】