Always Encrypted ウィザードを使用して列暗号化を構成する
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance
Always Encrypted ウィザードは、選択したデータベースの列に対して目的の Always Encrypted の構成を設定することができる強力なツールです。 現在の構成と目的の構成に応じて、ウィザードでは、列を暗号化したり、列の暗号化を解除したり (解読)、列を再暗号化 (たとえば、新しい列暗号化キーの使用や、列に構成された現在のものとは種類が異なる暗号化の使用) したりできます。 ウィザードの 1 回の実行で、複数の列を構成することができます。
ウィザードを使うと、既存の列暗号化キーを使用して列を暗号化したり、新しい列暗号化キーまたは新しい列暗号化キーと新しい列マスター キーの両方を生成したりすることもできます。
データベースがセキュリティで保護されたエンクレーブで構成されている場合、データベースからデータを移動せずに、暗号化操作をインプレースで実行できます。 ウィザードは、暗号化する列のスキーマ変更をブロックしているすべての依存関係を削除します。 データベース エンジン内のエンクレーブを使用して、列ごとにインプレース暗号化を発行します。 暗号化が完了すると、ウィザードによって依存関係が再作成されます。 セキュリティで保護されたエンクレーブが設定された Always Encrypted の詳細については、「セキュア エンクレーブを使用する Always Encrypted」を参照してください。
データベースが セキュリティで保護されたエンクレーブで構成されていない場合、ウィザードによってセキュリティで保護されたエンクレーブを有効にすることができます。 セキュリティで保護されたエンクレーブを有効にしていない場合、またはエンクレーブ対応キーを使用していない場合、ウィザードはデータベースからデータを移動し、SSMS プロセス内で暗号化操作を実行することによって機能します。 このウィザードでは、データベース内で必要な暗号化構成を使用して新しい 1 つまたは複数のテーブルが作成され、元のテーブルからすべてのデータが読み込まれ、要求された暗号化操作が実行され、データを新しいテーブルにアップロードされた後、元のテーブルが新しいテーブルに入れ替えられます。
ヒント
Always Encrypted とセキュリティで保護されたエンクレーブを使用してインプレース暗号化を使用すると、環境内で使用可能な場合、暗号化操作の時間と信頼性が大幅に低下する可能性があります。
Note
暗号化操作の実行には時間がかかる場合があります。 その間、データベースでトランザクションを書き込むことはできません。 大きなテーブルに対する暗号化操作には、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) が含まれるキーを選択します。 ウィザードによってキーが生成されます。
現在暗号化されている列の暗号化を解除するには、暗号化の種類として [プレーン テキスト] を選択します。
Note
インプレース暗号化を利用する必要があり、既存のキーを使用している場合は、(エンクレーブ対応) という注釈が付いたエンクレーブ対応キーを必ず選択してください。
Note
ウィザードでは、テンポラル テーブルとインメモリ テーブルに対する暗号化操作はサポートされていません。 Transact-SQL を使って空のテンポラル テーブルまたはインメモリ テーブルを作成し、アプリケーションを使ってデータを挿入できます。
マスター キーの構成ページ
前のページでいずれかの列に対して自動生成された列暗号化キーを選択した場合、このページでは、既存の列マスター キーを選択するか、列暗号化キーを暗号化する新しい列マスター キーを構成する必要があります。
新しい列マスター キーを構成するときは、Windows 証明書ストアまたは Azure Key Vault で既存のキーを選択し、ウィザードを使ってデータベース内のキーに対するメタデータ オブジェクトだけを作成するか、キーとデータベース内のキーを記述するメタデータ オブジェクトの両方を生成することができます。
インプレース暗号化を使用するには、新しい列マスター キーに対して[エンクレーブ計算を許可する]を選択していることを確認してください。 このチェック ボックスをオンにできるのは、データベースがセキュリティで保護されたエンクレーブで構成されている場合のみです。
Windows 証明書ストア、Azure Key Vault、または他のキー ストアに格納する方法について詳しくは、「Always Encrypted の列マスター キーを作成して保存する」または「セキュリティで保護されたエンクレーブが設定された Always Encrypted のキーを管理する」を参照してください。
ヒント
このウィザードでは、Windows 証明書ストアおよび Azure Key Vault のキーだけを参照および作成できます。 また、新しいキーとキーを記述するデータベース メタデータ オブジェクトの両方の名前が自動生成されます。 キーのプロビジョニング方法をより詳細に制御する必要がある場合 (および列マスター キーを格納したキー ストアの選択肢がもっと必要である場合) は、[新しい列マスター キー] ダイアログと [新しい列の暗号化キー] ダイアログを使用して最初にキーを作成した後、ウィザードを実行して作成したキーを選択します。 「[新しい列マスター キー] ダイアログを使用してエンクレーブ対応の列マスター キーをプロビジョニングする」または 「エンクレーブ対応キーをプロビジョニングする 」および「 [新しい列の暗号化キー] ダイアログを使用した、エンクレーブ対応の列暗号化キーのプロビジョニング]」 を参照してください。
インプレース暗号化の設定ページ
データベースでセキュリティで保護されたエンクレーブを構成していて、エンクレーブ対応キーを使用している場合、このページでは、インプレース暗号化に必要なエンクレーブ構成証明パラメーターを指定できます。 インプレース暗号化を使用したくない場合は、[対象となる列に対してインプレース暗号化を使用 する]の選択を解除して、クライアント側の暗号化を続行します。 ウィザードでインプレース暗号化を使用できるように、このチェック ボックスをオンのままにしておくことをお勧めします。
エンクレーブ構成証明の詳細については、「Azure Attestation を使用して Always Encrypted の構成証明を構成する」を参照してください。
次のステップ
- 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 を使用してエンクレーブ対応キーをプロビジョニングする
- PowerShell での Always Encrypted を使用した列暗号化の構成
- PowerShell を使って列の暗号化をインプレースで構成する
- DAC パッケージでの Always Encrypted を使用した列暗号化の構成
- DAC パッケージを使用して列暗号化をインプレースで構成する
- Transact-SQL を使用してインプレースでの列の暗号化を構成する