適用於: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。
- 如果您使用的是 SQL Server 和主機守護者服務 (HGS),請參閱判斷並共用 HGS 證明 URL。
- 如果您使用搭配 Intel SGX enclave 和 Microsoft Azure 證明的 Azure SQL Database,請參閱 判斷您證明原則的證明 URL。
支援具有安全記憶體保護區之 Always Encrypted 的用戶端驅動程式
若要使用具有安全記憶體保護區的 Always Encrypted 開發應用程式,您需要支援安全記憶體保護區的 SQL 用戶端驅動程式版本。 用戶端驅動程式扮演下列關鍵角色:
- 在將使用安全記憶體保護區的查詢提交給 SQL Server 或 Azure SQL Database 執行前,驅動程式會起始記憶體保護區證明 (若已設定),驗證安全記憶體保護區為可信任,並可以安全地使用該記憶體保護區來處理敏感性資料。 如需更多關於認證的資訊,請參閱 Secure Enclave 認證。
- 用戶端驅動程式會透過協商共用祕密,與安全區域建立安全工作階段。
- 驅動程式會使用共用祕密來加密記憶體保護區處理查詢時將需要的資料行加密金鑰,並將金鑰傳送到 SQL Server,其會將金鑰轉寄到解密金鑰的安全記憶體保護區。
- 最後,驅動程式會提交查詢以供執行,進而觸發安全隔離區內部的運算。
下列用戶端驅動程式支援搭配安全記憶體區域的 Always Encrypted:
.NET Framework 4.6 或更新版本,以及 .NET Core 2.1 或更新版本中的 Microsoft .NET Data Provider for SQL Server。 如果您想要在不使用證明的情況下使用 VBS enclaves,則需要 4.1 或更新版本,且相容於 .NET Framework 4.6.1 或更高版本以及 .NET Core 3.1。
Microsoft ODBC Driver for SQL Server 版本 17.4 或更新版本。 如果您想在沒有證明的情況下使用 VBS Enclave,則需要 18.1 或更新版本。
- 如需詳細資訊,請參閱搭配 ODBC 驅動程式使用 Always Encrypted。
- 如需了解如何使用 ODBC 為資料庫連線啟用記憶體保護區計算,請參閱 啟用含安全記憶體保護區的 Always Encrypted 一節。
Microsoft JDBC Driver for SQL Server 8.2 版或更高版本。 如果您想在沒有證明機制的情況下使用 VBS enclave,則需要 12.2 或更新版本。
適用於 .NET Framework 4.7.2 或更高版本的 SQL Server 的 .NET Framework 資料提供者。
- 如需詳細資訊,請參閱在 .NET Framework Data Provider for SQL Server 中使用 Always Encrypted。
- 如需逐步教學,請參閱 教學課程:使用具有安全記憶體區域的 Always Encrypted 開發 .NET Framework 應用程式
注意
不建議針對新開發使用 .NET Framework Data Provider for SQL Server (System.Data.SqlClient)。 如需詳細資訊,請參閱 System.Data.SqlClient。