保护SQL Server数据库不被复制

Ler*_*ner 3 sql-server

我是SQL服务器的新手,我有一个问题

我在SQL服务器本地数据库实例上创建了一个数据库,然后我将数据库的.mdf文件复制到USB闪存驱动器,我能够从另一个用户帐户打开数据库'所以我想理解为什么会这样?这是否意味着任何人都可以复制我的数据库文件并在自己的服务器上打开它?我怎样才能确保这一点?

谢谢

Bac*_*its 5

这是否意味着任何人都可以复制我的数据库文件并在自己的服务器上打开它?

是的,只要它是相同版本的SQL Server.这就是为什么保持对运行SQL Server的服务器的控制并防止未经授权访问文件系统或备份的关键.

所以我想明白为什么会这样?

相同的软件使用相同的格式.就像Excel文档如何保存在一台计算机上并在另一台计算机上打开一样,数据库也是如此.默认情况下,SQL Server以最简单,最直接的方式存储数据,以实现最佳性能.数据文件的安全性通常是次要问题,因为大多数SQL Server实际上位于锁定的门后,并且操作系统访问仅限于具有域身份验证的计算机管理员.

如果您运行的是SQL Server 2008+ Enterprise,则可以访问透明数据加密,该加密将加密磁盘上的数据文件.这并不妨碍移动数据库,如果你有充分的机会到原来的主机系统,但它确实意味着有额外的步骤,这将是很难通过从磁盘直接读取数据访问数据.此外,您还可以加密备份(我相信SQL Server Standard及以上版本支持此功能,我不确定Express).

就Express LocalDB而言......你的选择非常有限.您可以使用NTFS级别加密,但这会影响性能,因为数据库引擎不再知道加密正在进行.此外,任何可以访问未加密数据库的人都可以访问要复制的数据库文件,因此您实际上并未受到内部攻击的保护.您也可以使用BitLocker全磁盘加密,但同样会带来一些I/O成本,并且再次无法防范内部攻击.

最后,无论您做什么,任何人sadbo服务器的级别访问权限都能够读取您的数据.您可以选择仅在数据库中存储加密数据,但这几乎消除了使用SQL的任何优势,并且您的应用程序仍然需要存储在某处解密它的方法,这意味着有人可以找到您的解密密钥并从那里.