使用TDE加密数据库,我了解数据在写入数据库时会逐页加密。当我运行一个将几个表连接在一起并对这些表应用一些过滤的查询时,解密何时发生?
是否必须首先解密表然后执行连接和过滤,或者是否能够使用加密数据加入和过滤,然后才解密结果?
答案 0 :(得分:1)
来自MSDN:
数据库文件的加密在页面级别执行。加密数据库中的页面在写入磁盘之前会被加密,而在读入内存时会被解密。
您需要了解buffer pool的工作原理。缓冲池是磁盘上数据的缓存。查询始终从BP读取数据并将更改写入BP(简化说明)。当数据从BP传输到磁盘时发生加密,并且当数据从磁盘传输到BP时发生解密。 Read Understanding how SQL Server executes a query详细说明了这一切是如何运作的。
答案 1 :(得分:1)
似乎在从磁盘读取行时执行解密。请注意,静态数据(保存到磁盘)仅被TDE视为受保护。一旦进入内存,数据就不再受tde保护。
<强> TDE and Decryption 强>
TDE旨在通过加密物理数据文件而不是数据本身来保护静态数据。此级别的保护可防止在文本编辑器中打开数据和备份文件以公开文件的内容。
TDE加密发生在将数据写入磁盘之前,数据在查询并调用到内存时会被解密。无需任何额外的编码或数据类型修改即可进行加密和解密;因此它的透明度。一旦数据从磁盘调用到内存中,就不再认为它处于静止状态。它已成为传输中的数据,这超出了此功能的范围。因此,除了TDE之外,您还应考虑对敏感数据应用额外的支持保护层,以确保完全防止未经授权的泄露。例如,除了TDE之外,您可能希望实现加密数据库连接,单元级加密或单向加密。对于从数据库外部所需的传输保护中的其他数据,您可能需要咨询或推迟到您的网络管理团队。