2

我一直在为我的客户创建一个 ASP.net Web 应用程序。这将在他们的组织中托管(此要求是强制性的)。他们的要求之一是保护数据库中的数据,这样他们的内部管理员和 DBA 将无法在他们进入服务器或获取数据库备份时看到数据。

我正在使用 Linq-to-SQL 和 ADO.NET 来查询数据库。

保护数据库中包含的数据的最佳实践是什么?

我正在考虑的选项之一是在应用程序的业务层和数据访问层之间添加一个加密/解密层来处理数据的保护。

我担心这种方法会降低数据库性能和应用程序性能。

欢迎任何想法或建议。

PS。一个快速且易于实施的选项会更好;-)

4

1 回答 1

1

假设您使用的是 Windows 2008 或 Windows 2008 R2(或 Vista 或 7)。

不要加密数据库中的数据,它会降低性能(达到蜗牛速度)并且您将失去很多数据库功能。

使用 BitLocker 或 EFS 加密(使用 EFS,您可以只加密数据库文件,并且更易于设置和维护;不要忘记备份加密证书)。

EFS:

允许管理员仅使用 Windows 备份进行备份(使用 wbadmin 的命令行就足够了,您也可以提供)。我建议备份整个卷。

这些备份管理员将使用与运行 SQL Server 2008 的凭据不同的凭据登录该计算机,并且他们不得访问加密密钥和/或不得安装它们。

备份管理员将能够按原样备份加密文件,但永远无法访问它们,因为 Windows 备份使用 VHD 作为备份格式(并且文件仍在 NTFS 卷上,使用这些秘密证书加密)。

不要忘记不授予他们登录数据库和读取/转储数据的权限。测试此设置并进行恢复(如果您没有准备好,加密数据很容易丢失)。

于 2012-03-18T10:35:15.023 回答