【发布时间】:2018-03-19 04:46:17
【问题描述】:
在我的应用程序中,我使用带有附加 mdf 文件的 SQL Express/LocalDB。 以下是一个示例连接字符串:
"data source=.\SQLEXPRESS;AttachDBFilename=|DataDirectory|database.mdf;Trusted_Connection=Yes; User Instance=true;Connection Timeout=30"
我需要对数据库进行加密,使其不易被第三方访问。
透明数据加密是完美的选择,但它不是一个选项,因为它仅适用于 SQL Server 的企业版。
我为 SQLite 找到了类似的解决方案,它似乎可以挂钩加密/解密算法(sqlcipher.net 和其他)。
还有一些 MSSQL 服务器的解决方案,这些解决方案相当昂贵(对我而言),并且只能在普通数据库(不是用户实例附加的 mdf 文件)上工作。
最后,对称加密是可能的并且受支持(至少在 SQL Express 上),但这意味着重大的应用程序更改。
我正在寻找一种以尽可能少的工作量加密整个数据库(或多个表中的数据)的选项。 提前感谢您的任何建议。
更新
出于监管目的 (GDPR) 需要对数据进行加密,以保护“静态数据”。
该应用程序是桌面应用程序,可在 Windows 上运行。
【问题讨论】:
-
必须是 MS-SQL 吗?
-
是的,MSSQL Express 或 LocalDB 是必需的,因为应用程序主要是开发的
-
当您说“LocalDB”时,您只是指在 PC 上...对吗?如果需要数据保护 设计阶段的计划如果主要开发
-
从 SQL Server 2016 SP1 开始,Always Encrypted 是 available in all editions。以前仅适用于企业 SKU 的分区、压缩和其他功能也是如此。 Always Encrypted 将加密特定列,而不是像 TDE 那样加密整个数据库
-
整个数据库是否必须加密?客户是否了解成本和管理要求?如
lose the key, lose all data and backups?有多种机制可用于防止未经授权的访问。没关系,在 桌面 应用程序中,只有登录用户才能读取数据。除非磁盘被盗,否则最好的防御是使用 BitLocker 进行全盘加密
标签: c# sql-server encryption