DAC パッケージでの Always Encrypted を使用した列暗号化の構成

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

データ層アプリケーション (DAC) パッケージ (DACPAC とも呼ばれます) は、テーブル内のテーブルや列を含むすべての SQL Server オブジェクトを定義する SQL Server データベースのデプロイの移植可能な単位です。 DACPAC をデータベースに発行する場合 (DACPAC を使用してデータベースをアップグレードする場合)、ターゲット データベースのスキーマは、DACPAC のスキーマに一致するように更新されます。 SQL Server Management Studio、PowerShell、または sqlpackageデータ層アプリケーションのアップグレード ウィザードを使用して、DACPAC を発行できます。

この記事では、DACPAC またはターゲット データベースに Always Encrypted で保護された列が含まれる場合に、データベースをアップグレードするための特別な考慮事項について説明します。 DACPAC 内の列の暗号化スキームが、ターゲット データベースの既存の列の暗号化スキームと異なる場合、DACPAC を発行すると、列に格納されているデータの暗号化、暗号化解除、または再暗号化が行われます。 詳細については、次の表を参照してください。

Condition アクション
列は、DACPAC では暗号化され、データベースでは暗号化されていません。 列のデータは暗号化されます。
列は、DACPAC では暗号化されておらず、データベースでは暗号化されています。 列のデータは暗号化解除されます (列の暗号化は解除されます)。
DACPAC とデータベースの両方で列は暗号化されていますが、DACPAC の列で使用される暗号化の種類および/または列暗号化キーは、データベースの対応する列の場合と異なっています。 列のデータは暗号化解除され、DACPAC の暗号化の構成に一致するように再び暗号化されます。

また、DAC パッケージをデプロイすると、Always Encrypted の列マスター キーまたは列暗号化キーのメタデータ オブジェクトが作成または削除されることがあります。

パフォーマンスに関する考慮事項

暗号化操作を実行するには、DACPAC をデプロイするために使用するツールにより、データをデータベースから移動する必要があります。 このツールでは、データベース内で必要な暗号化構成を使用して新しい 1 つまたは複数のテーブルが作成され、元のテーブルからすべてのデータが読み込まれ、要求された暗号化操作が実行され、データを新しいテーブルにアップロードされた後、元のテーブルが新しいテーブルに入れ替えられます。 暗号化操作の実行には時間がかかる場合があります。 その間、データベースでトランザクションを書き込むことはできません。

注意

SQL Server 2019 (15.x) を使用していて、お使いの SQL Server インスタンスがセキュリティで保護されたエンクレーブで構成されている場合は、データベースからデータを移動せずに、暗号化操作をインプレースで実行できます。 「セキュリティで保護されたエンクレーブが設定された Always Encrypted を使用して列の暗号化をインプレースで構成する」を参照してください。 DACPAC のデプロイでは、インプレース暗号化は使用できないことに注意してください。

Always Encrypted がセットアップされている場合に DAC パッケージを発行するための権限

DACPAC またはターゲット データベースで Always Encrypted がセットアップされている場合に DAC パッケージを発行するには、DACPAC 内のスキーマとターゲット データベースのスキーマとの違いに応じて、次に示す権限の一部またはすべてが必要になる場合があります。

ALTER ANY COLUMN MASTER KEYALTER ANY COLUMN ENCRYPTION KEYVIEW ANY COLUMN MASTER KEY DEFINITIONVIEW ANY COLUMN ENCRYPTION KEY DEFINITION

アップグレード操作によってデータ暗号化操作がトリガーされる場合は、列マスタ ーキーにアクセスして使用するためのキー ストアのアクセス許可も必要です。 キー ストアのアクセス許可の詳細については、「Always Encrypted の列マスター キーを作成して保存する」に移動し、キー ストアに関連するセクションを見つけてください。

次の手順

参照