Important
Microsoft SQL Server 2019 ビッグ データ クラスターは廃止されました。 SQL Server 2019 ビッグ データ クラスターのサポートは、2025 年 2 月 28 日の時点で終了しました。 詳細については、Microsoft SQL Server プラットフォーム の発表ブログ投稿 と ビッグ データ オプションを参照してください。
この記事では、キー管理のために SQL Server ビッグ データ クラスターで外部キー プロバイダーを構成する方法について詳しく説明します。
SQL Server ビッグ データ クラスターでのキー バージョンの使用方法の詳細については、「SQL Server ビッグ データ クラスター のキー バージョン」を参照してください。
保存時暗号化の構成と使用方法について詳しく知りたい場合は、以下のガイドを参照してください。
- 保存時の暗号化の概念と構成ガイド
- SQL Server ビッグ データ クラスター HDFS 暗号化ゾーンの使用ガイド
- SQL Server ビッグ データ クラスターの保存時の Transparent Data Encryption (TDE) の使用ガイド
Prerequisites
- SQL Server 2019 ビッグ データ クラスターのリリース ノート。 CU11+ required.
- azdata 20.3.5 以降を含むビッグ データ ツール。
- Kubernetes 管理者特権を持つ SQL Server ビッグ データ クラスター ユーザー (clusterAdmins ロールのメンバー)。 詳細については、「Active Directory モードでビッグ データ クラスター アクセスを管理する」を参照してください。
- 外部プロバイダー テンプレート アプリケーション。 静止時のSQL Server BDC 暗号化を参照してください。
外部プロバイダーを使用したルート キー暗号化
SQL Server ビッグ データ クラスターに外部キーを取り込む機能により、メイン暗号化キーは、顧客がデプロイするアプリケーションを使用して公開キーをフェッチします。 HDFS キーをローテーションして使用すると、HDFS キーの暗号化を解除する呼び出しがコントロール プレーンに送信され、顧客が提供するキー識別子を使用してアプリケーションにリダイレクトされます。 SQL Server の場合、暗号化要求は、コントロール プレーンによって送信され、実行されます。これは公開キーがあるためです。 SQL Server からデータ暗号化キー (DEK) を復号化する要求もコントロール プレーンに送信され、ハードウェア セキュリティ モジュール (HSM) などの外部プロバイダーとインターフェイスするアプリケーションにリダイレクトされます。
次の図では、コントロール プレーンで外部キーを構成する場合の操作について説明します。
キーがインストールされると、さまざまなペイロードの暗号化と暗号化解除がメイン暗号化キーによって保護されます。 この保護は、コントロール プレーンにルーティングされた復号化呼び出しがキー管理サービス (KMS) プラグイン アプリにルーティングされる点を除いて、システム管理キーに似ています。 KMS プラグイン アプリは、HSM、Hashicorp Vault、または別の製品などの適切な場所に要求をルーティングします。
Configuration
提供されるテンプレート アプリケーションは、外部キー プロバイダーとのインターフェイスに使用されるプラグインです。 選択した外部キー プロバイダーとの統合ポイントとして機能するには、このアプリケーションをカスタマイズしてビッグ データ クラスターにデプロイする必要があります。
テンプレート アプリケーションでは、 SoftHSM を使用して標準の PKCS11 プロトコルを使用して外部プロバイダーの実装と統合する方法の例があります。 Azure Key Vault と Hashicorp Vault の使用例もあります。 テンプレート アプリケーションは、参照実装として as-is 提供されます。
次のセクションでは、SQL Server データベースと HDFS 暗号化ゾーンの暗号化のルート キーとして機能するように外部キー プロバイダーを構成するために必要な手順について説明します。
外部キー プロバイダーで RSA 2048 キーを作成する
2048 ビット RSA キーを使用して PEM ファイルを作成し、外部キー プロバイダーのキー値ストアにアップロードします。
たとえば、キー ファイルは パス bdc-encryption-secret の Hashicorp Vault の KV ストアに追加され、シークレットの名前は rsa2048 にすることができます。
ビッグ データ クラスターでの統合アプリケーションのカスタマイズとデプロイ
ローカル コンピューターで、ビッグ データ クラスター AppDeploy テンプレート アプリケーション kms_plugin_app含まれるフォルダーに移動します。
いずれかのテンプレートを選択し、シナリオに合わせて調整して、アプリケーションをカスタマイズします。
- ファイル custom_softhsm.py には、SoftHSM を使用した参照実装が含まれています
- Azure Key Vault の例を含むファイル custom_akv.py
- ファイル custom_hcv.py に HashiCorp Vault の例が含まれています
Caution
統合ポイントである関数コントラクトまたはシグネチャは変更しないでください。 必要に応じて、関数の実装のみを変更します。
上記のテンプレートから作成するファイルに適宜名前を付けます。 たとえば、custom_softhsm.pyをmy_custom_integration_v1.pyとして保存し、カスタマイズを実行します。 このアプローチは、次の手順で重要です。
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): ...spec.yaml を含むフォルダーから、次のコマンドを使用して、アプリケーションをビッグ データ クラスターにデプロイします。
azdata app create -sアプリケーションのデプロイが完了するのを待ち、次のコマンドを使用して準備完了状態を確認できます。
azdata app list
外部キー プロバイダーを使用するようにビッグ データ クラスターを構成する
AZDATA_EXTERNAL_KEY_PIN環境変数を設定して、外部キー プロバイダーへのアクセスを許可するトークンを指定します。export AZDATA_EXTERNAL_KEY_PIN=<your PIN/token here>Note
統合アプリケーションのデプロイ プロセスでは、トークンを使用して外部キー プロバイダーにアクセスします。 ただし、
AZDATA_EXTERNAL_KEY_PIN変数は、アプリケーションで解釈できるように、ビッグ データ クラスターコントロール プレーンに暗号化されて保存されます。 別の認証メカニズムも使用できますが、アプリケーションを変更する必要があります。 カスタム*.py Python アプリケーションで、使用されている完全な統合ロジックを確認します。次の
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 を構成します。次のコマンドを使用して、ルート暗号化キーを外部管理キーとして確認します。
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;
次のコマンドを実行して、現在の暗号化キーを確認します。
azdata bdc hdfs key describe暗号化ゾーン キーを保護するキーのバージョンに関する情報を取得します。
azdata bdc hdfs key describe --name <key name>キーを新しい外部マネージド キーにロールします。
azdata bdc hdfs key roll --name <new key name>次のコマンドを使用して暗号化を開始します。
azdata bdc hdfs encryption-zone reencrypt –-path <your EZ path> --action start次のコマンドを使用して、キー階層を確認します。
azdata bdc kms show azdata bdc hdfs key describe