使用具有安全記憶體保護區的 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。
設定證明通訊協定,判斷用戶端驅動程式是否必須在提交記憶體保護區查詢之前證明記憶體保護區,若必須證明,應該使用哪個證明服務。 最新的驅動程式版本支援下列證明通訊協定:
- 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 記憶體保護和 Microsoft Azure 證明使用 Azure SQL Database,請參閱判斷證明原則的證明 URL。
具有安全記憶體保護區的 Always Encrypted 用戶端驅動程式
若要使用具有安全記憶體保護區的 Always Encrypted 開發應用程式,您需要支援安全記憶體保護區的 SQL 用戶端驅動程式版本。 用戶端驅動程式扮演下列關鍵角色:
- 在將使用安全記憶體保護區的查詢提交給 SQL Server 或 Azure SQL Database 執行前,驅動程式會起始記憶體保護區證明 (若已設定),驗證安全記憶體保護區為可信任,並可以安全地使用該記憶體保護區來處理敏感性資料。 如需證明的詳細資訊,請參閱安全記憶體保護區證明。
- 用戶端驅動程式會透過交涉共用祕密,與記憶體保護區建立安全工作階段。
- 驅動程式會使用共用祕密來加密記憶體保護區處理查詢時將需要的資料行加密金鑰,並將金鑰傳送到 SQL Server,其會將金鑰轉寄到解密金鑰的安全記憶體保護區。
- 最後,驅動程式會提交查詢以執行,在安全記憶體保護區內部觸發計算。
下列用戶端驅動程式支援具有安全記憶體保護區的 Always Encrypted:
.NET Framework 4.6 或更新版本,以及 .NET Core 2.1 或更新版本中的 Microsoft .NET Data Provider for SQL Server。 如果您想要在沒有證明的情況下使用 VBS 記憶體保護區,則需要 4.1 版或更新版本,這與 .NET Framework 4.6.1 或更高版本和 .NET Core 3.1 相容。
Microsoft ODBC Driver for SQL Server 版本 17.4 或更新版本。 如果您想要在沒有證明的情況下使用 VBS 記憶體保護區,則需要 18.1 版或更高版本。
- 如需詳細資訊,請參閱搭配 ODBC 驅動程式使用 Always Encrypted。
- 如需如何為使用 ODBC 的資料庫連接啟用記憶體保護區計算相關資訊,請參閱啟用具有安全記憶體保護區的 Always Encrypted 一節。
Microsoft JDBC Driver for SQL Server 8.2 版或更高版本。 如果您想要在沒有證明的情況下使用 VBS 記憶體保護區,則需要 12.2 版或更高版本。
.NET Framework 4.7.2 或更新版本中的 .NET Framework Data Provider for SQL Server。
- 如需詳細資訊,請參閱搭配 .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。