如何使用自定义密码保护SqlLocalDB数据库文件

时间:2015-10-06 15:13:04

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

我使用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文件相关联。那么任何其他人都无法打开它吗?

2 个答案:

答案 0 :(得分:1)

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

  

LocalDB始终在用户安全上下文下运行;也就是LocalDB   永远不会使用本地管理员组的凭据运行。这个   表示必须是LocalDB实例使用的所有数据库文件   没有使用拥有用户的Windows帐户访问   考虑当地管理员组的成员资格。

有关详细信息,请参阅SQL Server 2012 Express LocalDB

中的权限部分

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

答案 1 :(得分:0)

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

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

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