このページでは、別の Google Cloud プロジェクトで Managed Service for Apache Spark クラスタを使用するパイプラインをデプロイして実行する際のアクセス制御の管理について説明します。
シナリオ
デフォルトでは、Cloud Data Fusion インスタンスがGoogle Cloud プロジェクトで起動されると、同じプロジェクト内の Managed Service for Apache Spark クラスタを使用してパイプラインをデプロイして実行します。ただし、組織によっては、別のプロジェクトでクラスタを使用することが必要な場合があります。このユースケースでは、プロジェクト間のアクセスを管理する必要があります。次のページでは、ベースライン(デフォルト)構成を変更して、適切なアクセス制御を適用する方法について説明します。
準備
このユースケースのソリューションを理解するには、次のコンテキストが必要です。
- 基本的な Cloud Data Fusion のコンセプトに関する知識
- Cloud Data Fusion の Identity and Access Management(IAM)に関する知識
- Cloud Data Fusion ネットワーキングに関する知識
前提条件と対象範囲
このユースケースには、次の要件があります。
- プライベート Cloud Data Fusion インスタンス。 セキュリティ上の理由から、組織がこのタイプのインスタンスの使用を要求する場合があります。
- BigQuery のソースとシンク。
- ロールベースのアクセス制御(RBAC)ではなく、IAM を使用したアクセス制御。
ソリューション
このソリューションでは、ベースラインとユースケース固有のアーキテクチャおよび構成を比較します。
アーキテクチャ
次の図は、同じプロジェクト(ベースライン)とテナント プロジェクトの VPC を介して別のプロジェクトでクラスタを使用する場合の、Cloud Data Fusion インスタンスの作成とパイプラインの実行に関するプロジェクト アーキテクチャを比較しています。
ベースライン アーキテクチャ
この図は、プロジェクトのベースライン アーキテクチャを示しています。

ベースライン構成では、プライベート Cloud Data Fusion インスタンスを作成し、追加のカスタマイズを行うことなくパイプラインを実行します。
- 組み込みのコンピューティング プロファイルのいずれかを使用する
- 送信元とシンクがインスタンスと同じプロジェクトにある
- どのサービス アカウントにも追加のロールが付与されてない
テナント プロジェクトとお客様のプロジェクトの詳細については、ネットワーキングをご覧ください。
ユースケースのアーキテクチャ
次の図は、別のプロジェクトでクラスタを使用する場合のプロジェクト アーキテクチャを示しています。

