【问题标题】:How to protect SqlLocalDB database file with custom password如何使用自定义密码保护 SqlLocalDB 数据库文件
【发布时间】:2015-10-06 15:13:04
【问题描述】:

我设计了一个使用SqlLocalDb v11.0 实例的软件。数据库将在用户的机器上(.mdf 文件)。我之前用的是 SQL Server CE。

在 SQL Server CE 中,我的数据库受“加密模式 = 引擎默认值”的密码保护

有什么方法可以保护 SqlLocalDB?

我知道有一种使用命名实例的方法,如链接中所示 https://msdn.microsoft.com/en-us/library/hh510202(v=sql.110).aspx

有没有办法将密码与 LocalDB .mdf 文件相关联。这样有没有别的打不开?

【问题讨论】:

标签: c# .net sql-server winforms localdb


【解决方案1】:

如果您的意思是保护文件免受用户的侵害,我认为答案是否定的,您不能。用户可以简单地复制您的文件。

LocalDB 始终在用户安全上下文下运行;也就是LocalDB 从不使用本地管理员组的凭据运行。这 意味着 LocalDB 实例使用的所有数据库文件必须是 使用拥有用户的 Windows 帐户访问,无需 考虑加入本地管理员组。

有关详细信息,请参阅SQL Server 2012 Express LocalDB 中的权限部分

我相信您可以选择使用 .Net Framework 和 TSQL 方法加密和解密数据,但您无法使用数据库加密选项保护您的数据库对象,因为 LocalDB 不支持 TDE(透明数据加密)。

【讨论】:

  • 您愿意考虑第三方解决方案吗?
  • @NeilWeicher 如果您认为第三方解决方案可能对未来的读者有所帮助,请随时发布答案。
【解决方案2】:

如果您愿意考虑可以帮助您的第三方产品(可能还有其他产品),您可能需要查看 NetLib Encryptionizer。它类似于 SQL Server TDE,但适用于 SQL Server 的所有版本,包括 Express 和 LocalDB。通常由应用程序开发人员使用。然而,它的工作方式与 SQL 的内置 TDE 不同。 SQL TDE(显然)内置在 SQL Server 中,并在页面级别进行加密。 Encryptionizer 位于 SQL 和操作系统之间,在文件级别进行加密。

我相信还有另一种产品 DBEncrypt,但我不确定是否支持 LocalDB。它通过将代码注入正在运行的 SQL 进程来工作。

(免责声明:我来自NetLib Security)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-19
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多