我一直在为我的客户端创建ASP.net web应用程序。这将在他们的组织中进行(这一要求是强制性的)。他们的要求之一是保护数据库中的数据,这样他们的内部管理员和DBA在进入服务器或获得数据库备份时将无法查看数据。
我正在使用Linq to SQL和ADO.NET来查询数据库。
保护数据库中包含的数据的最佳做法是什么
我正在考虑的选项之一是在应用程序的业务层和数据访问层之间添加一个加密/解密层,以处理数据保护。
我担心这种方法会降低数据库性能和应用程序性能。
欢迎任何想法或建议。
PS。一个快速且易于实施的选项会更好;-)
假设您使用的是Windows 2008或Windows 2008 R2(或Vista或7)。
不要加密数据库中的数据,这会降低性能(达到蜗牛般的速度),并且会失去很多数据库功能。
使用BitLocker或EFS进行加密(使用EFS,您只能加密数据库文件,并且更易于设置和维护;不要忘记备份加密证书)。
EFS:
允许管理员仅使用Windows备份进行备份(带有wbadmin的命令行应该足够了,您也可以提供)。我建议备份整个卷。
这些备份管理员将使用与运行SQL Server 2008的凭据不同的凭据登录该计算机,并且他们不得访问加密密钥和/或安装加密密钥。
备份管理员将能够按原样备份加密的文件,但永远无法访问这些文件,因为Windows备份使用VHD作为备份格式(文件仍在NTFS卷上,使用这些秘密证书加密)。
不要忘记不要授予他们登录数据库和读取/转储数据的权限。测试这个设置,并进行恢复(如果你没有做好准备,加密数据很容易丢失)。