我有一个使用SQL Server 2005 Express作为数据库的Windows .net应用程序,它在具有多个客户端的服务器上使用。用户通过应用程序插入,查看和更新数据。
为此,我必须将.mdf文件放在服务器上的文件夹中。还有其他办法吗?
现在在这种情况下,任何人都可以获取这些.mdf文件并在他们的SQL Server&查看数据库对象,例如表,视图和过程。
因此,我希望以高级别或最高安全性保护我的.mdf文件,并确保:
任何人都无法从服务器复制这些文件。
如果文件被复制,那么它们本身就不应该打开,
如果打开,那么他们应该要求输入密码
那么,请指导我如何实现这种安全性?
另外,我想知道有人复制数据库文件,然后是否也复制了用户,登录,角色?
答案 0 :(得分:1)
我相信在SQL Server中你可以启用加密,然后如果有人获得你的.mdf但没有有效的凭证,则无法看到其中的数据。
答案 1 :(得分:1)
您可能想要考虑实际使用数据库服务器而不仅仅是数据库文件。使用服务器将允许您锁定谁有权访问数据库并使其成为只有您的应用程序(通过用户名和密码)才能访问它。
这意味着使用SQL Server 2005 Express(我认为它的连接数量有限)或MySql Server。
如果真的不是一个选项那么:
1)您必须保护文件夹,但这可能意味着您的应用程序也无法访问mdf。
2& 3)两者都很棘手。我认为有一些第三方工具可以为您加密文件,但这意味着您必须更改您的应用程序以及它如何访问该文件。
4)您可以创建一个监视目录的自定义服务,但是您无法判断是否复制了mdf的内部方面。通常,如果mdf是副本,则可以安全地假设角色,登录名和用户随之复制。
答案 2 :(得分:1)
我们也研究过这个问题。实际上,使用SQL Express,有人可以简单地停止服务并复制数据库文件而不会出现问题。然后可以将这些移植到另一个实例。
Windows安全性和其他产品,无论您使用组策略还是其他一些可以锁定文件系统的售后市场工具,都是您最好的文件系统安全性。
我相信SQL确实提供了您正在寻找的东西,那就是TDE加密。遗憾的是,这仅适用于企业版,有多少人确实提供了帮助。
您还可以直接在数据库中加密特定列。如果您有一组您担心的表,这可能是目前Express提供的最佳选择。
查看Dave Pinal撰写的这篇文章:http://blog.sqlauthority.com/2009/04/28/sql-server-introduction-to-sql-server-encryption-and-symmetric-key-encryption-tutorial-with-script/
我已经尝试过,它可以很好地保护您的敏感数据。