メインコンテンツまでスキップ

Databricks アプリのネットワークを構成する

Databricks アプリは、きめ細かなネットワーク制御をサポートしており、アプリがインターネットや内部リソースと通信する方法を安全に管理するのに役立ちます。IP アクセス リスト、フロントエンド プライベート接続、およびネットワーク ポリシーを組み合わせて使用することで、入力 (着信) トラフィック ルールと出力 (発信) トラフィック ルールの両方を構成できます。

ネットワークアーキテクチャ​

Databricksはサーバレス コンピュート プレーンにアプリを展開し、そこでトラフィックを直接受信します。これは、Model Serving や AI Search などの他のルート最適化されたサービスに似ています。

接続プロセスは次のように動作します。

  1. Databricks アプリへの最初のユーザー リクエストは、コントロール プレーンで OAuth 認証を開始し、セッションを検証してアプリへのアクセスを承認します。
  2. 認証が成功すると、後続のすべてのリクエストは、コントロール プレーンを経由せずに、サーバレス コンピュート プレーンに直接ルーティングされます。

サーバーレス コンピュート プレーン用に構成されたネットワーク セキュリティ ポリシーは、 Databricks Apps トラフィックに適用されます。 これには、IP アクセス リストとフロントエンドのプライベート接続構成が含まれます。

イングレスコントロール​

次の機能を使用して、パブリック インターネットから Databricks ワークスペースとアプリへのアクセスを制限します。

  • IP アクセス リスト: ワークスペース レベルで IP アクセス リストを有効にして、ワークスペースとアプリのアクセスを既知の信頼できる IP 範囲に制限します。設定された IP 範囲からのトラフィックのみが許可されます。詳細については、 「ワークスペースの IP アクセス リストを構成する」を参照してください。

  • フロントエンドプライベート接続: パブリックインターネットではなく、独自の VPC インターフェースエンドポイントを介して入力トラフィックをルーティングします。

    プライベート接続を介した適切な名前解決を確実に行うには、databricksapps.com ドメインの条件付き DNS 転送を構成する必要があります。そうしないと、アプリのドメインに対する DNS クエリーが、プライベート Endpoint ではなくパブリック IP アドレスに解決される可能性があります。設定手順については、「Configure Inbound Private サービス Connect」を参照してください。

:::

エグレス制御​

アプリからの送信トラフィックを制御するには、アプリをホストしているワークスペースにネットワーク ポリシーを適用します。

ネットワークポリシー​

network ポリシー を使用して、Databricks アプリケーションやその他のサーバレス ワークロードに出力制限を適用します。これは、送信接続を制御するための組織要件またはコンプライアンス要件を満たす必要がある場合に便利です。

注記

ネットワーク ポリシーは、Premium レベルでのみ使用できます。

アプリが次の場合にネットワーク ポリシーを適用する

  • 特定の承認済み外部ドメインのセットへのアクセスを制限する必要があります
  • 偶発的なデータ流出を防ぐ必要がある
  • 送信インターネットトラフィックを制限するセキュリティまたはコンプライアンス基準に準拠する必要があります

アプリのデプロイに必要な送信ドメイン​

制限付き送信ネットワークポリシーを使用する場合、アプリのビルドまたはランタイムを成功させるには、特定のドメインを許可リストに追加する必要があります。これらのドメインがないと、ビルドプロセスが依存関係をダウンロードしたり、必要なサービスと通信したりできないため、アプリのデプロイは失敗します。

Databricksアプリのデプロイメントには、以下のドメインが必要です。

ドメイン

目的

*.databricksapps.com

アプリの提供とユーザー接続

*.databricksapps.us

アプリケーション配信とユーザー接続( AWS GovCloudのみ)

*.databricksapps.mil

アプリケーション配信とユーザー接続( AWS GovCloud DoDのみ)

pypi.org, files.pythonhosted.org

アプリのビルド中にPythonパッケージをダウンロードします(アプリがrequirements.txtを使用する場合は必須です)。

registry.npmjs.org

