我必须承认我是一名程序员,即使我没有相同的背景,我也在努力学习一些关于 DBA 的知识。我试图了解在 SQL Server 上提供什么安全性以及如何使用静态数据加密。
我的问题是,在未经授权访问托管 SQL Server 实例的计算机的情况下,加密将如何保护数据?我的猜测根本不是。
我的意思是,假设 SQL Server 在放置在数据中心的虚拟机上运行,并“连接”到互联网。如果攻击者将获得对虚拟机的控制权,那么我认为静态数据保护的作用将非常有限。
事实上,攻击者可以获得管理员权限(作为 OS 用户),重置 SQL Server 凭据并以“sa”身份登录,然后即使 SQL Servr 文件通常是加密的,他也可以以纯文本形式导出它们。
在这种情况下,有什么方法可以保护 SQL Server 的安全,或者在操作系统级别发生破坏的情况下,SQL Server 是否被视为“丢失”?
你是对的。坏人可以控制(不同数量)系统的攻击向量将使这些技术变得无用。例如,在您的假设情况下,他们甚至不需要访问 VM,他们只需要访问 SQL Server,因此所需的权限更少。
有几种方法可以实现这一点,SQL Server 确实包含其中一种“开箱即用”的技术,称为Always Encrypted (AE)。
然而,这假定了 AE 的正确设置并将攻击向量推送到端点而不是中央服务器本身。这意味着如果有人窃取或访问您的 VM(与您描述的相同假设情况),那么他们将无法获取数据,即使是 SA。由于数据是加密的,它也会在磁盘和内存中(例如有人附加调试器,或进行远程进程内存扫描、内核内存扫描等)、备份和在线传输中进行加密。
Always Encrypted 正是为这种情况而设计的,但它在其他情况下存在不足。如果您担心有人获得对 VM 的访问权限(我的意思是,我们不是都这样吗?)那么我相信您知道这是一种分层方法,但是有一些技术(例如 AE)可以帮助阻止某些攻击向量。