使用具有安全記憶體保護區的 Always Encrypted 開發應用程式

適用於:SQL Server 2019 (15.x) 及以後版本在 Windows Azure SQL 資料庫

具有安全記憶體保護區的 Always Encrypted 會延伸 Always Encrypted,讓您在已加密敏感性資料庫資料行上使用更豐富的應用程式查詢功能。 其利用安全記憶體保護區技術,讓資料庫引擎中的查詢執行程式將加密資料行上計算委派給資料庫引擎處理序內的安全記憶體保護區。

必要條件

您的環境必須符合下列需求,才能藉由安全記憶體保護區支援 Always Encrypted。

  • 您的 SQL Server 執行個體或 Azure SQL Database 中的資料庫,必須正確設定,以在適用或需要時支援安全記憶體保護區和遠端證明。 如需更多資訊,請參閱設定安全隔離區和證明驗證
  • 請確定您的應用程式:
    • 使用支援含安全記憶體保護區之 Always Encrypted 的用戶端驅動程式版本。

    • 連線到資料庫時啟用 Always Encrypted。

    • 設定證明通訊協定,用以決定用戶端驅動程式在提交 Enclave 查詢之前,是否必須先對 Enclave 進行證明;如果必須,則應使用哪一種證明服務。 最新的驅動程式版本支援下列證明通訊協定:

      • Microsoft Azure 證明 - 使用 Microsoft Azure 證明 強制執行證明。
      • 主機守護者服務 - 強制證明使用主機守護者服務。
      • 無 - 允許在沒有驗證的情況下使用安全隔離區。

      下表指定特定 SQL 產品和記憶體保護區技術適用的證明通訊協定:

      產品 記憶體保護區技術 支援的證明通訊協定
      SQL Server 2019 (15.x) 和更新版本 VBS 記憶體保護區 主機守護者服務,無
      Azure SQL Database SGX 記憶體保護區 (DC 系列資料庫中) Microsoft Azure 證明服務
      Azure SQL Database VBS 記憶體保護區
    • 如果您使用驗證聲明,請設定適用於您的環境的驗證聲明 URL。

支援具有安全記憶體保護區之 Always Encrypted 的用戶端驅動程式

若要使用具有安全記憶體保護區的 Always Encrypted 開發應用程式,您需要支援安全記憶體保護區的 SQL 用戶端驅動程式版本。 用戶端驅動程式扮演下列關鍵角色:

  • 在將使用安全記憶體保護區的查詢提交給 SQL Server 或 Azure SQL Database 執行前,驅動程式會起始記憶體保護區證明 (若已設定),驗證安全記憶體保護區為可信任,並可以安全地使用該記憶體保護區來處理敏感性資料。 如需更多關於認證的資訊,請參閱 Secure Enclave 認證
  • 用戶端驅動程式會透過協商共用祕密,與安全區域建立安全工作階段。
  • 驅動程式會使用共用祕密來加密記憶體保護區處理查詢時將需要的資料行加密金鑰,並將金鑰傳送到 SQL Server,其會將金鑰轉寄到解密金鑰的安全記憶體保護區。
  • 最後,驅動程式會提交查詢以供執行,進而觸發安全隔離區內部的運算。

下列用戶端驅動程式支援搭配安全記憶體區域的 Always Encrypted: