规划在无证明的情况下在 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 项目。

Screenshot of System Information showing virtualization-based security status and configuration.

要检查的第一个项目是 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 配置的策略。

后续步骤