【发布时间】:2019-06-04 10:05:57
【问题描述】:
我正在开发一个将数据存储在 SQL Server Express 2016 数据库中的 .NET Winforms 应用程序(VB.NET、.NET 框架 4.5);两个部分都在同一台机器上运行。
数据库中的某些列包含敏感数据,不应在未加密的情况下提供给用户。因此,我开始寻找一种有效的方法来实现这一目标。经过一番阅读,我看到 SQL Server 上的“新”始终加密功能是一种非常有效的“开箱即用”方式来实现这一点,但有一个问题...... SQL 服务器和客户端应用程序不能在同一台机器上,因为证书存储在本地 Windows 证书存储中。
我的问题:有没有办法在不使用 Azure 解决方案的情况下做到这一点?即使 PC 离线,该应用程序也必须能够工作。
欢迎提出任何建议。尽管加密在资源方面必须尽可能“轻量级”,但这一点非常重要。提前感谢大家。对不起,如果我的英语不是那么好。
附:我测试了这个设置只是为了确定,是的,当 SQL Server 和客户端应用程序(带有证书)在同一台机器上时,您可以通过 SSMS 解密数据。
更新:检查 Andrew 的回答。非常感谢大家的帮助。
【问题讨论】:
-
您误解了 Always Encrypted 的作用。它旨在保护静态数据,以确保只有用户可以访问它,而不是(比如说)进行数据库备份的人。如果您希望数据实际上对用户不可用,您所要做的就是使用他们无权访问的密钥对其进行加密。请注意,这必然会使其在未加密的情况下对您的应用程序不可用——如果这不是您想要的,那么您正在查看某种 DRM 方案,并且这些方案从根本上是易碎的,因为应用程序不能做任何用户可以做的事情' t.
-
您的更新应该是一个答案:它可能对将来的某人有用。
标签: sql-server vb.net encryption always-encrypted