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