Managed Service for Apache Spark 用に Virtual Private Cloud(VPC)ネットワークを構成すると、ワークロードを内部プロジェクト リソースと Google API に安全に接続できます。これらのサブネットワークとファイアウォールの設定は、組織のセキュリティ ポリシーを遵守しながら、Spark ドライバとエグゼキュータが直接通信できるようにするのに役立ちます。
VPC ネットワークの要件
このドキュメントでは、Managed Service for Apache Spark のバッチ ワークロードとインタラクティブ セッションの VPC ネットワーク要件について説明します。
限定公開の Google アクセス
Managed Service for Apache Spark のバッチ ワークロードとインタラクティブ セッションは、内部 IP アドレスのみを持つ VM と、サブネットで プライベート Google アクセス(PGA)が自動的に有効になっているリージョン サブネットで実行されます。
サブネットを指定しない場合、Managed Service for Apache Spark は、バッチ ワークロードまたはセッションのサブネットとして、バッチ ワークロードまたはセッション リージョンの default サブネットを選択します。
ワークロードで外部ネットワークまたはインターネット アクセスが必要な場合(PyTorch Hub や Hugging Face から ML モデルなどのリソースをダウンロードする場合など)、Cloud NAT を設定して、VPC ネットワークで内部 IP を使用してアウトバンド トラフィックを許可できます。
オープン サブネット接続
Managed Service for Apache Spark バッチ ワークロードまたはインタラクティブ セッション用に選択したリージョンの VPC サブネットでは、サブネット内の VM インスタンス間のすべてのポートで内部通信を許可する必要があります。
1 つのワークロードの悪意のあるスクリプトが他のワークロードに影響しないように、Managed Service for Apache Spark はデフォルトのセキュリティ対策をデプロイします。
次の Google Cloud CLI コマンドは、すべてのポートですべてのプロトコルを使用する VM 間の内部上り(内向き)通信を許可するサブネットにネットワーク ファイアウォールを接続します。
gcloud compute firewall-rules create allow-internal-ingress \ --network=NETWORK_NAME \ --source-ranges=SUBNET_RANGES \ --destination-ranges=SUBNET_RANGES \ --direction=ingress \ --action=allow \ --rules=all
注:
SUBNET_RANGES:VM 間の内部上り(内向き)接続を許可するをご覧ください。
default-allow-internalファイアウォール ルールを使用したプロジェクトのdefaultVPC ネットワークがオープン サブネット接続の要件を満たしており、すべてのポート(tcp:0-65535、udp:0-65535、icmp protocols:portsなど)で上り(内向き)通信が許可されています。ただし、このルールでは、ネットワーク上の任意の VM インスタンスからの上り(内向き)も許可されます。
自動的に作成されるリージョン システム ファイアウォール ポリシー
オープン サブネット接続の要件を満たすため、ランタイム バージョン 3.0 以降を使用する Managed Service for Apache Spark バッチ ワークロードとインタラクティブ セッションは、バッチまたはセッションの VPC サブネットにリージョン システム ファイアウォール ポリシー dataproc-firewall-policy-[network-id]-region または dataproc-fw-[network-id]-region を自動的に作成します。このポリシーには、次の上り(内向き)ルールと下り(外向き)ルールが含まれています。
| 名前 | 目的 | 優先度 | 方向 | アクション | 移行元と移行先 | プロトコルとポート |
|---|---|---|---|---|---|---|
dataproc-allow-internal-ingress-rule-[subnetworkId] |
同じサブネット内の他のタグ付き Managed Service for Apache Spark VM からのみ、必要なすべての内部通信を許可します。 | 4 | 上り | 許可 |
srcSecureTag: このサブネットのセキュアタグ値。targetSecureTags:このサブネットのセキュアタグ値。 |
tcp:0-65535、udp:0-65535、icmp プロトコル:ポート |
dataproc-allow-internal-egress-rule-[subnetworkId] |
Managed Service for Apache Spark VM がパッケージ(pip や apt-get など)をダウンロードし、プライベート Google アクセスを使用して Google API にアクセスできるようにします。 | 5 | 下り | 許可 |
destIpRanges: 0.0.0.0/0。targetSecureTags:このサブネットのセキュアタグ値。 |
tcp:0-65535、udp:0-65535、icmp プロトコル:ポート |
注:
Managed Service for Apache Spark は、ユーザー プロジェクトに関連付けられたテナント プロジェクトをプロビジョニングして、セキュアタグを保存します。Managed Service for Apache Spark は、テナント プロジェクトのサブネットにセキュアタグを作成し、Managed Service for Apache Spark VM にアタッチします。これにより、作成されたシステム ファイアウォール ポリシーが Managed Service for Apache Spark VM にのみ適用されます。
自動的に作成されたシステム ファイアウォール ポリシーは、共有 VPC ではサポートされていません。
Managed Service for Apache Spark と VPC-SC ネットワーク
VPC Service Controls を使用すると、ネットワーク管理者は Google マネージド サービスのリソースにセキュリティ境界を定義し、これらのサービス間の通信を制御できます。
Managed Service for Apache Spark で VPC-SC ネットワークを使用する場合は、次の戦略を検討してください。
VPC-SC 境界の外部に依存関係をプリインストールするカスタム コンテナ イメージを作成し、カスタム コンテナ イメージを使用する Spark バッチ ワークロードを送信します。
詳細については、VPC Service Controls - Managed Service for Apache Spark をご覧ください。