顧客管理の暗号鍵(CMEK)を使用する

このページでは、Cloud Data Fusion で Cloud Key Management Service(Cloud KMS)の暗号鍵を使用する方法を説明します。

顧客管理の暗号鍵(CMEK)を使用すると、Cloud KMS で管理可能な鍵で保存データを暗号化できます。CMEK では、ユーザーはテナント プロジェクトの Google 内部リソースに書き込まれたデータと、Cloud Data Fusion パイプラインによって書き込まれたデータを管理できます。

  • パイプライン ログとメタデータ
  • Dataproc クラスタ メタデータ
  • さまざまな Cloud Storage、BigQuery、Pub/Sub、Spanner のデータシンクやアクション、ソース

Cloud Data Fusion のリソース

CMEK をサポートする Cloud Data Fusion プラグインのリストについては、サポートされているプラグインをご覧ください。

Cloud Data Fusion は、Dataproc クラスタの CMEK をサポートしています。Cloud Data Fusion は、パイプラインで使用する一時的な Dataproc クラスタを作成し、パイプラインが完了するとクラスタを削除します。CMEK は、以下に書き込まれるクラスタ メタデータを保護します。

  • クラスタ VM にアタッチされた永続ディスク(PD)
  • 自動作成された、またはユーザーが作成した Dataproc ステージング バケットに書き込まれたジョブドライバの出力とその他のメタデータ

CMEK を設定する

Cloud KMS 鍵を作成する

Cloud Data Fusion インスタンスを含む Google Cloud プロジェクト、または別のユーザー プロジェクトで Cloud KMS 鍵を作成します。Cloud KMS キーリングの場所は、インスタンスを作成するリージョンと一致する必要があります。Cloud Data Fusion は常に特定のリージョンに関連付けられているため、マルチリージョンまたはグローバル リージョン鍵をインスタンス レベルで指定することはできません。

鍵のリソース名を取得する

REST API

次のコマンドを使用して、作成した鍵のリソース名を取得します。

projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME

次のように置き換えます。

  • PROJECT_ID: Cloud Data Fusion インスタンスをホストするお客様のプロジェクト
  • REGION: ロケーションに近い Google Cloud リージョンus-east1 など)
  • KEY_RING_NAME: 暗号鍵をグループ化するキーリングの名前
  • KEY_NAME: Cloud KMS 鍵名

Console

  1. [暗号鍵] ページに移動します。

    [暗号鍵] に移動

  2. 鍵の横にあるその他)をクリックします。

  3. Copy Resource Name: リソース名をクリップボードにコピーします。

プロジェクトのサービス アカウントを更新して、鍵を使用する

作成した鍵を使用するようにプロジェクトのサービス アカウントを設定するには:

  1. 必須: Cloud KMS 暗号鍵の暗号化 / 復号のロール(roles/cloudkms.cryptoKeyEncrypterDecrypter)を Cloud Data Fusion サービス エージェントに付与します。(特定のリソースのサービス アカウントへのロールの付与をご覧ください)。このアカウントの形式は次のとおりです。

    service-PROJECT_NUMBER@gcp-sa-datafusion.iam.gserviceaccount.com

    Cloud Data Fusion サービス エージェントに Cloud KMS 暗号鍵の暗号化 / 復号のロールを付与すると、Cloud Data Fusion で CMEK を使用してテナント プロジェクトに保存されている顧客データを暗号化できるようになります。

  2. 必須: Cloud KMS 暗号鍵の暗号化 / 復号のロールCompute Engine サービス エージェントに付与します(Cloud Storage サービス アカウントへの Cloud KMS 鍵の割り当てをご覧ください)。このアカウントには、デフォルトで Compute Engine サービス エージェントのロールが付与されます。このアカウントの形式は次のとおりです。

    service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com

    Compute Engine サービス エージェントに Cloud KMS 暗号鍵の暗号化 / 復号のロールを付与すると、Cloud Data Fusion で CMEK を使用して、パイプラインで実行されている Dataproc クラスタによって書き込まれた永続ディスク(PD)メタデータを暗号化できます。

  3. 必須: Cloud KMS 暗号鍵の暗号化 / 復号のロールを Cloud Storage サービス エージェントに付与します(Cloud Storage サービス エージェントへの Cloud KMS 鍵の割り当てをご覧ください)。このサービス エージェントの形式は次のとおりです。

    service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com

    Cloud KMS 暗号鍵の暗号化 / 復号のロールを Cloud Storage サービス エージェントに付与すると、Dataproc クラスタのステージング バケットに書き込まれるデータと、パイプラインで使用されるその他すべての Cloud Storage リソースに書き込まれるデータを、Cloud Data Fusion が CMEK を使用して暗号化できるようになります。

  4. 必須: Cloud KMS 暗号鍵の暗号化 / 復号のロールを Google Cloud Dataproc サービス エージェントに付与します。このサービス エージェントの形式は次のとおりです。

    service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com

  5. 省略可: パイプラインで BigQuery リソースを使用している場合は、Cloud KMS 暗号鍵の暗号化/復号のロールを BigQuery サービス アカウントに付与します(暗号化と復号の権限を付与するをご覧ください)。このアカウントの形式は次のとおりです。

    bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com

  6. 省略可: パイプラインで Pub/Sub リソースを使用している場合は、Cloud KMS 暗号鍵の暗号化/復号のロールを Pub/Sub サービス アカウントに付与します(顧客管理の暗号鍵の使用をご覧ください)。このアカウントの形式は次のとおりです。

    service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com

  7. 省略可: パイプラインで Spanner リソースを使用している場合は、Cloud KMS 暗号鍵の暗号化 / 復号のロールを Spanner サービス アカウントに付与します。このアカウントの形式は次のとおりです。

    service-PROJECT_NUMBER@gcp-sa-spanner.iam.gserviceaccount.com

