使用具有安全 enclave 的 Always Encrypted 开发应用程序

适用于: SQL Server 2019 (15.x) 及更高版本 - 仅限 Windows Azure SQL 数据库

具有安全 enclave 的 Always Encrypted 扩展了 Always Encrypted,以便对已加密敏感数据库列实现更丰富的应用程序查询功能。 它利用安全 enclave 技术允许数据库引擎中的查询执行器将对加密列进行的计算委托给数据库引擎进程中的安全 enclave。

先决条件

环境需要满足以下要求才能支持具有安全 Enclave 的 Always Encrypted。

  • SQL Server 实例或 Azure SQL 数据库中的数据库服务器必须正确配置为支持 enclave 和证明(如适用/需要)。 有关详细信息,请参阅设置安全 enclave 和证明
  • 确保应用程序:
    • 使用的客户端驱动程序版本支持具有安全 enclave 的 Always Encrypted。

    • 连接到数据库时启用 Always Encrypted。

    • 设置证明协议,该协议确定客户端驱动程序在提交 enclave 查询之前是否必须证明 enclave,如果是,则确定应使用哪个证明服务。 最新的驱动程序版本支持以下证明协议:

      • Microsoft Azure 证明 - 使用 Microsoft Azure 证明强制实施证明。
      • 主机保护者服务 - 使用主机保护者服务强制实施证明。
      • 无 - 允许在没有证明的情况下使用 Enclave。

      下表指定对特定 SQL 产品和 Enclave 技术有效的证明协议:

      产品 Enclave 技术 支持的证明协议
      SQL Server 2019 (15.x) 及更高版本 VBS enclave 主机保护者服务,无
      Azure SQL 数据库 SGX Enclave(在 DC 系列数据库中) Microsoft Azure 证明
      Azure SQL 数据库 VBS enclave
    • 如果使用的是证明,则设置对环境有效的证明 URL。

具有安全 enclave 的 Always Encrypted 的客户端驱动程序

若要使用具有安全 enclave 的 Always Encrypted 开发应用程序,需要支持安全 enclave 的 SQL 客户端驱动程序版本。 客户端驱动程序会发挥以下关键作用:

  • 在将使用安全 enclave 的查询提交给 SQL Server 或 Azure SQL 数据库 进行执行之前,驱动程序会启动 enclave 证明(如配置),以验证安全 enclave 是否可信并且可安全地用于处理敏感数据。 有关证明的详细信息,请参阅安全 Enclave 证明
  • 客户端驱动程序通过协商共享机密与 enclave 建立安全会话。
  • 驱动程序会使用共享机密加密 enclave 需要用于处理查询的列加密密钥,并将密钥发送给 SQL Server,后者会将它们转发给解密密钥的安全 enclave。
  • 最后,驱动程序会提交查询以便执行,这会在安全 enclave 中触发计算。

以下客户端驱动程序支持具有安全 enclave 的 Always Encrypted:

另请参阅