顧客管理の暗号鍵(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 は常に特定のリージョンに関連付けられているため、マルチリージョンまたはグローバル リージョン鍵をインスタンス レベルで指定することはできません。
鍵のリソース名を取得する
次のコマンドを使用して、作成した鍵のリソース名を取得します。
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 鍵名
[鍵管理] ページに移動します。
鍵の横にあるその他(
)をクリックします。Copy Resource Name: リソース名をクリップボードにコピーします。
プロジェクトのサービス アカウントを更新して、鍵を使用する
作成した鍵を使用するようにプロジェクトのサービス アカウントを設定するには:
必須: 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 を使用してテナント プロジェクトに保存されている顧客データを暗号化できるようになります。
必須: 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)メタデータを暗号化できます。
必須: 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 を使用して暗号化できるようになります。
必須: Cloud KMS 暗号鍵の暗号化 / 復号のロールを Google Cloud Dataproc サービス エージェントに付与します。このサービス エージェントの形式は次のとおりです。
service-PROJECT_NUMBER@dataproc-accounts.iam.gserviceaccount.com
省略可: パイプラインで BigQuery リソースを使用している場合は、Cloud KMS 暗号鍵の暗号化/復号のロールを BigQuery サービス アカウントに付与します(暗号化と復号の権限を付与するをご覧ください)。このアカウントの形式は次のとおりです。
bq-PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
省略可: パイプラインで Pub/Sub リソースを使用している場合は、Cloud KMS 暗号鍵の暗号化/復号のロールを Pub/Sub サービス アカウントに付与します(顧客管理の暗号鍵の使用をご覧ください)。このアカウントの形式は次のとおりです。
service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com
省略可: パイプラインで Spanner リソースを使用している場合は、Cloud KMS 暗号鍵の暗号化 / 復号のロールを Spanner サービス アカウントに付与します。このアカウントの形式は次のとおりです。
service-PROJECT_NUMBER@gcp-sa-spanner.iam.gserviceaccount.com
CMEK を使用して Cloud Data Fusion インスタンスを作成する
CMEK は、Cloud Data Fusion バージョン 6.5.0 以降のすべてのエディションで使用できます。
顧客管理の暗号鍵を使用してインスタンスを作成するには、次の環境変数を設定します。
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 鍵の完全なリソース名
次のコマンドを実行して、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"} }'
Cloud Data Fusion のページに移動します。
[インスタンス]、[インスタンスを作成] の順にクリックします。
[詳細オプション] で、[顧客管理の暗号鍵(CMEK)を使用する] を選択します。
[顧客管理の暗号鍵を選択] フィールドで、鍵のリソース名を選択します。
インスタンスの詳細をすべて入力したら、[作成] をクリックします。インスタンスを使用する準備が整うと、[インスタンス] ページに表示されます。
インスタンスで CMEK が有効になっているかどうかを確認する
インスタンスの詳細を表示します。
Google Cloud コンソールで、Cloud Data Fusion ページに移動します。
[インスタンス]、インスタンス名の順にクリックして、[インスタンスの詳細] ページに移動します。
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)。
Cloud Data Fusion インスタンスを開きます。
Google Cloud コンソールで、Cloud Data Fusion のページに移動します。
Cloud Data Fusion Studio でインスタンスを開くには、[インスタンス]、[インスタンスを表示] の順にクリックします。
[システム管理者] > [構成] をクリックします。
[System Compute Profiles] プルダウンをクリックします。
[新しいプロファイルを作] をクリックし、[Dataproc] を選択します。
[Profile label]、[Profile name]、[Description] に、プロファイル ラベル、プロファイル名、説明をそれぞれ入力します。
デフォルトでは、Cloud Data Fusion によってエフェメラル クラスタが作成されるたびに、Dataproc がステージング バケットと一時バケットを作成します。Cloud Data Fusion は、コンピューティング プロファイル内の引数として Dataproc ステージング バケットを渡すことをサポートしています。ステージング バケットを暗号化するには、CMEK 対応バケットを作成し、コンピューティング プロファイルで Dataproc に引数として渡します。
デフォルトでは、Cloud Data Fusion は Dataproc で使用される依存関係をステージングするための Cloud Storage バケットを自動作成します。プロジェクトの既存の Cloud Storage バケットを使用する場合は、次の手順を行います。
[General Settings] セクションの [Cloud Storage Bucket] フィールドに、既存の Cloud Storage バケットを入力します。
Cloud KMS 鍵のリソース ID を取得します。[General Settings] セクションの [Encryption Key Name] フィールドに、リソース ID を入力します。
[作成] をクリックします。
[Configuration] タブの [System Compute Profiles] セクションに複数のプロファイルが一覧表示されている場合は、新しく作成した Dataproc プロファイルをデフォルトのプロファイルにします。それには、プロファイル名のフィールドにポインタを合わせて、表示される星をクリックします。
他のリソースで CMEK を使用する
提供された CMEK 鍵は、Cloud Data Fusion インスタンスの作成時にシステム設定に設定されます。Cloud Storage、BigQuery、Pub/Sub、Spanner シンクなどのパイプライン シンクによって新しく作成されたリソースに書き込まれたデータを暗号化するために使用されます。
この鍵は、新しく作成されたリソースにのみ適用されます。パイプラインの実行前にリソースがすでに存在する場合は、それら既存のリソースに CMEK 鍵を手動で適用する必要があります。
CMEK 鍵は、次のいずれかの方法で変更できます。
- ランタイム引数を使用します。
- Cloud Data Fusion システム設定を使用します。
- Cloud Data Fusion の [Pipeline Studio] ページで、[Run] ボタンの右側にあるプルダウン矢印をクリックします。
- [名前] フィールドに「
gcp.cmek.key.name
」と入力します。 - [Value] フィールドに、鍵のリソース ID を入力します。
[保存] をクリックします。
ここで設定したランタイム引数は、現在のパイプラインの実行にのみ適用されます。
- Cloud Data Fusion UI で [SYSTEM ADMIN] をクリックします。
- [Configuration] タブをクリックします。
- [System Preferences] プルダウンをクリックします。
- [Edit System Preferences] をクリックします。
- [Key] フィールドに「
gcp.cmek.key.name
」と入力します。 - [Value] フィールドに、鍵のリソース ID を入力します。
- [保存して閉じる] をクリックします。