天天看點

SQLServer · 最佳實踐 · 透明資料加密TDE在SQLServer的應用

title: sqlserver · 最佳實踐 · 透明資料加密tde在sqlserver的應用

作為雲計算的服務提供者,我們在向使用者提供優秀的服務能力時會遇到一個合規的問題。在資料庫領域,資料是極其敏感和珍貴的,保護好資料,就如保護好企業的生命線。是以,需要采取一些預防措施來幫助保護資料庫的安全,如設計一個安全系統、加密機密資産以及在資料庫伺服器的周圍建構防火牆。但是,如果遇到實體媒體被盜的情況,惡意破壞方隻需還原或附加資料庫即可浏覽資料,或者遭遇拖庫情況。一種解決方案是加密資料庫中的敏感資料,并通過證書保護用于加密資料的密鑰。這可以防止任何沒有密鑰的人使用這些資料,但這種保護必須事先計劃。在sql server中,透明資料加密 (tde) 可以加密 sql server資料檔案,能夠有效保護好我們的資料資産。

資料庫檔案的加密在頁級别執行。已加密資料庫中的頁在寫入磁盤之前會進行加密,在讀入記憶體時會進行解密,tde 不會增加已加密資料庫的大小。tde 可對資料和日志檔案執行實時 i/o 加密和解密。這種加密使用資料庫加密密鑰,該密鑰存儲在資料庫引導記錄中以供恢複時使用。資料庫加密密鑰是使用存儲在伺服器的 master 資料庫中的證書保護的對稱密鑰,或者是由 ekm 子產品保護的非對稱密鑰。tde 保護“處于休眠狀态”的資料,即資料和日志檔案。體系如下:

SQLServer · 最佳實踐 · 透明資料加密TDE在SQLServer的應用

場景說明:

下面列舉實作的方法:首先,需要配置好使用者資料庫的鏡像:

在principal: 建立master key

先判斷是否存在master key, 如果存在可以先drop再建立,因為涉及到master key密碼需要利用,老的master key不一定記得住密碼:

在principal:建立鏡像使用的證書

在principal: 建立鏡像使用的端點

在principal: 備份master key

在principal: 備份證書

在mirror: 還原master key

在mirror: 建立證書

在mirror: 建立端點

在mirror: 備份鏡像證書

在principal: 建立端點的連接配接認證使用者

在principal: 建立鏡像的證書,以打通互相成功握手通道

在principal: 為端點授權

在mirror: 建立端點的連接配接認證使用者

在mirror: 建立鏡像的證書,以打通互相成功握手通道

在mirror: 為端點授權

在principal: 建立一個測試書庫

在principal: 設定資料庫的恢複模式為full,并備份資料庫和日志

在mirror: 還原資料庫

在mirror: 設定鏡像

在principal: 應用鏡像

在principal: 建立tde需要的證書

在principal: 在主庫使用者資料庫建立dek

在principal: 設定資料庫加密

在principal: 備份tde證書

當tde和鏡像共存時,很多步驟還是不一樣,配置也多了許多步驟,可以看出有幾個點特别注意:第一是master key的處理方式;第二是鏡像的證書和tde證書的區分;第三是鏡像資料庫tde的狀态變化。

啟用了 tde 的資料庫的備份檔案也使用資料庫加密密鑰進行加密。是以,當您還原這些備份時,用于保護資料庫加密密鑰的證書必須可用。也就是說,除了備份資料庫之外,您還要確定自己保留了伺服器證書的備份以防資料丢失。如果證書不再可用,将會導緻資料丢失。還原資料庫需要解密過程,restore database, resotore filelistonly等等,都需要先還原證書,是以備份證書和密鑰是必須的。

示例:

首先備份tde證書

備份資料庫

在需要還原的資料庫上建立tde證書

還原資料庫

事務日志

允許資料庫使用 tde 具有将虛拟事務日志的剩餘部分“清零”以強制加密下一個虛拟事務日志的效果。這可以保證在資料庫設定為加密後事務日志中不會留有明文。所有在資料庫加密密鑰更改前寫入事務日志的資料都将使用之前的資料庫加密密鑰加密。在資料庫加密密鑰修改過兩次後,必須執行日志備份才能再次對資料庫加密密鑰進行修改

tempdb系統資料庫

如果 tempdb 執行個體中的任何使用者資料庫是使用 tde 加密的,則會加密tempdb資料庫。如果取消所有資料庫加密狀态,tempdb的加密資料庫狀态不會改變。

複制

複制不會以加密形式從啟用了 tde 的資料庫中自動複制資料。如果您想保護分發和訂閱伺服器資料庫,則必須單獨啟用 tde。快照複制以及用于事務和合并複制的初始資料分發,都能夠在未加密的中間檔案(例如 bcp 檔案)中存儲資料。 在事務或合并複制期間,可以啟用加密來保護通信信道。

與filestream資料

即使啟用了 tde,也不會加密 filestream 資料。

記憶體中的oltp

可在擁有記憶體中 oltp 對象的資料庫上啟用 tde。如果啟用 tde,則記憶體中 oltp 日志記錄會被加密。如果啟用了 tde,則不對 memory_optimized_data 檔案組中的資料進行加密。