アプリのビルド中にNode.jsパッケージをダウンロードします(アプリがpackage.jsonを使用している場合は必須です)。

ドメイン

目的

*.databricksapps.com

アプリの提供とユーザー接続

*.databricksapps.us

アプリケーション配信とユーザー接続( AWS GovCloudのみ)

*.databricksapps.mil

アプリケーション配信とユーザー接続( AWS GovCloud DoDのみ)

pypi.org, files.pythonhosted.org

アプリのビルド中にPythonパッケージをダウンロードします(アプリがrequirements.txtを使用する場合は必須です)。

registry.npmjs.org

アプリのビルド中にNode.jsパッケージをダウンロードします(アプリがpackage.jsonを使用している場合は必須です)。

:::

:::

さらに、Google クラウドの展開には次のドメインが必要になる場合があります。

ドメイン

目的

*.googleapis.com

GCPリソースに接続するアプリによって使用されるGCPサービス エンドポイント

ドメイン

目的

*.googleapis.com

GCPリソースに接続するアプリによって使用されるGCPサービス エンドポイント

:::

アプリによっては、特定の依存関係や呼び出す外部APIsに応じて、追加のドメインが必要になる場合があります。 例えば、アプリがサードパーティのREST APIを呼び出す場合は、そのAPIのドメインを許可リストに追加してください。

重要

送信が制限されているプライベートサービスコネクト環境では、ドメイン許可リストのエントリが欠落していると、アプリケーションのデプロイが失敗することがよくあります。アプリのデプロイに失敗した場合は、追加するドメインを特定するために、 system.access.outbound_networkシステムテーブルで拒否された接続試行がないか確認してください。 拒否ログを確認してください。

ネットワークポリシーの設定に関するベストプラクティス​

次のガイドラインに従って、意図しない中断を回避し、アプリが必要なリソースにアクセスできるようにします。

  • 必要な宛先のみを許可する。アプリが必要とする公開リソースまたはプライベートリソースの完全修飾ドメイン名(FQDN)を追加します。アプリケーションのデプロイに必要な最小限のドメインセットについては、「アプリケーションデプロイに必要な送信ドメイン」を参照してください。

  • 必要に応じてパッケージリポジトリを含めます。アプリが公開されている Python または Node.js パッケージをインストールする場合、Python の場合はpypi.org 、Node の場合はregistry.npmjs.orgなどのドメインを許可する必要があるかもしれません。アプリケーションによっては、特定の依存関係に応じて、追加または異なるドメインが必要になる場合があります。これらのリポジトリがないと、 requirements.txtまたはpackage.jsonに依存するアプリのビルドが失敗する可能性があります。

  • dry-run モードを使用して、ネットワーク ポリシーを検証します。 このモードは、トラフィックをブロックせずにポリシーの適用をシミュレートします。

  • system.access.outbound_networkテーブルを使用して、拒否された接続試行を確認します。これにより、許可する必要がある可能性のあるドメインを特定できます。「拒否ログを確認する」を参照してください。

  • 信頼できる や に登録されていないAPIs GCPストレージアカウントなど、必要な外部ドメインを追加します。Unity Catalog

プライベートサービスコネクト環境にアプリをデプロイする​

ワークスペースがフロントエンドのプライベート接続を使用している場合は、 Databricksアプリをデプロイして使用するための追加の構成ステップを完了する必要があります。 この設定がないと、アプリのデプロイが失敗したり、ユーザーがアプリにアクセスできなくなる可能性があります。

DNS設定​

アプリケーションの URL がパブリック IP アドレスではなくプライベート IP アドレスに解決されるように、 databricksapps.comドメインに対して条件付き DNS 転送を設定する必要があります。この設定がないと、プライベートネットワークの背後にいるユーザーは、デプロイされたアプリケーションにアクセスできません。

DNS A レコードを作成するか、条件付き転送を構成して、databricksapps.com がPrivate Service ConnectのEndpoint IPに解決されるようにします。詳細な DNS 設定手順については、「インバウンド Private Service Connect を構成する」を参照してください。

避難経路に関する要件​

