ファイアウォールを使用してワークスペースのネットワークエグレスを制限する
このページでは、 VPCファイアウォール ルール、ルート、プライベート DNS を構成して、Google クラウド上のDatabricksワークスペースからのネットワーク下りを重要なサービスと宛先にのみ制限する方法を説明します。
始める前に、次のものが必要です。
- Databricks アーキテクチャに関する知識。「高レベルアーキテクチャ」を参照してください。
gcloudCLIコマンドを使用する場合は、 Google クラウドSDKをインストールします。roles/iam.networkAdminロールまたは十分な権限が必要です。
ファイアウォール構成の概要
この構成では、デフォルトで拒否するアプローチを使用します。つまり、すべての出力トラフィックをブロックし、必要な接続のみを選択的に許可します。構成には 3 つの主要コンポーネントがあります。
-
プライベート Google アクセス : VM が Google の内部ネットワーク経由で Google Cloud Storage やその他の Google サービスにアクセスできるようにします。これにより、 Databricksクラスター ノードにパブリック IP を必要とせずにワークスペース ログをGCSに書き込むことができます。
-
VPC ルートと DNS : Google API トラフィックを
restricted.googleapis.com経由でルーティングします。これにより、VPC Service Controls に準拠したサービスへのアクセスのみが可能になります。これにより、サポートされていない Google サービスへのデータの流出を防ぐことができます。 -
Databricks サービスのファイアウォール ルール : 特定の Databricks コントロール プレーン エンドポイントへの出力を許可します。
- Databricks コントロール プレーンと Databricks 管理対象システム リソース
- クラスター機能のためのサブネット内通信
- 従来のHive metastore (ポート3306)を使用します。ただし、外部Apache Hive metastore (従来型)を使用する場合は除きます。
コントロールプレーンサービスIPアドレスはリージョンによって異なります。VPCファイアウォールルールを追加する際は、DatabricksサービスとアセットのIPアドレスおよびドメインを利用できるようにしておいてください。ワークスペースのリージョン別IPアドレスとポートが必要です。
ファイアウォールを構成する
ネットワークのサイジングを計画する
ワークスペースを作成する前に、ワークロードに十分な IP スペースを確保できるようにネットワーク サイズを計画します。ワークスペースの作成後にサブネットを変更するには、ワークスペースのネットワーク構成を更新する必要があります。「ワークスペースのネットワーク構成の更新」を参照してください。
サブネットが小さすぎると、ワークスペースの IP スペースが使い果たされ、ジョブが失敗します。クラスターのサイズとワークスペースの数に基づいてサブネットのサイズを決定するためのガイダンスについては、 「新しいワークスペースのサブネットのサイズ決定」を参照してください。
VPCファイアウォールルールを追加する
ワークスペースを作成したら、ファイアウォール ルールを構成して、デフォルトで拒否するセキュリティ モデルを実装します。以下のコマンドのプレースホルダーをワークスペース固有の値に置き換えます。
<vpc-name>: Databricks が管理する VPC (形式:databricks-managed-<workspace-ID>)<workspace-id>: ワークスペース URL から取得したワークスペース ID- Databricks サービスおよびアセットの IP アドレスとドメインからの地域 IP アドレス
VPC名を取得する
- アカウント コンソールのワークスペース ページから、ワークスペースをクリックして起動します。
?o=の後の URL の数字部分をコピーします。たとえば、ワークスペース URL がhttps://1676665108650415.5.gcp.databricks.com/?o=1676665108650415#の場合、ワークスペース ID は1676665108650415になります。- VPC 名は
databricks-managed-<workspace-ID>です。たとえば、databricks-managed-1676665108650415。
または、 Google クラウド コンソールの VPC ページを使用して、UI からファイアウォール ルールを表示および管理することもできます。
すべての出力をブロックする(デフォルトで拒否)
すべての出力トラフィックをブロックするルールを作成します。優先度を 1100 に設定すると、すべての特定の許可ルール (優先度 1000 ~ 1099 を使用) の後に適用されます。すべての出力をブロックすると、 pypi.orgや Maven Central などのパブリック パッケージ リポジトリへのアクセスもブロックされます。すべて拒否ルールを有効にする前にこれを計画してください。
gcloud compute firewall-rules create deny-egress \
--action DENY \
--rules all \
--destination-ranges 0.0.0.0/0 \
--direction EGRESS \
--priority 1100 \
--network <vpc-name>
Set this rule's priority to 1100. Lower priority numbers are evaluated first, so setting a priority below your allow rules, 1000 or 1099, prevents Databricks from accessing essential services. This renders your workspace unusable.
If you need to access internal IP space (10.0.0.0/8, 172.16.0.0/20, or 192.168.0.0/16), add specific egress rules for those ranges with priority 1000-1099.
Google APIs許可する(アクセス制限あり)
VPC Service Controls準拠のエンドポイント経由で Google クラウド サービスへのアクセスを有効にします。 これら 2 つのルールは連携して、Google APIsへの安全なアクセスを提供します。
199.36.153.4/30: GCE のコア制限 API アクセス34.126.0.0/18: VPC Service Controls 準拠サービスのエントリ ポイント
gcloud compute firewall-rules create to-google-apis \
--action ALLOW \
--rules all \
--destination-ranges 199.36.153.4/30 \
--direction EGRESS \
--priority 1000 \
--network <vpc-name>
gcloud compute firewall-rules create to-google-apis-entry-point \
--action ALLOW \
--rules tcp:443 \
--destination-ranges 34.126.0.0/18 \
--direction EGRESS \
--priority 1000 \
--network <vpc-name>
サブネット内通信を許可する
クラスターが適切に機能するには、Databricks サブネット内のトラフィックを許可します。作成時に、ワークスペースの詳細構成から GCE ノードのプライマリ IP 範囲を使用します。
gcloud compute firewall-rules create db-<subnet-name>-egress-intra-subnet \
--action ALLOW \
--rules all \
--destination-ranges <databricks-subnet-cidr> \
--direction EGRESS \
--priority 1000 \
--network <vpc-name>
Databricks コントロール プレーン サービスを許可する (PSC が有効になっていない場合)
ポート 443 および 8443 ~ 8451 上の Databricks コントロール プレーン エンドポイントへの出力を許可します。Databricks サービスおよびアセットの IP アドレスとドメインから、ワークスペースの地域 IP アドレスを取得します。
プレースホルダー IP アドレスを置き換えます。
<web-app-ips>: Web アプリケーションのリージョン イングレス アドレス (通常は複数の CIDR ブロック)<scc-relay-ip>:安全なクラスター接続リレーの地域 IP アドレス
gcloud compute firewall-rules create to-databricks-control-plane \
--action ALLOW \
--rules tcp:443,tcp:8443-8451 \
--destination-ranges <web-app-ips>,<scc-relay-ip> \
--direction EGRESS \
--priority 1000 \
--network <vpc-name>
Databricks recommends using a firewall that supports FQDN-based rules instead of IP-based rules. Databricks IP addresses can change and may break workspace or cluster creation if firewall rules aren't updated.
プライベート サービス接続エンドポイントを許可する
ワークスペースに対して [プライベート サービス接続を有効にする]を有効にした場合は、パブリック コントロール プレーン IP ではなく、PSC エンドポイント サブネットへの出力を許可します。
gcloud compute firewall-rules create egress-to-databricks-psc-subnet \
--description "Allow egress traffic to Databricks Private Service Connect (PSC) endpoint subnet for workspace access over HTTPS." \
--direction EGRESS \
--priority 1000 \
--network <vpc-name> \
--allow tcp:443,tcp:8443-8451 \
--destination-ranges <psc-subnet-range>
従来のHive metastoreを許可する(オプション)
従来のHive metastoreを使用する場合は、ポート3306でリージョンメタストアのIPアドレスへの送信を許可してください。 外部Apache Hive metastore (レガシー)を使用している場合は、代わりに外部メタストア用のルールを作成してください。
gcloud compute firewall-rules create to-databricks-managed-hive \
--action ALLOW \
--rules tcp:3306 \
--destination-ranges <metastore-ip> \
--direction EGRESS \
--priority 1000 \
--network <vpc-name>
We recommend using What is Unity Catalog? instead of the legacy Hive metastore.
サブネット内からの侵入を許可する
Databricksサブネット内での受信トラフィックを許可して、 ノード同士が通信できるようにします。 サブネットのプライマリCIDR範囲をCIDR範囲として使用します。
gcloud compute firewall-rules create db-<subnet-name>-ingress \
--action ALLOW \
--rules all \
--source-ranges <databricks-subnet-cidr> \
--direction INGRESS \
--priority 1000 \
--network <vpc-name>
カスタムルールを追加する(オプション)
組織がデータ ソースおよびその他のシステムに必要とする追加の出力ルールを追加します。 すべてのカスタムALLOWルールを優先度値 1000 ~ 1099 に設定して、ファイアウォールが 1100 の全拒否ルールの前にそれらを評価できるようにします。
ファイアウォール ルールは次のようになります。
Name | Type | Filters | Protocols and ports | Action | Priority |
|---|---|---|---|---|---|
| Egress | IP ranges: 199.36.153.4/30 | All | Allow | 1000 |
| Egress | IP ranges: Regional Control Plane IP ranges or PSC Endpoint IPs | tcp:443, 8443-8451 | Allow | 1000 |
| Egress | IP ranges: Workspace subnet range | All | Allow | 1000 |
| Egress | IP ranges: 0.0.0.0/0 | All | Deny | 1100 |
| Ingress | IP ranges: Workspace subnet range | All | Allow | 1000 |
VPCルートを更新
カスタム静的ルートを追加して、制限された VIP 範囲を介して Google API トラフィックを誘導します。各ルートは、デフォルトのインターネット ゲートウェイをネクストホップとして使用します。この構成により、パブリック IP を持たない VM が Google の制限された API エンドポイントにアクセスできるようになります。
次の宛先範囲のルートを作成します。
199.36.153.4/30: プライベートGoogle Access APIエンドポイントrestricted.googleapis.com34.126.0.0/18: 制限されたAPIエントリポイントrestricted.googleapis.com
# Route for Private Google Access API endpoints
gcloud compute routes create allow-private-google-access \
--network <vpc-name> \
--destination-range 199.36.153.4/30 \
--next-hop-gateway default-internet-gateway \
--description "Route for Private Google Access (199.36.153.4/30)"
# Route for Restricted API entry points
gcloud compute routes create allow-restricted-google-apis \
--network <vpc-name> \
--destination-range 34.126.0.0/18 \
--next-hop-gateway default-internet-gateway \
--description "Route for restricted.googleapis.com entry point (34.126.0.0/18)"
クラウド NAT がプライベート Google アクセスとどのように相互作用するかについて詳しくは、Google クラウド ドキュメントの「NAT 製品の相互作用」を参照してください。
制限付きGoogle APIsのプライベートDNSを構成する
すべての Google API トラフィックをrestricted.googleapis.comにリダイレクトするようにプライベート DNS ゾーンを設定します。これにより、 Databricks VM がVPC Service Controlsに準拠した Google APIsのみにアクセスするようになり、サポートされていないサービスへのデータの流出を防ぐことができます。 詳細については、Google クラウドのドキュメントの「限定公開の Google アクセス オプション」を参照してください。
googleapis.com のプライベート DNS ゾーンを作成する
ドメインgoogleapis.comを使用してクラウド DNS プライベート マネージド ゾーンを設定します。 このゾーンを、ワークロードが実行される VPC に接続します。これにより、プライベート DNS ゾーンがパブリック DNS ではなく*.googleapis.comのリクエストを解決するようになります。
# Create a private DNS managed zone
gcloud dns managed-zones create restricted-apis-zone \
--description "Private DNS zone for restricted.googleapis.com" \
--dns-name "googleapis.com." \
--visibility private \
--networks "projects/<project-id>/global/networks/<vpc-name>"
limited.googleapis.com の A レコードを追加する
restricted.googleapis.comの 4 つの VIP ( 199.36.153.4 – 199.36.153.7 ) すべてを含む A レコードを追加します。
# Add A records for restricted.googleapis.com VIPs
gcloud dns record-sets create "restricted.googleapis.com." \
--type A \
--ttl 300 \
--zone restricted-apis-zone \
--rrdatas "199.36.153.4" "199.36.153.5" "199.36.153.6" "199.36.153.7"
CNAME を使用して API トラフィックをリダイレクトする
プライベート DNS ゾーン内に、 restricted.googleapis.comを指すワイルドカード CNAME レコード ( *.googleapis.com ) を作成します。これにより、すべての Google API トラフィック ( storage.googleapis.com 、 bigquery.googleapis.comなど) が制限された VIP に解決されるようになります。
# Create a wildcard CNAME record pointing to restricted.googleapis.com
gcloud dns record-sets create "*.googleapis.com." \
--type CNAME \
--ttl 300 \
--zone restricted-apis-zone \
--rrdatas "restricted.googleapis.com."
This configuration routes all Google API requests through the restricted endpoint. Only VPC Service Controls-compliant APIs are accessible. This configuration blocks services like Gmail or Maps.
構成を検証
ファイアウォール構成をテストして、ネットワーク出力が制限された状態でワークスペースが正しく機能することを確認します。
- 汎用コンピュート リソースを作成して開始します。
- 正常に起動し、状態 が Running になっていることを確認します。
- コンピュート リソースにノートブックをアタッチし、
SELECT 1+1.
Terraform でデプロイメントを自動化する
本番運用のデプロイまたは複数のワークスペースの管理の場合、 Databricks Terraform使用して上記のファイアウォール構成を自動化することをお勧めします。 Security Reference Architecture (SRA) は、以下を自動化する本番運用対応のTerraformモジュールを提供します。
- Deny-by-Egress、 Databricksコントロール プレーン アクセス、制限付き Google APIs用のVPCファイアウォール ルール
- プライベート Google アクセス用の VPC ルート
- プライベートDNSゾーンとレコード
restricted.googleapis.com
利用を開始するには以下の手順を踏みます。
- SRA リポジトリを複製します:
git clone https://github.com/databricks/terraform-databricks-sra.git。 - GCP ワークスペース デプロイメント モジュールを確認します。
- プロジェクト固有の値を使用してモジュールを構成します。
- Terraform 構成を適用して、ファイアウォール ルールを使用してワークスペースをプロビジョニングします。
セキュリティ リファレンス アーキテクチャ (SRA) はコミュニティ主導であり、Databricks によって公式にサポートされていません。
ファイアウォールルールは、特定の宛先へのトラフィックをブロックまたは許可するものであり、トラフィックのレート制限を行うものではありません。トラフィックをブロックするのではなくレート制限を行う場合は、API レート制限については 「リソース制限」 を、AI Gateway Endpoint のレート制限については 「モデルおよび MCP サービスへのレート制限の適用」 を参照してください。