次の方法で共有


SQL Server ビッグ データ クラスターの外部キー プロバイダー

重要

Microsoft SQL Server 2019 ビッグ データ クラスターのアドオンは廃止されます。 SQL Server 2019 ビッグ データ クラスターのサポートは、2025 年 2 月 28 日に終了します。 ソフトウェア アシュアランス付きの SQL Server 2019 を使用する既存の全ユーザーはプラットフォームで完全にサポートされ、ソフトウェアはその時点まで SQL Server の累積更新プログラムによって引き続きメンテナンスされます。 詳細については、お知らせのブログ記事と「Microsoft SQL Server プラットフォームのビッグ データ オプション」を参照してください。

この記事では、キー管理のために SQL Server ビッグ データ クラスターで外部キー プロバイダーを構成する方法について詳しく説明します。

SQL Server ビッグ データ クラスターでのキー バージョンの使用方法の詳細については、「SQL Server ビッグ データ クラスター のキー バージョン」を参照してください。

保存時暗号化の構成と使用方法について詳しく知りたい場合は、以下のガイドを参照してください。

[前提条件]

外部プロバイダーを使用したルート キー暗号化

SQL Server ビッグ データ クラスターに外部キーを取り込む機能により、メイン暗号化キーは、顧客がデプロイするアプリケーションを使用して公開キーをフェッチします。 HDFS キーをローテーションして使用すると、HDFS キーの暗号化を解除する呼び出しがコントロール プレーンに送信され、顧客が提供するキー識別子を使用してアプリケーションにリダイレクトされます。 SQL Server の場合、暗号化要求は、コントロール プレーンによって送信され、実行されます。これは公開キーがあるためです。 SQL Server からデータ暗号化キー (DEK) を復号化する要求もコントロール プレーンに送信され、ハードウェア セキュリティ モジュール (HSM) などの外部プロバイダーとインターフェイスするアプリケーションにリダイレクトされます。

図は、カスタマー キーがインストールされた後の状況を表します。

次の図では、コントロール プレーンで外部キーを構成する場合の操作について説明します。

図では、コントロール プレーンで外部キーを構成するときの相互作用について説明します。

キーがインストールされると、さまざまなペイロードの暗号化と暗号化解除がメイン暗号化キーによって保護されます。 この保護は、コントロール プレーンにルーティングされた復号化呼び出しがキー管理サービス (KMS) プラグイン アプリにルーティングされる点を除いて、システム管理キーに似ています。 KMS プラグイン アプリは、HSM、Hashicorp Vault、または別の製品などの適切な場所に要求をルーティングします。

コンフィギュレーション

提供されるテンプレート アプリケーションは、外部キー プロバイダーとのインターフェイスに使用されるプラグインです。 選択した外部キー プロバイダーとの統合ポイントとして機能するには、このアプリケーションをカスタマイズしてビッグ データ クラスターにデプロイする必要があります。

テンプレート アプリケーションでは、 SoftHSM を使用して標準の PKCS11 プロトコルを使用して外部プロバイダーの実装と統合する方法の例があります。 Azure Key Vault と Hashicorp Vault の使用例もあります。 テンプレート アプリケーションは、参照実装として as-is 提供されます。

次のセクションでは、SQL Server データベースと HDFS 暗号化ゾーンの暗号化のルート キーとして機能するように外部キー プロバイダーを構成するために必要な手順について説明します。

外部キー プロバイダーで RSA 2048 キーを作成する

2048 ビット RSA キーを使用して PEM ファイルを作成し、外部キー プロバイダーのキー値ストアにアップロードします。

たとえば、キー ファイルは パス bdc-encryption-secret の Hashicorp Vault の KV ストアに追加され、シークレットの名前は rsa2048 にすることができます。