下りが制限されている Private Service Connect 環境では、アプリはビルド時とランタイムの両方で特定のドメインへの送信接続を必要とします。 許可リストに追加すべきドメインの完全なリストについては、 「アプリ展開に必要な送信ドメイン」を参照してください。

プライベートサービスコネクト環境でアプリの送信を設定するには:

  1. 必要なドメインを 許可リストに追加するネットワークポリシー を作成または更新します。
  2. トラフィックをブロックせずに設定を検証するには、まずドライ実行モードを使用してください。
  3. アプリケーションのデプロイ中に拒否された接続試行がないか、 system.access.outbound_networkシステムテーブルを確認してください。

プライベートサービスコネクトの展開失敗のトラブルシューティング​

プライベートサービスコネクト環境でアプリのデプロイに失敗した場合:

  1. 送信拒否ログを確認してください。 最近の拒否イベントについては、 system.access.outbound_networkシステムテーブルにクエリを実行します。 拒否ログを確認してください。

    SQL
    SELECT *
    FROM system.access.outbound_network
    WHERE event_time >= CURRENT_TIMESTAMP() - INTERVAL 2 HOUR
    ORDER BY event_time DESC;
  2. DNS解決を確認してください。 アプリのURLがパブリックIPアドレスではなく、プライベートIPアドレスに解決されることを確認してください。プライベートネットワーク内からnslookupを使用して以下を確認してください。

    Bash
    nslookup <your-app-name>.databricksapps.com

    AWS GovCloud の場合は、 <your-app-name>.aws-gov.databricksapps.usを使用してください。AWS GovCloud DoD の場合は、 <your-app-name>.aws-dod.databricksapps.milを使用してください。

  3. ネットワークポリシーの設定を確認してください。 必要なドメインが許可リストに含まれていることを確認してください。パッケージリポジトリのドメインが欠落していること( pypi.org 、 registry.npmjs.org )が、ビルド失敗の最も一般的な原因です。

  4. アプリを再起動してください。 ネットワークポリシーを更新した後は、更新されたポリシーを有効にするために、アプリを再デプロイまたは再起動してください。「サーバレス ワークロードの再起動または再デプロイ」を参照してください。

暗号化とトラフィックルーティング​

Databricks アプリは、専用のルーティング パスと複数の暗号化レイヤーを使用して、ネットワーク通信をセキュリティで保護し、データを保護します。

トラフィックルーティング​

Databricksコントロール プレーン、コンピュート プレーン、その他のDatabricksリソース、およびクラウド サービス間のトラフィックは、クラウド プロバイダーのグローバル ネットワーク上を移動し、パブリック インターネットを経由しません。

ユーザーとdatabricksapps.com (AWS GovCloudの場合はdatabricksapps.us 、AWS GovCloud DoDの場合はdatabricksapps.mil )間のトラフィックは、ユーザーのネットワークの場所によっては、パブリックインターネットを経由する場合があります。公共インターネットへのルーティングを回避するには、フロントエンドのプライベート接続を設定してください。

転送中の暗号化​

アプリとの間のすべてのネットワーク通信は暗号化されます。

  • ユーザー通信: ユーザーとdatabricksapps.com (AWS GovCloud の場合はdatabricksapps.us / databricksapps.mil ) 間の通信には、トランスポート層セキュリティ (TLS) 1.3 暗号化が使用されます。
  • コントロール プレーン トラフィック: Databricksコントロール プレーンとコンピュート プレーン間の通信では、アプリの作成、更新、削除などの管理操作に相互 TLS (mTLS) が使用されます。

保存時の暗号化​

Databricks アプリは、次の方法を使用して保存されたデータを暗号化します。

  • アプリケーション コード: Databricks はアプリ コードをワークスペース ファイルに保存し、ノートブックやその他のワークスペース ファイルと同じ暗号化を使用します。
  • コンピュート ストレージ: アプリは、AES-256 とクラウド プロバイダーの確実な暗号化実装で暗号化された一時的なホスト オペレーティング システム ディスクを使用します。