Always Encrypted ウィザードを使用して列暗号化を構成する

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

Always Encrypted ウィザードは、選択したデータベースの列に対して目的の Always Encrypted の構成を設定することができる強力なツールです。 現在の構成と目的の構成に応じて、ウィザードでは、列を暗号化したり、列の暗号化を解除したり (解読)、列を再暗号化 (たとえば、新しい列暗号化キーの使用や、列に構成された現在のものとは種類が異なる暗号化の使用) したりできます。 ウィザードの 1 回の実行で、複数の列を構成することができます。

ウィザードを使うと、既存の列暗号化キーを使用して列を暗号化したり、新しい列暗号化キーまたは新しい列暗号化キーと新しい列マスター キーの両方を生成したりすることもできます。

データベースがセキュリティで保護されたエンクレーブで構成されている場合、データベースからデータを移動せずに、暗号化操作をインプレースで実行できます。 ウィザードは、暗号化する列のスキーマ変更をブロックしているすべての依存関係を削除します。 データベース エンジン内のエンクレーブを使用して、列ごとにインプレース暗号化を発行します。 暗号化が完了すると、ウィザードによって依存関係が再作成されます。 セキュリティで保護されたエンクレーブが設定された Always Encrypted の詳細については、「セキュア エンクレーブを使用する Always Encrypted」を参照してください。

データベースが セキュリティで保護されたエンクレーブで構成されていない場合、ウィザードによってセキュリティで保護されたエンクレーブを有効にすることができます。 セキュリティで保護されたエンクレーブを有効にしていない場合、またはエンクレーブ対応キーを使用していない場合、ウィザードはデータベースからデータを移動し、SSMS プロセス内で暗号化操作を実行することによって機能します。 このウィザードでは、データベース内で必要な暗号化構成を使用して新しい 1 つまたは複数のテーブルが作成され、元のテーブルからすべてのデータが読み込まれ、要求された暗号化操作が実行され、データを新しいテーブルにアップロードされた後、元のテーブルが新しいテーブルに入れ替えられます。

ヒント

Always Encrypted とセキュリティで保護されたエンクレーブを使用してインプレース暗号化を使用すると、環境内で使用可能な場合、暗号化操作の時間と信頼性が大幅に低下する可能性があります。

Note

暗号化操作の実行には時間がかかる場合があります。 その間、データベースでトランザクションを書き込むことはできません。 大きなテーブルに対する暗号化操作には、PowerShell が推奨されるツールです。 「PowerShell での Always Encrypted を使用した列暗号化の構成」または「PowerShell を使って列の暗号化をインプレースで構成する」を参照してください。

アクセス許可

ウィザードを使って暗号化操作を実行するには、VIEW ANY COLUMN MASTER KEY DEFINITION および VIEW ANY COLUMN ENCRYPTION KEY DEFINITION のアクセス許可が必要です。 また、列マスター キーを作成し、それにアクセスして使用するためのキー ストアのアクセス許可も必要です。 キー ストアのアクセス許可の詳細については、「Always Encrypted の列マスター キーを作成して保存する」に移動するか、キー ストアに関連するセクションを見つけてください。

Always Encrypted ウィザードを開く

3 つの異なるレベルでウィザードを起動できます。

  • データベース レベル - 異なるテーブルに存在する複数の列を暗号化する場合。
  • テーブル レベル - 同じテーブルに存在する複数の列を暗号化する場合。
  • 列レベル - 1 つの特定の列を暗号化する場合。
  1. SQL Server Management Studio のオブジェクト エクスプローラー コンポーネントを使用して SQL Server に接続します。

  2. 暗号化を行います。

    1. 1 つのデータベースの異なるテーブルに存在する複数の列を暗号化するには、データベースを右クリックし、[タスク] をポイントして、[列の暗号化] を選択します。
    2. 同じテーブルに存在する複数の列を暗号化するには、テーブルに移動して右クリックし、[列の暗号化] を選択します。
    3. 個々の列を暗号化するには、列に移動して右クリックし、[列の暗号化] を選択します。