ビッグ データ クラスターでの統合アプリケーションのカスタマイズとデプロイ

  1. ローカル コンピューターで、ビッグ データ クラスター AppDeploy テンプレート アプリケーション kms_plugin_app含まれるフォルダーに移動します。

  2. いずれかのテンプレートを選択し、シナリオに合わせて調整して、アプリケーションをカスタマイズします。

    • ファイル custom_softhsm.py には、SoftHSM を使用した参照実装が含まれています
    • Azure Key Vault の例を含むファイル custom_akv.py
    • ファイル custom_hcv.py に HashiCorp Vault の例が含まれています

    注意事項

    統合ポイントである関数コントラクトまたはシグネチャは変更しないでください。 必要に応じて、関数の実装のみを変更します。

  3. 上記のテンプレートから作成するファイルに適宜名前を付けます。 たとえば、custom_softhsm.pyをmy_custom_integration_v1.pyとして保存し、カスタマイズを実行します。 このアプローチは、次の手順で重要です。

  4. app.py は、アプリケーションを読み込むエントリ ポイントです。 このファイルでは、前の手順の.py拡張子を持たないカスタム ファイル名を指すように 11 行目を変更する必要があります。 上記の例に従って、次の変更を行います。

    ...
    import utils
    from json_objects import EncryptDecryptRequest
    import custom_softhsm as custom
    
    def handler(operation, payload, pin, key_attributes, version):
    ...
    

    を次の値に設定します。

    ...
    import utils
    from json_objects import EncryptDecryptRequest
    import my_custom_integration_v1 as custom
    
    def handler(operation, payload, pin, key_attributes, version):
    ...
    
  5. spec.yaml を含むフォルダーから、次のコマンドを使用して、アプリケーションをビッグ データ クラスターにデプロイします。

    azdata app create -s
    
  6. アプリケーションのデプロイが完了するのを待ち、次のコマンドを使用して準備完了状態を確認できます。

    azdata app list
    

外部キー プロバイダーを使用するようにビッグ データ クラスターを構成する

  1. AZDATA_EXTERNAL_KEY_PIN環境変数を設定して、外部キー プロバイダーへのアクセスを許可するトークンを指定します。

    export AZDATA_EXTERNAL_KEY_PIN=<your PIN/token here>
    

    統合アプリケーションのデプロイ プロセスでは、トークンを使用して外部キー プロバイダーにアクセスします。 ただし、 AZDATA_EXTERNAL_KEY_PIN 変数は、アプリケーションで解釈できるように、ビッグ データ クラスターコントロール プレーンに暗号化されて保存されます。 別の認証メカニズムも使用できますが、アプリケーションを変更する必要があります。 カスタム*.py Python アプリケーションで、使用されている完全な統合ロジックを確認します。

  2. 次の azdata コマンド構造を使用して、ビッグ データ クラスターのキーを構成します。 必要なパラメーターを特定の実装に変更します。 次の例では、 custom2.py によって提供される HashiCorp Vault 構造体を使用します。

    azdata bdc kms update --app-name <YOUR-APP-NAME> --app-version <YOUR-APP-VERSION> \
    --key-attributes keypath=<YOUR-KEY-PATH>,vaulturl=http://<YOUR-IP>:<YOUR-PORT>,keyname=<YOUR-KEY-NAME> \
    --provider External
    

    --provider External パラメーター値は、統合アプリケーションを主要な操作のエンドポイントとして使用するようにビッグ データ クラスター KMS を構成します。

  3. 次のコマンドを使用して、ルート暗号化キーを外部管理キーとして確認します。

    azdata bdc kms show
    

新しいキーを使用してデータベースと暗号化ゾーンを暗号化する

構成後も、SQL Server データベースと HDFS 暗号化ゾーンは、前のキー階層によって暗号化されます。 外部管理キーを使用して明示的に暗号化する必要があります。

SQL Server では、外部管理キーに基づく新しい非対称キーがインストールされます。 これを使用してデータベースを暗号化します。

非対称キーは、次の T-SQL クエリと sys.asymmetric_keys システム カタログ ビューを使用して確認できます。

USE master;
select * from sys.asymmetric_keys;

非対称キーは、名前付け規則 tde_asymmetric_key_<version>と共に表示されます。 その後、SQL Server 管理者は、ALTER DATABASE ENCRYPTION KEY を使用して、DEK の保護機能を非対称キーに変更できます。 たとえば、次の T-SQL コマンドを使用します。

USE db1;
ALTER DATABASE ENCRYPTION KEY ENCRYPTION BY SERVER ASYMMETRIC KEY tde_asymmetric_key_0;
  1. 次のコマンドを実行して、現在の暗号化キーを確認します。

    azdata bdc hdfs key describe
    
  2. 暗号化ゾーン キーを保護するキーのバージョンに関する情報を取得します。

    azdata bdc hdfs key describe --name <key name>
    
  3. キーを新しい外部マネージド キーにロールします。

    azdata bdc hdfs key roll --name <new key name>
    
  4. 次のコマンドを使用して暗号化を開始します。

    azdata bdc hdfs encryption-zone reencrypt –-path <your EZ path> --action start
    
  5. 次のコマンドを使用して、キー階層を確認します。

    azdata bdc kms show
    azdata bdc hdfs key describe
    

次のステップ