構成
以下の各セクションでは、ベースライン構成と、デフォルトのテナント プロジェクト VPC を介して別のプロジェクトで Managed Service for Apache Spark クラスタを使用するユースケース固有の構成を比較します。
以下のユースケースの説明では、お客様のプロジェクトは Cloud Data Fusion インスタンスが実行される場所、Managed Service for Apache Spark プロジェクトは Managed Service for Apache Spark クラスタが起動される場所です。
テナント プロジェクトの VPC とインスタンス
| ベースライン | ユースケース |
|---|---|
前述のベースライン アーキテクチャの図では、テナント プロジェクトには次のコンポーネントが含まれています。
|
このユースケースでは、追加の構成は必要ありません。 |
お客様のプロジェクト
| ベースライン | ユースケース |
|---|---|
| Google Cloud プロジェクトは、パイプラインをデプロイして実行する場所です。デフォルトでは、パイプラインを実行すると、Managed Service for Apache Spark クラスタがこのプロジェクトで起動されます。 | このユースケースでは、2 つのプロジェクトを管理します。このページでは、お客様のプロジェクトは、Cloud Data Fusion インスタンスが実行される場所を意味します。 Managed Service for Apache Spark プロジェクトは、Managed Service for Apache Spark クラスタが起動する場所を指します。 |
お客様の VPC
| ベースライン | ユースケース |
|---|---|
自分の(お客様の)観点からは、お客様の VPC は Cloud Data Fusion が論理的に配置されている場所です。 重要ポイント: お客様の VPC の詳細は、プロジェクトの VPC ネットワーク ページで確認できます。 |
このユースケースでは、追加の構成は必要ありません。 |
Cloud Data Fusion サブネット
| ベースライン | ユースケース |
|---|---|
自分の(お客様の)観点からは、このサブネットは Cloud Data Fusion が論理的に配置されている場所です。 重要ポイント: このサブネットのリージョンは、テナント プロジェクトの Cloud Data Fusion インスタンスのロケーションと同じです。 |
このユースケースでは、追加の構成は必要ありません。 |
Managed Service for Apache Spark サブネット
| ベースライン | ユースケース |
|---|---|
パイプラインの実行時に Managed Service for Apache Spark クラスタが起動されるサブネット。 重要ポイント:
|
これは、パイプラインの実行時に Managed Service for Apache Spark クラスタが起動される新しいサブネットです。 重要ポイント:
|
ソースとシンク
| ベースライン | ユースケース |
|---|---|
データが抽出されるソースと、データが読み込まれるシンク(BigQuery のソースやシンクなど)。 重要ポイント:
|
このページのユースケース固有のアクセス制御構成は、BigQuery のソースとシンク用です。 |
Cloud Storage
| ベースライン | ユースケース |
|---|---|
Cloud Data Fusion と Managed Service for Apache Spark 間でファイルを転送するのに役立つ、お客様のプロジェクトのストレージ バケット。 重要ポイント:
|
このユースケースでは、追加の構成は必要ありません。 |
ソースとシンクで使用される一時バケット
| ベースライン | ユースケース |
|---|---|
ソースとシンクのプラグインによって作成された一時バケット(BigQuery Sink プラグインによって開始された読み込みジョブなど)。 重要ポイント:
|
このユースケースでは、バケットは任意のプロジェクトに作成できます。 |
プラグインのデータのソースまたはシンクであるバケット
| ベースライン | ユースケース |
|---|---|
| Cloud Storage プラグインや FTP to Cloud Storage プラグインなどのプラグインの構成で指定したお客様のバケット。 | このユースケースでは、追加の構成は必要ありません。 |
IAM: Cloud Data Fusion API サービス エージェント
| ベースライン | ユースケース |
|---|---|
Cloud Data Fusion API を有効にすると、Cloud Data Fusion API サービス エージェントのロール( 重要ポイント:
|
このユースケースでは、Managed Service for Apache Spark プロジェクトのサービス アカウントに Cloud Data Fusion API サービス エージェント ロールを付与します。次に、そのプロジェクトで次のロールを付与します。
|
IAM: Managed Service for Apache Spark サービス アカウント
| ベースライン | ユースケース |
|---|---|
Managed Service for Apache Spark クラスタ内でパイプラインをジョブとして実行するために使用されるサービス アカウント。デフォルトでは、Compute Engine サービス アカウントです。 省略可: ベースライン構成で、デフォルトのサービス アカウントを同じプロジェクトの別のサービス アカウントに変更できます。新しいサービス アカウントに次の IAM ロールを付与します。
|
このユースケースの例では、Managed Service for Apache Spark プロジェクトのデフォルトの Compute Engine サービス アカウント( Managed Service for Apache Spark プロジェクトのデフォルトの Compute Engine サービス アカウントに次のロールを付与します。
Managed Service for Apache Spark プロジェクトのデフォルトの Compute Engine サービス アカウントの Cloud Data Fusion サービス アカウントに、サービス アカウントのユーザーロールを付与します。この操作は、Managed Service for Apache Spark プロジェクトで実行する必要があります。 Managed Service for Apache Spark プロジェクトのデフォルトの Compute Engine サービス アカウントを Cloud Data Fusion プロジェクトに追加します。次のロールも付与します。
|
API
| ベースライン | ユースケース |
|---|---|
Cloud Data Fusion API を有効にすると、次の API も有効になります。これらの API の詳細については、プロジェクトの [API とサービス] ページに移動してください。
Cloud Data Fusion API を有効にすると、次のサービス アカウントがプロジェクトに自動的に追加されます。
|
このユースケースでは、Managed Service for Apache Spark プロジェクトを含むプロジェクトで次の API を有効にします。
|
暗号鍵
| ベースライン | ユースケース |
|---|---|
ベースライン構成では、暗号鍵は Google が管理することも、CMEK にすることもできます。 重要ポイント: CMEK を使用する場合、ベースライン構成には次の対象が必要です。
パイプラインで使用されるサービス(BigQuery や Cloud Storage など)に応じて、サービス アカウントには Cloud KMS 暗号鍵の暗号化 / 復号のロールも付与する必要があります。
|
CMEK を使用しない場合、このユースケースで追加の変更は必要ありません。 CMEK を使用する場合、作成されたプロジェクトの次のサービス アカウントに、鍵レベルで Cloud KMS CryptoKey の暗号化 / 復号のロールを、提供する必要があります。
パイプラインで使用されるサービス(BigQuery や Cloud Storage など)に応じて、他のサービス アカウントに鍵レベルで Cloud KMS 暗号鍵の暗号化 / 復号のロールも付与する必要があります。例:
|
ユースケース固有の構成を行うと、データ パイプラインは別のプロジェクトのクラスタで実行を開始できます。
次のステップ
- Cloud Data Fusion のネットワーキングについて学習する。
- IAM の基本ロールと事前定義ロールのリファレンスを確認する。