了解透明数据加密 (TDE)
您可以采取一些預(yù)防措施來幫助保護數(shù)據(jù)庫的安全,如設(shè)計一個安全系統(tǒng)、加密機密資產(chǎn)以及在數(shù)據(jù)庫服務(wù)器的周圍構(gòu)建防火墻。但是,如果遇到物理介質(zhì)(如驅(qū)動器或備份磁帶)被盜的情況,惡意破壞方只需還原或附加數(shù)據(jù)庫即可瀏覽數(shù)據(jù)。一種解決方案是加密數(shù)據(jù)庫中的敏感數(shù)據(jù),并通過證書保護用于加密數(shù)據(jù)的密鑰。這可以防止任何沒有密鑰的人使用這些數(shù)據(jù),但這種保護必須事先計劃。
“透明數(shù)據(jù)加密”(TDE) 可對數(shù)據(jù)和日志文件執(zhí)行實時 I/O 加密和解密。這種加密使用數(shù)據(jù)庫加密密鑰 (DEK),該密鑰存儲在數(shù)據(jù)庫引導(dǎo)記錄中以供恢復(fù)時使用。DEK 是使用存儲在服務(wù)器的 master 數(shù)據(jù)庫中的證書保護的對稱密鑰,或者是由 EKM 模塊保護的非對稱密鑰。TDE 保護“處于休眠狀態(tài)”的數(shù)據(jù),即數(shù)據(jù)和日志文件。它提供了遵從許多法律、法規(guī)和各個行業(yè)建立的準則的能力。軟件開發(fā)人員籍此可以使用 AES 和 3DES 加密算法來加密數(shù)據(jù),且無需更改現(xiàn)有的應(yīng)用程序。
| TDE 不提供跨通信信道加密。有關(guān)如何跨通信信道加密數(shù)據(jù)的詳細信息,請參閱加密與 SQL Server 的連接。 |
對數(shù)據(jù)庫實施保護措施后,可以通過使用正確的證書還原此數(shù)據(jù)庫。有關(guān)證書的詳細信息,請參閱 SQL Server 證書和非對稱密鑰。
| 啟用 TDE 時,應(yīng)該立即備份證書和與證書相關(guān)聯(lián)的私鑰。如果證書變?yōu)椴豢捎?#xff0c;或者如果必須在另一臺服務(wù)器上還原或附加數(shù)據(jù)庫,則必須同時具有證書和私鑰的備份,否則將無法打開該數(shù)據(jù)庫。即使不再對數(shù)據(jù)庫啟用 TDE,也應(yīng)該保留加密證書或非對稱密鑰。即使數(shù)據(jù)庫沒有加密,數(shù)據(jù)庫加密密鑰可能也保留在數(shù)據(jù)庫中,執(zhí)行某些操作時可能需要訪問這些加密密鑰。 |
數(shù)據(jù)庫文件的加密在頁級執(zhí)行。已加密數(shù)據(jù)庫中的頁在寫入磁盤之前會進行加密,在讀入內(nèi)存時會進行解密。TDE 不會增加已加密數(shù)據(jù)庫的大小。有關(guān)數(shù)據(jù)庫頁的詳細信息,請參閱頁和區(qū)。
下圖顯示了 TDE 加密體系結(jié)構(gòu):
使用透明數(shù)據(jù)加密若要使用 TDE,請按以下步驟操作。
-
創(chuàng)建主密鑰
-
創(chuàng)建或獲取由主密鑰保護的證書
-
創(chuàng)建數(shù)據(jù)庫加密密鑰并通過此證書保護該密鑰
-
將數(shù)據(jù)庫設(shè)置為使用加密
下面的示例演示如何使用安裝在名為 MyServerCert 的服務(wù)器上的證書加密和解密 AdventureWorks2008R2 數(shù)據(jù)庫。
復(fù)制 USE master; GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>'; go CREATE CERTIFICATE MyServerCert WITH SUBJECT = 'My DEK Certificate'; go USE AdventureWorks2008R2; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER CERTIFICATE MyServerCert; GO ALTER DATABASE AdventureWorks2008R2 SET ENCRYPTION ON; GO加密和解密操作由 SQL Server 安排在后臺線程中執(zhí)行。您可以使用本主題后面部分顯示的列表中的目錄視圖和動態(tài)管理視圖查看這些操作的狀態(tài)。
| 啟用了 TDE 的數(shù)據(jù)庫的備份文件也使用數(shù)據(jù)庫加密密鑰進行加密。因此,當(dāng)您還原這些備份時,用于保護數(shù)據(jù)庫加密密鑰的證書必須可用。也就是說,除了備份數(shù)據(jù)庫之外,您還要確保自己保留了服務(wù)器證書的備份以防數(shù)據(jù)丟失。如果證書不再可用,將會導(dǎo)致數(shù)據(jù)丟失。有關(guān)詳細信息,請參閱 SQL Server 證書和非對稱密鑰。 |
TDE 證書必須使用數(shù)據(jù)庫主密鑰加密才能被下列語句接受。如果它們僅用密碼加密,這些語句將拒絕將它們視為加密程序。
| 在 TDE 使用證書之后將證書改為用密碼保護將會導(dǎo)致數(shù)據(jù)庫在重新啟動后無法訪問。 |
下表提供了 TDE 命令和函數(shù)的鏈接和說明。
| CREATE DATABASE ENCRYPTION KEY (Transact-SQL) | 創(chuàng)建一個用于加密數(shù)據(jù)庫的密鑰。 |
| ALTER DATABASE ENCRYPTION KEY (Transact-SQL) | 更改用于加密數(shù)據(jù)庫的密鑰。 |
| DROP DATABASE ENCRYPTION KEY (Transact-SQL) | 刪除用于加密數(shù)據(jù)庫的密鑰。 |
| ALTER DATABASE SET 選項 (Transact-SQL) | 介紹用來啟用 TDE 的 ALTER DATABASE 選項。 |
下表顯示了 TDE 目錄視圖和動態(tài)管理視圖。
| sys.databases (Transact-SQL) | 顯示數(shù)據(jù)庫信息的目錄視圖。 |
| sys.certificates (Transact-SQL) | 顯示數(shù)據(jù)庫中的證書的目錄視圖。 |
| sys.dm_database_encryption_keys (Transact-SQL) | 提供有關(guān)數(shù)據(jù)庫中使用的加密密鑰的信息以及數(shù)據(jù)庫加密狀態(tài)的動態(tài)管理視圖。 |
如上表中所述,TDE 的每項功能和每個命令都有各自的權(quán)限要求。
查看 TDE 所涉及的元數(shù)據(jù)要求擁有對證書的 VIEW DEFINITION 權(quán)限。有關(guān)詳細信息,請參閱 VIEW DEFINITION 權(quán)限。
注意事項當(dāng)進行數(shù)據(jù)庫加密操作的重新加密掃描時,將禁用對數(shù)據(jù)庫的維護操作。?您可以使用數(shù)據(jù)庫的單用戶模式設(shè)置來執(zhí)行維護操作。有關(guān)詳細信息,請參閱如何將數(shù)據(jù)庫設(shè)置為單用戶模式 (SQL Server Management Studio)。
可以使用 sys.dm_database_encryption_keys 動態(tài)管理視圖來確定數(shù)據(jù)庫加密狀態(tài)。有關(guān)詳細信息,請參閱本主題前面的“目錄視圖和動態(tài)管理視圖”部分。
在 TDE 過程中,數(shù)據(jù)庫中的所有文件和文件組都進行加密。如果將數(shù)據(jù)庫中的任何文件組標(biāo)記為 READ ONLY,數(shù)據(jù)庫加密操作將會失敗。
如果某個數(shù)據(jù)庫正在用于數(shù)據(jù)庫鏡像或日志傳送,則兩個數(shù)據(jù)庫都將進行加密。日志事務(wù)將以加密形式在它們之間發(fā)送。
| 當(dāng)數(shù)據(jù)庫設(shè)置為加密時,將加密所有新的全文索引。以前創(chuàng)建的全文索引將在升級期間導(dǎo)入,在將數(shù)據(jù)加載到 SQL Server 后,將對這些索引進行 TDE。對列啟用全文索引可導(dǎo)致在全文索引掃描期間將該列數(shù)據(jù)以純文本方式寫入磁盤。建議不要對已加密的敏感數(shù)據(jù)創(chuàng)建全文索引。 |
與未加密數(shù)據(jù)相比,同樣的加密數(shù)據(jù)的壓縮率要小得多。如果使用 TDE 對數(shù)據(jù)庫進行加密,備份壓縮將無法顯著壓縮備份存儲。因此,不建議將 TDE 與備份壓縮一起使用。
限制
在初始數(shù)據(jù)庫加密、密鑰更改或數(shù)據(jù)庫解密期間,不允許執(zhí)行下列操作:
-
從數(shù)據(jù)庫中的文件組中刪除文件
-
刪除數(shù)據(jù)庫
-
使數(shù)據(jù)庫脫機
-
分離數(shù)據(jù)庫
-
將數(shù)據(jù)庫或文件組轉(zhuǎn)換為 READ ONLY 狀態(tài)
在執(zhí)行 CREATE DATABASE ENCRYPTION KEY、ALTER DATABASE ENCRYPTION KEY、DROP DATABASE ENCRYPTION KEY 或 ALTER DATABASE...SET ENCRYPTION 語句期間,不允許執(zhí)行下列操作。
-
從數(shù)據(jù)庫中的文件組中刪除文件。
-
刪除數(shù)據(jù)庫。
-
使數(shù)據(jù)庫脫機。
-
分離數(shù)據(jù)庫。
-
將數(shù)據(jù)庫或文件組轉(zhuǎn)換為 READ ONLY 狀態(tài)。
-
使用 ALTER DATABASE 命令。
-
啟動數(shù)據(jù)庫或數(shù)據(jù)庫文件備份。
-
啟動數(shù)據(jù)庫或數(shù)據(jù)庫文件還原。
-
創(chuàng)建快照。
下列操作或條件將阻止執(zhí)行 CREATE DATABASE ENCRYPTION KEY、ALTER DATABASE ENCRYPTION KEY、DROP DATABASE ENCRYPTION KEY 或 ALTER DATABASE...SET ENCRYPTION 語句。
-
數(shù)據(jù)庫為只讀或包含任何只讀文件組。
-
正在執(zhí)行 ALTER DATABASE 命令。
-
正在進行任何數(shù)據(jù)備份。
-
數(shù)據(jù)處于脫機或還原狀態(tài)。
-
正在創(chuàng)建快照。
-
數(shù)據(jù)庫維護任務(wù)。
當(dāng)創(chuàng)建數(shù)據(jù)庫文件時,如果啟用了 TDE,則即時文件初始化功能不可用。
透明數(shù)據(jù)加密與事務(wù)日志
允許數(shù)據(jù)庫使用 TDE 具有將虛擬事務(wù)日志的剩余部分“清零”以強制加密下一個虛擬事務(wù)日志的效果。這可以保證在數(shù)據(jù)庫設(shè)置為加密后事務(wù)日志中不會留有明文??赏ㄟ^查看 sys.dm_database_encryption_keys 視圖中的 encryption_state 列來確定日志文件加密狀態(tài),如以下示例所示:
復(fù)制 USE AdventureWorks2008R2; GO /* The value 3 represents an encrypted state on the database and transaction logs. */ SELECT * FROM sys.dm_database_encryption_keys WHERE encryption_state = 3; GO有關(guān) SQL Server 日志文件體系結(jié)構(gòu)的詳細信息,請參閱事務(wù)日志物理體系結(jié)構(gòu)。
所有在數(shù)據(jù)庫加密密鑰更改前寫入事務(wù)日志的數(shù)據(jù)都將使用之前的數(shù)據(jù)庫加密密鑰加密。
在數(shù)據(jù)庫加密密鑰修改過兩次后,必須執(zhí)行日志備份才能再次對數(shù)據(jù)庫加密密鑰進行修改。
透明數(shù)據(jù)加密與 tempdb 系統(tǒng)數(shù)據(jù)庫
如果 SQL Server?實例中的任何其他數(shù)據(jù)庫是使用 TDE 加密的,則會加密 tempdb 系統(tǒng)數(shù)據(jù)庫。這可能會對同一個 SQL Server 實例上的未加密數(shù)據(jù)庫產(chǎn)生性能影響。有關(guān) tempdb 系統(tǒng)數(shù)據(jù)庫的詳細信息,請參閱 tempdb 數(shù)據(jù)庫。
透明數(shù)據(jù)加密和復(fù)制
復(fù)制不會以加密形式從啟用了 TDE 的數(shù)據(jù)庫中自動復(fù)制數(shù)據(jù)。如果您想保護分發(fā)和訂閱服務(wù)器數(shù)據(jù)庫,則必須單獨啟用 TDE。快照復(fù)制以及用于事務(wù)和合并復(fù)制的初始數(shù)據(jù)分發(fā),都能夠在未加密的中間文件(例如 bcp 文件)中存儲數(shù)據(jù)。?在事務(wù)或合并復(fù)制期間,可以啟用加密來保護通信信道。有關(guān)詳細信息,請參閱如何啟用數(shù)據(jù)庫引擎的加密連接(SQL Server 配置管理器)。
透明數(shù)據(jù)加密和 FILESTREAM 數(shù)據(jù)
即使啟用了 TDE,也不會加密 FILESTREAM 數(shù)據(jù)。
請參閱概念
將 TDE 保護的數(shù)據(jù)庫移到其他 SQL Server 安全性概述(數(shù)據(jù)庫引擎) SQL Server 加密 SQL Server 和數(shù)據(jù)庫加密密鑰(數(shù)據(jù)庫引擎) FILESTREAM 概述WebCast: https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=zh-CN&EventID=1032401940&CountryCode=CN
轉(zhuǎn)載于:https://blog.51cto.com/so4678/578280
總結(jié)
以上是生活随笔為你收集整理的了解透明数据加密 (TDE)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Sql中 update select结合
- 下一篇: 神经网络之输出层设计