使用 SQL Server TDE 编写远程备份时网络流量是否加密?

SQL*_*ain 9 sql-server encryption network transparent-data-encryption

他们确实说没有“愚蠢的问题”这样的东西,所以这里是:

我了解 SQL Server透明数据加密(TDE) 对静态数据进行加密,因此如果有人闯入您的存储并窃取这些文件,您的数据库文件 (.mdf) 和备份文件 (.bak) 将被加密。我也知道从磁盘读取数据时会解密数据,因此它在内存中未加密(在运动中)。因此,运行远程查询(select * from SensitiveData)的用户请求的数据在通过网络传输时将是未加密的,因此容易被拦截。

因此,假设以上所有内容都是正确的,这是我的愚蠢问题:如果我的 SQL Server 实例在计算机 A 上并且我的 TDE 数据库备份被注销到远程计算机 B 上的存储,备份操作数据是否在传输时加密?计算机 A 要写入计算机 B 的磁盘吗?我认为它必须是(因为我认为加密操作首先发生在计算机 A 上),但我无法在任何 Microsoft 文档或博客中找到对此的确认。同样,在还原操作期间——是否有人拦截了从计算机 B 上的磁盘传输的数据以还原计算机 A 上的数据库——他们会发现移动中的数据是加密的吗?

Bra*_*adC 7

是的,备份在通过网络移动时是加密的,因为 TDE 数据在磁盘上加密,并且备份操作永远不会解密它

保罗兰德尔的后备神话

误区30-09)备份通过缓冲池读取数据

备份子系统开放自有渠道的数据库文件,以避免读一切到SQL Server的内存,并背出到备份设备的性能影响(以及有效冲洗的过程中缓冲池)。如果您要求页面校验和检查,它会使用它自己的一小部分内存。

如果页面被加载到缓冲池(SQL 用来缓存数据库表和索引数据的“正常”内存空间),它们将必须被解密。但是备份不会这样做,它们只是将原始加密的“范围”(连续的 8 页块)转储到您的备份目的地。

我能够从 Paul Randal那里得到确认,他的上述评论仍然与 TDE 相关

它的工作方式完全相同。缓冲池进行加密,然后在将页面写入磁盘之前添加页面校验和。备份从不读取缓冲池。所以是的,TDE 数据库的备份中仍然有加密。页校验和被验证,但通过备份代码,而不是缓冲池代码。

换句话说,如果您在数据库上启用了 CHECKSUM,则加密发生(在正常的 SQL 写入操作期间)添加这些。这意味着备份过程可以读取原始(加密)范围、验证校验和并写入备份,而无需解密数据。

这几乎可以肯定是(在 SQL 2016 之前)使用 TDE 在数据库上启用备份压缩没有做任何事情的原因,因为加密数据不是很可压缩

这是因为备份 TDE 加密数据库时,备份时不会解密数据库页面。它们以它们通常所处的相同加密状态进行备份,然后进行压缩。从本质上讲,加密数据是非常独特的,因此数据压缩对加密数据的作用不大。

对于恢复操作,同样的原则适用。加密的备份在整个网络中保持加密状态,并以其仍然加密的状态写入恢复服务器的磁盘。只有在还原完成后将数据库加载到内存中时才会解密它们。


Sea*_*ser 3

...备份操作数据从计算机 A 传输到计算机 B 的磁盘时是否已加密?

是的,进入缓冲池时解密,离开缓冲池时加密。在这种情况下,由于我们正在写入磁盘,因此首先对其进行加密,然后再写入。由于写入是通过网络进行的,因此数据本身已加密,但网络流量的任何其他部分并未加密。

...在恢复操作期间...他们会发现动态数据已加密吗?

是的,因为与上述相同,但顺序相反。数据在磁盘上被加密,并在加密状态下读取和传输。然后它到达实例并加载到缓冲池中,在此过程中它会被解密。