SQL Server Management Studio を使用して Always Encrypted キーをプロビジョニングする

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

この記事では、SQL Server Management Studio (SSMS) を使用して、Always Encrypted の列マスター キーと列暗号化キーをプロビジョニングするための手順について説明します。 暗号化キーをプロビジョニングする際は、SSMS の最新の一般提供 (GA) バージョンをインストールするようにしてください。

推奨されるベスト プラクティスやセキュリティ上の重要な考慮事項など、Always Encrypted のキー管理の概要については、「Always Encrypted のキー管理の概要」をご覧ください。

[新しい列マスター キー] ダイアログを使用して列マスター キーをプロビジョニングする

[新しい列マスター キー] ダイアログでは、列マスター キーを生成することも、キー ストア内の既存のキーを選択することもできます。さらに、作成または選択したキーに対して列マスター キーのメタデータをデータベースに作成することができます。

  1. オブジェクト エクスプローラーを使用して、データベースの下にあるノードを [セキュリティ] > [Always Encrypted キー] の順に移動します。

  2. [列マスター キー] ノードを右クリックし、[新しい列マスター キー...] を選択します。

  3. [新しい列マスター キー] ダイアログで、列マスター キーのメタデータ オブジェクトの名前を入力します。

  4. キー ストアを選択します。

    • 証明書ストア - 現在のユーザー - Windows 証明書ストアでの現在のユーザーの証明書ストアの場所を示します。これは個人的なストアです。

    • 証明書ストア - ローカル コンピューター - Windows 証明書ストアでのローカル コンピューターの証明書ストアの場所を示します。

    • Azure Key Vault - Azure にサインインする必要があります ([サインイン] をクリック)。 サインインすると、ご自分の Azure サブスクリプションのいずれかと、キー コンテナーまたはマネージド HSM を選択できるようになります (SSMS 18.9 以降が必要)。

      Note

      Azure Key Vault のマネージド HSM に格納されている列マスター キーを使用するには、SSMS 18.9 以降のバージョンが必要です。

    • キー ストア プロバイダー (KSP) - Cryptography Next Generation (CNG) API を実装するキー ストア プロバイダー (KSP) を介してアクセスできるキー ストアを示します。 通常、この種のストアは、ハードウェア セキュリティ モジュール (HSM) となります。 このオプションを選択したら、KSP を選択する必要があります。 既定では、Microsoft ソフトウェア キー ストア プロバイダー が選択されます。 HSM に格納されている列マスター キーを使用する場合は、デバイス用の KSP を選択します (ダイアログを開く前に、コンピューターにインストールし、構成しておく必要があります)。

    • 暗号化サービス プロバイダー (CSP) - 暗号化 API (CAPI) を実装する暗号化サービス プロバイダー (CSP) を介してアクセスできるキー ストアです。 通常、そのようなストアは、ハードウェア セキュリティ モジュール (HSM) です。 このオプションを選択したら、CSP を選択する必要があります。 HSM に格納されている列マスター キーを使用する場合は、デバイス用の CSP を選択します (ダイアログを開く前に、コンピューターにインストールし、構成しておく必要があります)。

    Note

    CAPI は非推奨の API であるため、既定では暗号化サービス プロバイダー (CAPI) オプションは無効になります。 これを有効にするには、Windows レジストリの [HKEY_CURRENT_USER\Software\Microsoft\Microsoft SQL Server\sql13\Tools\Client\Always Encrypted] キーの下に CAPI Provider Enabled DWORD 値を作成し、これを 1 に設定します。 キー ストアで CNG がサポートされていない場合は、CAPI ではなく CNG を使用する必要があります。

    上記のキー ストアの詳細については、「Always Encrypted の列マスター キーの作成と保存」をご覧ください。

  5. SQL Server 2019 (15.x) を使用していて、お使いの SQL Server インスタンスがセキュア エンクレーブを使って構成されている場合は、[エンクレーブ計算を許可する] チェックボックスをオンにして、マスター キーをエンクレーブ対応にすることができます。 詳細については、「セキュア エンクレーブを使用する Always Encrypted」をご覧ください。

    Note

    お使いの SQL Server インスタンスがセキュア エンクレーブを使って正しく構成されていない場合は、[エンクレーブ計算を許可する] チェックボックスは表示されません。

  6. キー ストアにある既存のキーを選択するか、あるいは [キーの生成] ボタンまたは [証明書の生成] ボタンをクリックしてキー ストアにキーを作成します。

  7. [OK] をクリックすると、新しいキーが一覧に表示されます。

