【问题标题】:How can SQL Server Always Encrypted feature work when both SQL Server and client software is on the same machine?当 SQL Server 和客户端软件在同一台计算机上时,SQL Server Always Encrypted 功能如何工作?
【发布时间】: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


【解决方案1】:

通过在应用程序内对数据实施自定义 AES 加密解决了这个问题(实际上非​​常有效)。

用户现在可以看到在应用程序中解密的数据,但不能通过 SSMS。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-11
    • 2018-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多