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

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

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

  • パイプライン ログとメタデータ
  • Dataproc クラスタ メタデータ
  • さまざまな Cloud Storage、BigQuery、Pub/Sub、Cloud 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 KMS 鍵を作成します。

鍵は、Cloud SQL Fusion インスタンスと同じ Google Cloud プロジェクトで作成するか、別のユーザー プロジェクトで作成します。Cloud KMS キーリングの場所は、インスタンスを作成するリージョンと一致する必要があります。マルチリージョンまたはグローバル リージョン鍵は使用できません。

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

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

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

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

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

  6. 省略可: パイプラインで 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: product_name_short}} インスタンスをホストするお客様プロジェクト
    • 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

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

  1. 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 の実行 プラグインによって作成されたデータセットまたはテーブルに書き込まれたデータを暗号化します。データセットまたはテーブルがすでに存在する場合、この値は無視されます。
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 の [インスタンス] ページに移動します。

    [インスタンス] に移動

  2. インスタンスの [操作] 列で、[インスタンスの表示] リンクをクリックします。

  3. Cloud Data Fusion ウェブ UI で [SYSTEM ADMIN] をクリックします。

  4. [Configuration] タブをクリックします。

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

  6. [Create New Profile] をクリックします。

  7. [Dataproc] を選択します。

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

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

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

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

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

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

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

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

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

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

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

リソースのロケーションは、CMEK 鍵が存在するリージョンと同じにする必要があります。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. [保存して閉じる] をクリックします。