適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Always Encrypted ウィザードは、選択したデータベースの列に対して目的の Always Encrypted の構成を設定することができる強力なツールです。 現在の構成と目的の構成に応じて、ウィザードでは、列を暗号化したり、列の暗号化を解除したり (解読)、列を再暗号化 (たとえば、新しい列暗号化キーの使用や、列に構成された現在のものとは種類が異なる暗号化の使用) したりできます。 ウィザードの 1 回の実行で、複数の列を構成することができます。
ウィザードを使うと、既存の列暗号化キーを使用して列を暗号化したり、新しい列暗号化キーまたは新しい列暗号化キーと新しい列マスター キーの両方を生成したりすることもできます。
データベースがセキュリティで保護されたエンクレーブで構成されている場合、データベースからデータを移動せずに、暗号化操作をインプレースで実行できます。 ウィザードは、暗号化する列のスキーマ変更をブロックしているすべての依存関係を削除します。 データベース エンジン内のエンクレーブを使用して、列ごとにインプレース暗号化を発行します。 暗号化が完了すると、ウィザードによって依存関係が再作成されます。 セキュリティで保護されたエンクレーブが設定された Always Encrypted の詳細については、「セキュア エンクレーブを使用する Always Encrypted」を参照してください。
セキュリティで保護されたエンクレーブを使用してデータベースが構成されていない場合*、ウィザードによってセキュリティで保護されたエンクレーブを有効にする機会が与えられます。 セキュリティで保護されたエンクレーブを有効にしない場合、またはエンクレーブ対応キーを使用して*ではない場合、ウィザードはデータベースからデータを移動し、SQL Server Management Studio (SSMS) プロセス内で暗号化操作を実行することによって機能します。 このウィザードでは、データベース内で必要な暗号化構成を使用して新しい 1 つまたは複数のテーブルが作成され、元のテーブルからすべてのデータが読み込まれ、要求された暗号化操作が実行され、データを新しいテーブルにアップロードされた後、元のテーブルが新しいテーブルに入れ替えられます。
ヒント
Always Encrypted とセキュリティで保護されたエンクレーブを使用してインプレース暗号化を使用すると、環境内で使用可能な場合、暗号化操作の時間と信頼性が大幅に低下する可能性があります。
注
暗号化操作の実行には時間がかかる場合があります。 その間、データベースはトランザクションを書き込められません。 大きなテーブルに対する暗号化操作には、PowerShell が推奨されるツールです。 「PowerShell での Always Encrypted を使用した列暗号化の構成」または「PowerShell を使って列の暗号化をインプレースで構成する」を参照してください。
ウィザードを使用して Always Encrypted を構成し、それをクライアント アプリケーションで使用する方法を説明したエンドツーエンドのチュートリアルについては、以下の Azure SQL Database チュートリアルをご覧ください。
Always Encrypted キーについて詳しくは、「Always Encrypted のキー管理の概要」をご覧ください。
Always Encrypted でサポートされる暗号化の種類について詳しくは、「明確な暗号化またはランダム化された暗号化の選択」をご覧ください。
アクセス許可
ウィザードを使って暗号化操作を実行するには、VIEW ANY COLUMN MASTER KEY DEFINITION および VIEW ANY COLUMN ENCRYPTION KEY DEFINITION のアクセス許可が必要です。 列マスター キーを作成、アクセス、および使用するには、キー ストアのアクセス許可も必要です。 キー ストアのアクセス許可の詳細については、「Always Encrypted の列マスター キーを作成して保存する」に移動するか、キー ストアに関連するセクションを見つけてください。
Always Encrypted ウィザードを開く
3 つの異なるレベルでウィザードを起動できます。
- データベース レベル - 異なるテーブルに存在する複数の列を暗号化する場合。
- テーブル レベル - 同じテーブルに存在する複数の列を暗号化する場合。
- 列レベル - 1 つの特定の列を暗号化する場合。
SQL Server Management Studio のオブジェクト エクスプローラー コンポーネントを使用して SQL Server に接続します。
暗号化を行います。
- 1 つのデータベースの異なるテーブルに存在する複数の列を暗号化するには、データベースを右クリックし、[タスク] をポイントして、[列の暗号化] を選択します。
- 同じテーブルに存在する複数の列を暗号化するには、テーブルに移動して右クリックし、[列の暗号化] を選択します。
- 個々の列を暗号化するには、列に移動して右クリックし、[列の暗号化] を選択します。
[列の選択] ページ
このページでは、暗号化、再暗号化、または暗号化解除する列を選択し、選択した列に対するターゲットの暗号化構成を定義します。
プレーンテキスト列 (暗号化されていない列) を暗号化するには、列の暗号化の種類 ([決定論的] または [ランダム化]) と暗号化キーを選択します。
既に暗号化されている列の暗号化の種類を変更したり、列暗号化キーをローテーション (変更) したりするには、目的の暗号化の種類とキーを選択します。
ウィザードで新しい列暗号化キーを使用して 1 つまたは複数の列を暗号化または再暗号化する場合は、名前に (New) が含まれるキーを選択します。 ウィザードによってキーが生成されます。
現在暗号化されている列の暗号化を解除するには、暗号化の種類として [プレーン テキスト] を選択します。
注
インプレース暗号化を使用する場合、既存のキーを使用している場合は、必ずエンクレーブ対応キー (注釈付き (エンクレーブ対応) を選択してください。
注
ウィザードでは、テンポラル テーブルとインメモリ テーブルに対する暗号化操作はサポートされていません。 Transact-SQL を使って空のテンポラル テーブルまたはインメモリ テーブルを作成し、アプリケーションを使ってデータを挿入できます。
[マスター キーの構成] ページ
前のページでいずれかの列に対して自動生成された列暗号化キーを選択した場合、このページでは、既存の列マスター キーを選択するか、列暗号化キーを暗号化する新しい列マスター キーを構成する必要があります。
新しい列マスター キーを構成するときは、Windows 証明書ストアまたは Azure Key Vault で既存のキーを選択し、ウィザードを使ってデータベース内のキーに対するメタデータ オブジェクトだけを作成するか、キーとデータベース内のキーを記述するメタデータ オブジェクトの両方を生成することができます。
インプレース暗号化を使用するには、新しい列マスター キーに対して[エンクレーブ計算を許可する]を選択していることを確認してください。 このチェック ボックスをオンにできるのは、データベースがセキュリティで保護されたエンクレーブで構成されている場合のみです。
Windows 証明書ストア、Azure Key Vault、またはその他のキー ストアでの列マスター キーの作成と格納の詳細については、「 Always Encrypted の列マスター キーの作成と格納 」または「 セキュリティで保護されたエンクレーブを使用した Always Encrypted のキーの管理」を参照してください。
ヒント
このウィザードでは、Windows 証明書ストアおよび Azure Key Vault のキーだけを参照および作成できます。 また、新しいキーと、キーを記述するデータベース メタデータ オブジェクトの両方の名前も自動生成されます。 キーのプロビジョニング方法をより詳細に制御する必要がある場合 (および列マスター キーを格納したキー ストアの選択肢がもっと必要である場合) は、[新しい列マスター キー] ダイアログと [新しい列の暗号化キー] ダイアログを使用して最初にキーを作成した後、ウィザードを実行して作成したキーを選択します。 「[新しい列マスター キー] ダイアログを使用してエンクレーブ対応の列マスター キーをプロビジョニングする」または 「エンクレーブ対応キーをプロビジョニングする 」および「 [新しい列の暗号化キー] ダイアログを使用した、エンクレーブ対応の列暗号化キーのプロビジョニング]」 を参照してください。
[In-Place Encryption Settings]\(インプレース暗号化の設定\) ページ
データベースでセキュリティで保護されたエンクレーブを構成していて、エンクレーブ対応キーを使用している場合、このページでは、インプレース暗号化に必要なエンクレーブ構成証明パラメーターを指定できます。 インプレース暗号化を使用したくない場合は、[対象となる列に対してインプレース暗号化を使用 する]の選択を解除して、クライアント側の暗号化を続行します。 ウィザードでインプレース暗号化を使用できるように、このチェック ボックスをオンのままにしておくことをお勧めします。
エンクレーブ構成証明の詳細については、「Azure Attestation を使用して Always Encrypted の構成証明を構成する」を参照してください。
暗号化の後
テーブルにアクセスするすべてのバッチとストアド プロシージャのプラン キャッシュをクリアして、パラメーターの暗号化情報を更新します。
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE;
注
影響を受けるクエリのプランをキャッシュから削除しないと、暗号化後のクエリの最初の実行が失敗する可能性があります。
ALTER DATABASE SCOPED CONFIGURATION CLEAR PROCEDURE_CACHE
またはDBCC FREEPROCCACHE
を使用して、一時的なクエリ パフォーマンスの低下が発生する可能性があるため、プラン キャッシュを慎重にクリアします。 キャッシュのクリアによる悪影響を最小限に抑えるために、影響を受けるクエリのみのプランを選択的に削除できます。
sp_refresh_parameter_encryptionを呼び出して、sys.parameters に永続化され、列を暗号化して無効にされた可能性がある各モジュール (ストアド プロシージャ、関数、ビュー、トリガー) のパラメーターのメタデータを更新します。
関連コンテンツ
- SQL Server Management Studio で Always Encrypted を使用した列のクエリを実行する
- セキュリティで保護されたエンクレーブを使用して Transact-SQL ステートメントを実行する
- Always Encrypted を使用したアプリケーションの開発
- チュートリアル:セキュリティで保護されたエンクレーブが設定された Always Encrypted を使用する .NET アプリケーションの開発」をご覧ください。
- 常に暗号化
- セキュリティで保護されたエンクレーブが設定された Always Encrypted
- Always Encrypted のキー管理の概要
- SQL Server Management Studio を使用して Always Encrypted を構成する
- セキュリティで保護されたエンクレーブが設定された Always Encrypted を構成して使用する
- PowerShell を使用して Always Encrypted キーをプロビジョニングする
- エンクレーブ対応キーをプロビジョニングする
- PowerShell での Always Encrypted を使用した列暗号化の構成
- PowerShell を使って列の暗号化をインプレースで構成する
- DAC パッケージでの Always Encrypted を使用した列暗号化の構成
- DAC パッケージを使用して列暗号化をインプレースで構成する
- Transact-SQL を使用してインプレースでの列の暗号化を構成する