ダイアログを完了すると、SQL Server Management Studio によって、データベースに列マスター キーのメタデータが作成されます。 ダイアログでは、CREATE COLUMN MASTER KEY (Transact-SQL) ステートメントを生成し発行します。

エンクレーブ対応の列マスター キーを構成する場合は、SSMS により、そのメタデータも列マスター キーを使って署名されます。

列マスター キーをプロビジョニングするための権限

ダイアログを使って列マスター キーを作成するためには、そのデータベースで、ALTER ANY COLUMN MASTER KEY データベース権限が必要です。 キー列マスター キーにアクセスして使用するには、キー ストアのアクセス許可も必要です。 キーの管理操作に必要なキー ストアのアクセス許可の詳細情報については、「Always Encrypted の列マスター キーを作成して保存する」を参照するか、キー ストアに関するセクションを確認してください。

[新しい列の暗号化キー] ダイアログを使用して列の暗号化キーをプロビジョニングする

[新しい列の暗号化キー] ダイアログでは、列暗号化キーを生成し、それを列マスター キーで暗号化し、データベースに列暗号化キーのメタデータを作成することができます。

  1. オブジェクト エクスプローラーを使用して、データベースの下にあるフォルダーを [セキュリティ]、[Always Encrypted キー] の順に移動します。
  2. [列暗号化キー] フォルダーを右クリックし、[新しい列の暗号化キー...] を選択します。
  3. [新しい列の暗号化キー] ダイアログで、列暗号化キーのメタデータ オブジェクトの名前を入力します。
  4. データベースの列マスター キーを表すメタデータ オブジェクトを選択します。
  5. OK をクリックします。

ダイアログが完了すると、SQL Server Management Studio (SSMS) によって新しい列暗号化キーが生成されます。 その後 SSMS では、データベースから選択した列マスター キーのメタデータが取得されます。 次に、SSMS では、列マスター キーのメタデータを使って、その列マスター キーを含むキー ストアとの交信が行われ、列暗号化キーが暗号化されます。 最後に、CREATE COLUMN ENCRYPTION KEY (Transact-SQL) ステートメントを生成して発行することで、SSMS によって新しい列暗号化のメタデータ データがデータベースに作成されます。

Note

Azure Key Vault のマネージド HSM に格納されている列マスター キーを使用するには、SSMS 18.9 以降のバージョンが必要です。

列暗号化キーをプロビジョニングするためのアクセス許可

ダイアログを使って列暗号化キーのメタデータを作成し、列マスター キーのメタデータにアクセスするには、ALTER ANY COLUMN ENCRYPTION KEY および VIEW ANY COLUMN MASTER KEY DEFINITION データベース権限が必要です。 列マスター キーにアクセスして使用するには、キー ストアのアクセス許可も必要です。 キーの管理操作に必要なキー ストアのアクセス許可の詳細については、「Always Encrypted の列マスター キーを作成して保存する」に移動し、キー ストアに関するセクションを見つけてください。

Always Encrypted ウィザードを使って Always Encrypted キーをプロビジョニングする

Always Encrypted ウィザードは、選択したデータベースの列の暗号化、暗号化解除、および再暗号化を行うためのツールです。 そこでは、既に構成されているキーを使用できますが、新しい列マスター キーと新しい列暗号化を生成することもできます。

次のステップ

参照