CMEK を使用して Cloud Data Fusion インスタンスを作成する

CMEK は、Cloud Data Fusion バージョン 6.5.0 以降のすべてのエディションで使用できます。

REST API

  1. 顧客管理の暗号鍵を使用してインスタンスを作成するには、次の環境変数を設定します。

    export PROJECT=PROJECT_ID
    export LOCATION=REGION
    export INSTANCE=INSTANCE_ID
    export DATA_FUSION_API_NAME=datafusion.googleapis.com
    export KEY=KEY_NAME
    

    次のように置き換えます。

    • PROJECT_ID: Cloud Data Fusion インスタンスをホストするお客様のプロジェクト
    • REGION: ロケーションに近い Google Cloud リージョン(us-east1 など)
    • INSTANCE_ID: Cloud Data Fusion インスタンスの名前
    • KEY_NAME: CMEK 鍵の完全なリソース名
  2. 次のコマンドを実行して、Cloud Data Fusion インスタンスを作成します。

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" https://$DATA_FUSION_API_NAME/v1/projects/$PROJECT/locations/$LOCATION/instances?instance_id=INSTANCE -X POST -d '{"description": "CMEK-enabled CDF instance created through REST.", "type": "BASIC", "cryptoKeyConfig": {"key_reference": "$KEY"} }'
    

Console

  1. Cloud Data Fusion のページに移動します。

  2. [インスタンス] をクリックしてから、[インスタンスを作成] をクリックします。

    [インスタンス] に移動

  3. [詳細オプション] で、[顧客管理の暗号鍵(CMEK)を使用する] を選択します。

  4. [顧客管理の暗号鍵を選択] フィールドで、鍵のリソース名を選択します。

    暗号鍵の名前を選択する

  5. インスタンスの詳細をすべて入力したら、[作成] をクリックします。インスタンスを使用する準備が整うと、[インスタンス] ページに表示されます。

インスタンスで CMEK が有効になっているかどうかを確認する

Console

インスタンスの詳細を表示します。

  1. Google Cloud コンソールで、Cloud Data Fusion のページに移動します。

  2. [インスタンス] をクリックし、インスタンスの名前をクリックして [インスタンスの詳細] ページに移動します。

    [インスタンス] に移動

CMEK が有効になっている場合、[暗号鍵] フィールドに [利用可能] と表示されます。

CMEK が無効になっている場合、[暗号鍵] フィールドに [利用不可] と表示されます。

サポートされているプラグインで CMEK を使用する

暗号鍵の名前を設定する際には、次の形式を使用します。

projects/PROJECT_ID/locations/REGION/keyRings/KEY_RING_NAME/cryptoKeys/KEY_NAME

暗号鍵の名前

CMEK をサポートする Cloud Data Fusion プラグインの鍵の動作を次の表に示します。

サポートされているプラグイン 鍵の動作
Cloud Data Fusion のシンク
Cloud Storage プラグインによって作成されたバケットに書き込まれたデータを暗号化します。バケットがすでに存在する場合、この値は無視されます。
Cloud Storage の複数ファイル プラグインによって作成されたバケットに書き込まれたデータを暗号化します。
BigQuery プラグインによって作成されたバケット、データセット、テーブルに書き込まれたデータを暗号化します。
BigQuery の複数テーブル プラグインによって作成されたバケット、データセット、テーブルに書き込まれたデータを暗号化します。
Pub/Sub プラグインによって作成されたトピックに書き込まれたデータを暗号化します。トピックがすでに存在する場合、この値は無視されます。
Spanner プラグインによって作成されたデータベースに書き込まれたデータを暗号化します。データベースがすでに存在する場合、この値は無視されます。
Cloud Data Fusion のアクション
Cloud Storage の作成
Cloud Storage のコピー
Cloud Storage の移動
Cloud Storage 完了ファイル マーカー
プラグインによって作成されたバケットに書き込まれたデータを暗号化します。バケットがすでに存在する場合、この値は無視されます。
BigQuery の実行 クエリ結果を保存するためにプラグインが作成するデータセットまたはテーブルに書き込まれたデータを暗号化します。これは、クエリ結果を BigQuery テーブルに保存する場合にのみ適用されます。
Cloud Data Fusion のソース
BigQuery ソース プラグインによって作成されたバケットに書き込まれたデータを暗号化します。バケットがすでに存在する場合、この値は無視されます。
Cloud Data Fusion SQL エンジン
BigQuery Pushdown Engine プラグインによって作成されたバケット、データセット、テーブルに書き込まれたデータを暗号化します。