列の選択ページ

このページでは、暗号化、再暗号化、または暗号化解除する列を選択し、選択した列に対するターゲットの暗号化構成を定義します。

プレーンテキスト列 (暗号化されていない列) を暗号化するには、列の暗号化の種類 ([決定論的] または [ランダム化]) と暗号化キーを選択します。

既に暗号化されている列の暗号化の種類を変更したり、列暗号化キーをローテーション (変更) したりするには、目的の暗号化の種類とキーを選択します。

ウィザードで新しい列暗号化キーを使用して 1 つまたは複数の列を暗号化または再暗号化する場合は、名前に (New) が含まれるキーを選択します。 ウィザードによってキーが生成されます。

現在暗号化されている列の暗号化を解除するには、暗号化の種類として [プレーン テキスト] を選択します。

Note

インプレース暗号化を利用する必要があり、既存のキーを使用している場合は、(エンクレーブ対応) という注釈が付いたエンクレーブ対応キーを必ず選択してください。

Note

ウィザードでは、テンポラル テーブルとインメモリ テーブルに対する暗号化操作はサポートされていません。 Transact-SQL を使って空のテンポラル テーブルまたはインメモリ テーブルを作成し、アプリケーションを使ってデータを挿入できます。

マスター キーの構成ページ

前のページでいずれかの列に対して自動生成された列暗号化キーを選択した場合、このページでは、既存の列マスター キーを選択するか、列暗号化キーを暗号化する新しい列マスター キーを構成する必要があります。

新しい列マスター キーを構成するときは、Windows 証明書ストアまたは Azure Key Vault で既存のキーを選択し、ウィザードを使ってデータベース内のキーに対するメタデータ オブジェクトだけを作成するか、キーとデータベース内のキーを記述するメタデータ オブジェクトの両方を生成することができます。

インプレース暗号化を使用するには、新しい列マスター キーに対して[エンクレーブ計算を許可する]を選択していることを確認してください。 このチェック ボックスをオンにできるのは、データベースがセキュリティで保護されたエンクレーブで構成されている場合のみです。

Windows 証明書ストア、Azure Key Vault、または他のキー ストアに格納する方法について詳しくは、「Always Encrypted の列マスター キーを作成して保存する」または「セキュリティで保護されたエンクレーブが設定された Always Encrypted のキーを管理する」を参照してください。

ヒント

このウィザードでは、Windows 証明書ストアおよび Azure Key Vault のキーだけを参照および作成できます。 また、新しいキーとキーを記述するデータベース メタデータ オブジェクトの両方の名前が自動生成されます。 キーのプロビジョニング方法をより詳細に制御する必要がある場合 (および列マスター キーを格納したキー ストアの選択肢がもっと必要である場合) は、[新しい列マスター キー] ダイアログと [新しい列の暗号化キー] ダイアログを使用して最初にキーを作成した後、ウィザードを実行して作成したキーを選択します。 「[新しい列マスター キー] ダイアログを使用してエンクレーブ対応の列マスター キーをプロビジョニングする」または 「エンクレーブ対応キーをプロビジョニングする 」および「 [新しい列の暗号化キー] ダイアログを使用した、エンクレーブ対応の列暗号化キーのプロビジョニング]」 を参照してください。

インプレース暗号化の設定ページ

データベースでセキュリティで保護されたエンクレーブを構成していて、エンクレーブ対応キーを使用している場合、このページでは、インプレース暗号化に必要なエンクレーブ構成証明パラメーターを指定できます。 インプレース暗号化を使用したくない場合は、[対象となる列に対してインプレース暗号化を使用 する]の選択を解除して、クライアント側の暗号化を続行します。 ウィザードでインプレース暗号化を使用できるように、このチェック ボックスをオンのままにしておくことをお勧めします。

エンクレーブ構成証明の詳細については、「Azure Attestation を使用して Always Encrypted の構成証明を構成する」を参照してください。

次のステップ

関連項目