规划在无证明的情况下在 SQL Server 中使用具有安全 Enclave 的 Always Encrypted
适用于: SQL Server 2019 (15.x) 及更高版本 - 仅限 Windows
设置在无证明的情况在 SQL Server 中使用 具有安全 Enclave 的 Always Encrypted,是启动功能的一种简单方法。 但在生产环境中使用安全 Enclave 时,请记住,没有证明会降低针对操作系统管理员威胁的保护级别。 例如,假设恶意操作系统管理员篡改了 Enclave 中运行的 SQL Server 库,客户端应用程序将无法检测到这种情况。 如果担心此类攻击,请考虑使用主机保护者服务设置证明。 有关详细信息,请参阅 规划主机保护者服务证明。
在 SQL Server 中,具有安全 Enclave 的 Always Encrypted 使用 基于虚拟化的安全性 (VBS) Enclave(也称为虚拟安全模式 [VSM Enclave]),这是一种基于软件的技术,依赖于 Windows 虚拟机监控程序,不需要任何特殊硬件。
注意
在 VM 中部署 SQL Server 时,VBS Enclave 可帮助保护数据免受来自 VM 内部的攻击。 但不能防止使用特权系统帐户从主机发起的任何攻击。 例如,主机上生成的 VM 内存转储可能包含 Enclave 的内存。
先决条件
运行 SQL Server 的计算机必须满足安装 SQL Server 的要求和 Hyper-V 硬件要求。
这些要求包括:
SQL Server 2019 (15.x) 或更高版本
Windows 10 或更高版本、Windows Server 2019 或更高版本。
针对虚拟化技术的 CPU 支持:
- 具有扩展页表的 Intel VT-x。
- 具有快速虚拟化索引的 AMD-V。
- 如果你在 VM 中运行 SQL Server,请执行以下操作:
- 在 Azure 中,使用第 2 代 VM 大小(建议)或使用启用了嵌套虚拟化的第 1 代 VM 大小。 查看单个 VM 大小文档,确定哪些第 1 代 VM 大小支持嵌套虚拟化。
- 在 Hyper-V 2016 或更高版本中(Azure 之外),请确保 VM 是第 2 代 VM(建议),或者是启用了嵌套虚拟化的第 1 代 VM。 有关详细信息,请参阅是否应在 Hyper-V 中创建第 1 代或第 2 代虚拟机?和配置嵌套虚拟化。
- 在 VMware vSphere 6.7 或更高版本中,为 VM 启用基于虚拟化的安全支持,如 VMware 文档中所述。
- 其他虚拟机监控程序和公有云可能支持嵌套虚拟化功能,这些功能也实现具有 VBS Enclave 的 Always Encrypted。 有关兼容性和配置说明,请查看虚拟化解决方案的文档。
必须启用并运行基于虚拟化的安全性 (VBS)。
工具要求
客户端驱动程序要求
要了解在没有证明的情况下支持使用安全 Enclave 的客户端驱动程序版本,请参阅 使用具有安全 Enclave 的 Always Encrypted 开发应用程序。
验证 VBS 是否正在运行
注意
本步骤应由 SQL Server 计算机管理员执行。
要检查 VBS 是否正在运行,请通过运行 msinfo32.exe
打开“系统信息”工具,并在“系统摘要”的底部找到 Virtualization-based security
项目。
要检查的第一个项目是 Virtualization-based security
,它可能具有以下三个值:
Running
表示已正确配置 VBS,并且 VBS 可以成功启动。Enabled but not running
表示已将 VBS 配置为运行,但硬件不满足运行 VBS 的最低安全要求。 你可能需要更改 BIOS 或 UEFI 中的硬件配置,以启用可选的处理器功能(如 IOMMU),或者如果硬件确实不支持所需的功能,你可能需要降低 VBS 安全要求。 请继续阅读本部分以了解详细信息。Not enabled
表示未将 VBS 配置为运行。
启用 VBS
如果未启用 VBS,请在提升的 PowerShell 控制台中运行以下命令将其启用。
Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard -Name EnableVirtualizationBasedSecurity -Value 1
更改注册表后,请重启 SQL Server 计算机并再次检查 VBS 是否正在运行。
有关启用 VBS 的其他方法,请参阅 启用基于虚拟化的代码完整性保护。
如果未运行,请运行 VBS
如果 VBS 已启用但未在计算机上运行,请检查 Virtualization-based security
属性。 将 Required Security Properties
项目中的值与 Available Security Properties
项目中的值进行比较。 必需属性必须等于或为可用安全属性的子集,才能运行 VBS。 对于安全属性应注意以下重要的几点:
Base virtualization support
始终是必需的,因为它表示运行虚拟机监控程序所需的最低硬件功能。- 推荐
Secure Boot
,但不作要求。 安全启动可在 UEFI 初始化完成后要求由 Microsoft 签名的引导加载程序立即运行,从而防止 Rootkit。 - 推荐
DMA Protection
,但不作要求。 DMA 保护使用 IOMMU 来保护 VBS 和 enclave 内存免受直接内存访问攻击。 在生产环境中,应始终使用具有 DMA 保护的计算机。 在开发或测试环境中,可以不要求具有 DMA 保护。 如果对 SQL Server 实例进行了虚拟化,则很可能没有可用的 DMA 保护,并且需要取消此要求才能运行 VBS。
在降低 VBS 必需的安全功能之前,请与 OEM 或云服务提供商联系,确认是否有办法在 UEFI 或 BIOS 中启用缺少的平台要求(例如,启用安全启动、Intel VT-d 或 AMD IOV)。
要更改 VBS 所需的平台安全功能,请在提升的 PowerShell 控制台中运行以下命令:
# Value 1 = Only Secure Boot is required
# Value 2 = Only DMA protection is required (default configuration)
# Value 3 = Both Secure Boot and DMA protection are required
Set-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Control\DeviceGuard -Name RequirePlatformSecurityFeatures -Value 1
更改注册表后,请重启 SQL Server 计算机并再次检查 VBS 是否正在运行。
如果计算机由公司管理,组策略或 Microsoft Endpoint Manager 可能会在重启之后覆盖你对这些注册表项所做的任何更改。 请与 IT 支持人员联系,了解他们是否部署了管理 VBS 配置的策略。
后续步骤
- 确保环境满足上述先决条件后,请参阅 在 SQL Server 中配置安全 Enclave。