Dataproc クラスタ メタデータで CMEK を使用する

事前に作成されたコンピューティング プロファイルは、インスタンス作成時に提供された CMEK 鍵を使用して、永続ディスク(PD)と、パイプラインで実行中の Dataproc クラスタによって書き込まれたステージング バケット メタデータを暗号化します。次のいずれかの方法で、別の鍵を変更して使用できます。

  • 推奨: 新しい Dataproc コンピューティング プロファイルを作成します(Enterprise Edition のみ)。
  • 既存の Dataproc コンピューティング プロファイルを編集します(Developer Edition、Basic Edition、Enterprise Edition)。

Console

  1. Cloud Data Fusion インスタンスを開きます。

    1. Google Cloud コンソールで、Cloud Data Fusion のページに移動します。

    2. Cloud Data Fusion ウェブ インターフェースでインスタンスを開くには、[Instances] をクリックしてから、[View instance] をクリックします。

      [インスタンス] に移動

  2. [System Admin] > [Configuration] をクリックします。

  3. [System Compute Profiles] プルダウンをクリックします。

  4. [Create New Profile] をクリックし、[Dataproc] を選択します。

  5. [Profile label]、[Profile name]、[Description] に、プロファイル ラベル、プロファイル名、説明をそれぞれ入力します。

  6. デフォルトでは、Cloud Data Fusion によってエフェメラル クラスタが作成されるたびに、Dataproc がステージング バケットと一時バケットを作成します。Cloud Data Fusion では、コンピューティング プロファイルで引数として Dataproc ステージング バケットを渡すことができます。ステージング バケットを暗号化するには、CMEK 対応バケットを作成し、コンピューティング プロファイルで Dataproc に引数として渡します。

  7. デフォルトでは、Cloud Data Fusion は Dataproc で使用される依存関係をステージングするための Cloud Storage バケットを自動作成します。プロジェクトの既存の Cloud Storage バケットを使用する場合は、次の手順を行います。

    1. [General Settings] セクションの [Cloud Storage Bucket] フィールドに、既存の Cloud Storage バケットを入力します。

    2. Cloud Storage バケットに Cloud KMS 鍵を追加します。

  8. Cloud KMS 鍵のリソース ID を取得します。[General Settings] セクションの [Encryption Key Name] フィールドに、リソース ID を入力します。

  9. [作成] をクリックします。

  10. [Configuration] タブの [System Compute Profiles] セクションに複数のプロファイルが一覧表示されている場合は、新しく作成した Dataproc プロファイルをデフォルトのプロファイルにします。それには、プロファイル名のフィールドにポインタを合わせて、表示される星をクリックします。

    デフォルト プロファイルを選択します。

他のリソースで CMEK を使用する

提供された CMEK 鍵は、Cloud Data Fusion インスタンスの作成時にシステム設定に設定されます。Cloud Storage、BigQuery、Pub/Sub、Spanner シンクなどのパイプライン シンクによって新しく作成されたリソースに書き込まれたデータを暗号化するために使用されます。

この鍵は、新しく作成されたリソースにのみ適用されます。パイプラインの実行前にリソースがすでに存在する場合は、それら既存のリソースに CMEK 鍵を手動で適用する必要があります。

CMEK 鍵は、次のいずれかの方法で変更できます。

  • ランタイム引数を使用します。
  • Cloud Data Fusion システム設定を使用します。

ランタイム引数

  1. Cloud Data Fusion の [Pipeline Studio] ページで、[Run] ボタンの右側にあるプルダウン矢印をクリックします。
  2. [名前] フィールドに「gcp.cmek.key.name」と入力します。
  3. [Value] フィールドに、鍵のリソース ID を入力します。
    Data Fusion のエディションを選択します。
  4. [保存] をクリックします。

    ここで設定したランタイム引数は、現在のパイプラインの実行にのみ適用されます。

設定

  1. Cloud Data Fusion UI で [SYSTEM ADMIN] をクリックします。
  2. [Configuration] タブをクリックします。
  3. [System Preferences] プルダウンをクリックします。
  4. [Edit System Preferences] をクリックします。
  5. [Key] フィールドに「gcp.cmek.key.name」と入力します。
  6. [Value] フィールドに、鍵のリソース ID を入力します。
    Data Fusion のエディションを選択します。
  7. [保存して閉じる] をクリックします。