セキュリティで保護されたエンクレーブが設定された Always Encrypted を使用するアプリケーションを開発する
適用対象: SQL Server 2019 (15.x) 以降 - Windows のみ Azure SQL データベース
セキュリティで保護されたエンクレーブが設定された Always Encrypted を使うと、Always Encrypted が拡張され、暗号化された機密データベース列に対するアプリケーション クエリの高度な機能が有効になります。 セキュリティで保護されたエンクレーブのテクノロジを利用することで、データベース エンジンのクエリ Executor は、暗号化された列に対する計算を、データベース エンジン プロセス内のセキュリティで保護されたエンクレーブにデリゲートできるようになります。
前提条件
セキュリティで保護されたエンクレーブによる Always Encrypted をサポートするには、環境が次の要件を満たす必要があります。
- SQL Server インスタンスまたは Azure SQL Database のデータベース サーバーは、該当する/必要な場合にエンクレーブと構成証明をサポートするように正しく構成されている必要があります。 詳細については、「セキュリティで保護されたエンクレーブと構成証明を設定する」を参照してください。
- 次のアプリケーションを確認してください。
クライアント ドライバーバージョンを使用して、セキュリティで保護されたエンクレーブを持つ Always Encrypted をサポートします。
データベースに接続する場合、Always Encrypted を有効にします。
構成証明プロトコルを設定します。このプロトコルは、エンクレーブ クエリを送信する前にクライアント ドライバーがエンクレーブを構成証明する必要があるかどうかを決定し、存在する場合は使用する構成証明サービスを設定します。 最新のドライバー バージョンでは、次の構成証明プロトコルがサポートされています。
- Microsoft Azure Attestation - Microsoft Azure Attestation を使用して認証を強制します。
- ホスト ガーディアン サービス - ホスト ガーディアン サービスを使用して構成証明を適用します。
- なし - 構成証明なしでエンクレーブを使用できます。
次の表は、特定の SQL 製品とエンクレーブ テクノロジに対して有効な構成証明プロトコルを示しています。
Product エンクレーブ テクノロジ サポートされている構成証明プロトコル SQL Server 2019 (15.x) 以降 VBS エンクレーブ ホスト ガーディアン サービス、なし Azure SQL Database SGX エンクレーブ (DC シリーズ データベース内) Microsoft Azure Attestation Azure SQL Database VBS エンクレーブ なし 構成証明を使用している場合は、環境に対して有効な構成証明 URL を設定します。
- SQL Server とホスト ガーディアン サービス (HGS) を使用している場合は、「HGS 構成証明 URL を確認して共有する」を参照してください。
- Intel SGX エンクレーブ を備えた Azure SQL データベース と Microsoft Azure Attestation を使用している場合は、「構成証明ポリシーの構成証明 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 エンクレーブを使用する場合は、.NET Framework 4.6.1 以降および .NET Core 3.1 と互換性のあるバージョン 4.1 以降が必要です。
- 詳しくは、「Always Encrypted と Microsoft .NET Data Provider for SQL Server を使用する」をご覧ください。
- 詳しいチュートリアルについては、「チュートリアル: セキュリティで保護されたエンクレーブが設定された Always Encrypted を使用して .NET アプリケーションを開発する」を参照してください。
- Azure Key Vault プロバイダーとセキュリティで保護されたエンクレーブが設定された Always Encrypted の使用を示す例に関するページも参照してください。
Microsoft ODBC Driver for SQL Server バージョン 17.4 以降。 構成証明なしで VBS エンクレーブを使うには、バージョン 18.1 以降が必要です。
- 詳しくは、「Using Always Encrypted with the ODBC Driver」(ODBC ドライバーでの Always Encrypted の使用) をご覧ください。
- ODBC を使用するデータベース接続でエンクレーブ計算を有効にする方法については、「セキュリティで保護されたエンクレーブが設定された Always Encrypted を有効にする」を参照してください。
Microsoft JDBC Driver for SQL Server バージョン 8.2 以降。 構成証明なしで VBS エンクレーブを使用する場合は、バージョン 12.2 以降が必要です。
- 詳細については、「セキュリティで保護されたエンクレーブが設定された Always Encrypted を JDBC Driver と共に使用する」を参照してください
.NET Framework 4.7.2 以降の .NET Framework Data Provider for SQL Server
- 詳しくは、「Always Encrypted と .NET Framework Data Provider for SQL Server を使用する」をご覧ください。
- 詳しいチュートリアルについては、「チュートリアル: セキュリティで保護されたエンクレーブが設定された Always Encrypted を使用して .NET Framework アプリケーションを開発する」を参照してください。
Note
.NET Framework Data Provider for SQL Server (System.Data.SqlClient) の使用は、新しい開発には推奨されません。 詳細については、「System.Data.SqlClient」を参照してください。