我们要求使用 SQL Server 2016 加密敏感列数据,并选择始终加密 (AE) 功能来使用确定性方法加密这些列。
由于 AE 确定性加密不允许对这些加密列进行不等式、范围或 LIKE 查询,因此我们尝试使用对称密钥(列级)加密技术对这些类型的列进行加密。
在某些列(不需要任何不等式、范围或 LIKE 查询)上实现 AE 功能并在需要生成不等式、范围或 LIKE 查询的列上实现对称密钥类型加密是一种好习惯吗?
考虑到性能、安全性和维护,将 AE 加密和列级加密结合在一个表上是否是一种好习惯?
请高手指教。
我还没有遇到关于 SQL Server 的多种加密类型的明确“最佳实践”列表,但在您的情况下,我可能会推荐以下内容:
WHERE
子句中是否使用多个或单独的列。您也可以使用列级加密来实现#2,但是如果没有任何限制,我不明白为什么您通常会选择 CLE 而不是 Always Encrypted。
我开玩笑说让加密成为应用程序的问题,但我发现数据库经常背负着比大多数情况下更多的业务逻辑和古怪的功能。如果有一个选项可以将一些计算推回应用程序端,我发现这通常是最好的选择,并且有助于防止故障排除和一般调整成为一场噩梦。
当然,您应该全面测试替代方案。如果您发现 CLE 或组合最适合您的特定场景,那就这样吧。
补充阅读: