sql server - 如何防止备份数据库文件加载到任何 SQL Server 实例上

1 sql-server sql-server-2012

我正在尝试查找是否有任何方法可以限制在 SQL Server 实例上加载 .bak 文件。

例子:

创建了名为“Zack”的用户,并且是名为“AdventureWorks”的数据库的 dba,他每天备份数据库并将其存储在文件夹中。

用户“Mike”可以访问 .bak 文件之一,并在本地加载整个数据库及其数据。

我们如何限制这一点并只允许授权用户恢复 SQL Sserver 中的 .bak 文件。

尝试查看 Microsoft 的多个文档,但找不到有关此用例的任何资源。当我遇到障碍时,你的见解将会非常有帮助。

von*_*ryz 5

为了保护数据安全,请考虑深度防御。也就是说,您需要多层安全性。如果一层被破坏,下一层可能会阻止入侵,依此类推。

首先思考您要防范的威胁类型。你可以信任谁,不能信任谁?您的服务器安全吗?您信任所有管理员吗?失控的开发人员与服务器管理员的攻击媒介不同。例如,前者可以通过运行应用程序来提取数据。再次作为示例,后者可以使用存储快照获取副本并在单独的系统上解决 ACL。

最直接(但不是最简单)的做法是确保未经授权的用户无法访问备份文件。如果失败,备份加密可能是下一个保障措施。如果备份加密密钥遭到泄露,下一层就是对数据库中的数据进行加密。这可以通过内置功能来完成,或者通过使用自定义解决方案处理应用程序层上的加密或使用始终加密的功能来完成。

首先确保不受信任的用户没有备份数据库的权限。备份 SQL Server 数据库至少需要db_backupoperator角色成员资格,因此请检查角色成员资格。这应该可以保护您免受意外数据泄露,例如,开发人员临时备份到随机位置。

下一步是确保所有备份都存储在具有适当 ACL 的位置。也就是说,应该有一个安全组允许 SQL Server 实例访问该位置,可能是您的备份应用程序,以及处理备份的系统管理员。撤销任何额外的权限。这应该可以防止有人读取(或更改!)备份。

第三步是检查备份后发生的情况。是否有一个流程可以将其移动到存储中的另一个层?也许是云存储?检查所有位置和相关权限。这是为了确保备份不会复制到读取权限过于宽松的 S3 存储桶或 Azure Blob 存储中。

第四步是开始思考加密是否有帮助。毕竟,要做的第一件事就是备份您的加密密钥 - 并确保未经授权的一方无法读取密钥。以有效的方式设置加密需要认真的规划和定期的程序测试。