在 SQL Server 2016 中,始终加密和透明数据加密有什么区别?

Roa*_*ast 41 sql-server transparent-data-encryption sql-server-2016 always-encrypted

在我撰写本文时,我仍在等待 SQL Server 2016 的正式发布,以便我们可以探索其“始终加密”功能的实用性。

我只想知道 SQL Server 2016 中的 Always Encrypted 和当前可用的透明数据加密之间的具体区别是什么,以便我们可以为未来的项目做出正确的决定。

Aar*_*and 49

与始终加密相比,透明数据加密的缺点:

  • 仅保护静态数据 - 备份和数据文件是“安全的”,但动态或内存中的数据易受攻击
  • 仅整个数据库
  • 所有数据都以相同的方式加密
  • 备份压缩可能需要更长时间并且适得其反

    • 嗯,实际上,SQL Server 2016 中的一些改进违背了我们通常所知道的尝试压缩加密数据的方法 - 它比以前的版本好得多,但大概仍然比只加密少数列(未经测试)更糟糕
  • tempdb 也继承了加密——即使在禁用 TDE 后仍然保持
  • 需要企业版
  • 系统管理员始终可以访问数据

Always Encrypted 部分或全部解决了所有这些问题:

  • 数据在静态、动态和内存中受到保护 - 对证书、密钥以及可以解密数据的确切人员进行更多控制
  • 可以只是一列
  • 加密类型是一种选择:
    • 可以使用确定性加密来支持索引和点查找(例如 SSN)
    • 可以使用随机加密来获得更高的保护(比如信用卡号)
  • 由于它不是数据库范围的,备份压缩不一定会受到影响 - 当然你加密的列越多,你的运气就越差
  • tempdb 不参与
  • 从 SQL Server 2016 Service Pack 1 开始,Always Encrypted 现在适用于所有版本
  • 系统管理员可以保护数据(但不是系统管理员和 Windows 安全/证书/密钥管理员,换句话说,只要这两个组不串通,您就可以分开责任)

但是有一个限制,那就是并非所有驱动程序和应用程序都可以直接处理加密数据,因此在某些情况下,这将需要更新/更改驱动程序和/或修改代码。

  • 据我所知,最大的区别之一是在查询数据时。使用 TDE,您可以像往常一样运行任何查询,使用 AE,您在查询加密列时受到很大限制,即您只能进行相等比较(这需要选择确定性加密)。没有检查日期范围,没有 LIKE 查询等。 (2认同)