iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 5
1
Security

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

[Day05] 資料儲存安全(SQL透明資料加密)

前兩天在戍衛京師周邊的任務中,我們分別使用雜湊(hash)和加密(encrypt)來保護特定資料表下的敏感性欄位,今天從另外一個儲存層面想,如果想避免資料庫伺服器中的DB實體檔案(.bak、.mdf、.ndf、.ldf)被不明原因攜出後迅速外洩,在資料庫層級可以考慮使用SQL Server 2008推出的TDE(Transparent Data Encryption),中文是透明資料加密。

透明資料的加密是屬於資料庫層級(Database level)的保護,主要在Data及Log Page層的I/O執行加密, SQL Server會在Page Buffer flush到硬碟前加密;從磁碟讀取資料時,Database Engine也會在讀取到記憶體(data buffer)時進行解密。

透明資料加密是企業版本(Enterprise Edition)以上的功能,雖然我們從AP層面(ADO.NET,SSMS,Sqlcmd)都能清澈的看到資料,但實體磁碟儲存及tempdb都是加密後的狀態,維護著一定的機密性。

資料庫備份

在執行透明資料加密前,我們先把資料庫備份。

BACKUP DATABASE [SecurityDB] TO  DISK = N'D:\backup\SecurityDB_ORIG.bak' 
WITH NOFORMAT, NOINIT,  
NAME = N'SecurityDB-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, COMPRESSION,  STATS = 10
GO

建立資料庫加密金鑰(DEK)、存放加密金鑰的憑證及Master Key

--1.建立MASTER KEY 
use master  
create master key encryption by 
password= 'imMKpassword1' 
go 
 
--2.建立憑證 
use master  
create certificate [Cert] 
with subject = 'Instance層級測試憑證' 

建立資料庫加密金鑰,這邊選擇AES256演算法,最後啟用資料庫SecurityDB的加密功能。

--3.建立資料庫加密金鑰 
use [SecurityDB] 
create database encryption key 
with algorithm=AES_256 
encryption by server certificate [Cert] 
 
--4.啟用資料庫加密 
alter database [SecurityDB] 
set encryption on 

http://ithelp.ithome.com.tw/upload/images/20161220/201034347UJgXFbVoT.png

資料庫實體檔案


偷偷搬來本機:

http://ithelp.ithome.com.tw/upload/images/20161220/20103434oSvlCUpMhW.png

附加資料庫(attach)


試試看附加.mdf資料庫實體檔案!

http://ithelp.ithome.com.tw/upload/images/20161220/20103434cQaIspUc00.png

附加失敗!表示實體檔案初步防護成功。

還原資料庫(restore)


試試看還原資料庫備份,先備份資料庫

BACKUP DATABASE [SecurityDB] TO  DISK = N'D:\Backup\SecurityDB.bak'  
WITH NOFORMAT, NOINIT,  NAME = N'SecurityDB-完整 資料庫 備份',  
SKIP, NOREWIND, NOUNLOAD,  STATS = 10 
GO 

還原資料庫:

http://ithelp.ithome.com.tw/upload/images/20161220/20103434vVzXAKVd6S.png

失敗!在備份檔案(.bak)的初步防護也成功。

小潔

優點

  • 減少因備份檔案(.bak)或實體檔案(.mdf .ldf .ndf)被盜所造成的風險。
  • 如有使用資料庫鏡像或記錄傳送功能,在資料傳輸過程會加密 。

缺點

  • 所有檔案群組都不能設置唯讀(readonly)。
  • 備份壓縮的壓縮比大幅降低,接近沒有壓縮。
  • 資料庫中只要有一個database啟用透明資料加密, tempdb也會啟用加密,可能對效能帶來副作用。

啟用透明資料前後備份(.bak)檔案
http://ithelp.ithome.com.tw/upload/images/20161220/20103434vNgUZtAbrQ.jpg

參考

透明資料加密 (TDE)
https://msdn.microsoft.com/zh-tw/library/bb934049.aspx


義大利米蘭市女警
http://ithelp.ithome.com.tw/upload/images/20161220/20103434fqPw0zZ054.jpg
2011.10 攝於Milano,italy


上一篇
[Day04] 資料儲存安全(SQL加密函數)
下一篇
[Day06] 資料儲存安全(SQL備份檔案加密)
系列文
資料安全與簡單加密演算法見面會 30

尚未有邦友留言

立即登入留言