Databricks Apps では、細かいネットワーク制御がサポートされており、アプリがインターネットや内部リソースと通信する方法をセキュリティで保護および管理するのに役立ちます。 IP アクセス リスト、フロントエンド プライベート接続、ネットワーク ポリシーの組み合わせを使用して、イングレス (受信) トラフィックルールとエグレス (送信) トラフィック ルールの両方を構成できます。
ネットワーク アーキテクチャ
Azure Databricksは、トラフィックを直接受信するサーバーレス コンピューティング プレーンにアプリをデプロイします。 これは、Model Serving や Vector Search などの他のルート最適化サービスに似ています。
接続プロセスは次のように動作します。
- Azure Databricks アプリに対する初期ユーザー要求は、セッションを検証し、アプリへのアクセスを承認するために、コントロール プレーンで OAuth 認証を開始します。
- 認証が成功すると、後続のすべての要求は、コントロール プレーンを走査することなく、サーバーレス コンピューティング プレーンに直接ルーティングされます。
サーバーレス コンピューティング プレーン用に構成されたネットワーク セキュリティ ポリシーは、Databricks Apps トラフィックに適用されます。 これには、IP アクセス リストとフロントエンドプライベート接続構成が含まれます。
イングレス コントロール
パブリック インターネットから Azure Databricks ワークスペースとアプリへのアクセスを制限するには、次の機能を使用します。
- IP アクセス リスト: ワークスペース レベルで IP アクセス リストを有効にして、ワークスペースとアプリのアクセスを既知の信頼できる IP 範囲に制限します。 構成された IP 範囲からのトラフィックのみが許可されます。 詳細については、 ワークスペースの IP アクセス リストの構成に関するページを参照してください。
Front-end プライベート接続: VNet 経由でアプリに安全にアクセスするために、Azure Private Link接続経由でイングレス トラフィックをルーティングします。
プライベート接続を介して適切な名前解決を行うには、
databricksapps.comドメインの条件付き DNS 転送を構成する必要があります。 そうしないと、アプリのドメインの DNS クエリがプライベート エンドポイントではなくパブリック IP アドレスに解決される可能性があります。 セットアップ手順については、「インバウンドプライベートリンクを構成する」を参照してください。レガシリージョン URL は、アプリ認証に必要な OAuth をサポートしていないため、Databricks Apps ではサポートされていません。 詳細については、従来のリージョン URLを参照してください。
エグレス コントロール
アプリからの送信トラフィックを制御するには、ネットワーク接続構成 (NCC) を作成し、アプリをホストするワークスペースにネットワーク ポリシーを適用します。
ネットワーク接続の構成
network 接続構成を使用して、アプリをAzure サービスに安全に接続します。 NCC には、ストレージ アカウント ファイアウォールに追加して、アプリやその他のサーバーレス コンピューティングからのアクセスを明示的に許可できる安定したサブネット ID が用意されています。
プライベート宛先へのエグレス トラフィックをさらに制限するには、Azure リソースのサーバーレス プライベート エンドポイントを構成するか、VNet 内の Azure ロード バランサー経由でトラフィックをルーティングします。
ネットワーク ポリシー
ネットワーク ポリシーを使用して、Databricks アプリやその他のサーバーレス ワークロードにエグレス制限を適用します。 これは、送信接続を制御するために組織またはコンプライアンスの要件を満たす必要がある場合に便利です。
注
ネットワーク ポリシーは、Premium レベルでのみ使用できます。
アプリが特定の条件を満たす場合は、ネットワーク ポリシーを設定します。
- 承認された外部ドメインの特定のセットへのアクセスを制限する必要がある
- 偶発的なデータ流出を防ぐ必要がある
- 送信インターネット トラフィックを制限するセキュリティまたはコンプライアンス標準に準拠する必要がある
アプリのデプロイに必要なエグレス ドメイン
制限付きエグレス ネットワーク ポリシーを使用する場合は、アプリビルドまたはランタイムが成功するために特定のドメインを許可リストする必要があります。 これらのドメインがないと、ビルド プロセスで依存関係をダウンロードしたり、必要なサービスと通信したりできないため、アプリのデプロイは失敗します。
すべての Databricks アプリの展開には、次のドメインが必要です。
| [ドメイン] | Purpose |
|---|---|
*.databricksapps.com |
アプリの提供とユーザー接続 |
pypi.org、files.pythonhosted.org |
アプリのビルド中にPythonパッケージをダウンロードする(アプリでrequirements.txtを使用する場合に必要) |
registry.npmjs.org |
アプリのビルド中に Node.js パッケージをダウンロードする (アプリがpackage.jsonを使用する場合に必要) |
:::
さらに、Azure展開では、次のドメインが必要になる場合があります。
| [ドメイン] | Purpose |
|---|---|
*.blob.core.windows.net |
Azure Blob Storage のエンドポイントは、Azure ストレージに接続するアプリによって使用される |
*.dfs.core.windows.net |
Azure Data Lake Storage エンドポイントは、ADLS に接続するアプリによって使用されます。 |
:::
:::
アプリでは、特定の依存関係や呼び出す外部 API によっては、追加のドメインが必要になる場合があります。 たとえば、アプリがサードパーティの REST API を呼び出す場合は、その API のドメインを許可リストに追加します。
Important
エグレスが制限されているPrivate Link環境では、ドメイン許可リストエントリが見つからないと、一般的にアプリの展開エラーが発生します。 アプリのデプロイに失敗した場合は、 system.access.outbound_network システム テーブルで、追加するドメインを特定するために拒否された接続試行があるかどうかを確認します。
拒否ログの確認を参照してください。
ネットワーク ポリシーを構成するためのベスト プラクティス
意図しない中断を回避し、アプリが必要なリソースにアクセスできることを確認するには、次のガイドラインに従ってください。
- 必要な宛先のみを許可します。 アプリで必要なパブリック リソースまたはプライベート リソースの完全修飾ドメイン名 (FQDN) を追加します。 デプロイに 必要なドメインの 最小セットについては、アプリのデプロイに必要なエグレス ドメインを参照してください。
- 必要に応じてパッケージ リポジトリを含めます。 アプリでパブリック Pythonまたは Node.js パッケージをインストールする場合は、Pythonに対して
pypi.org、Node の場合はregistry.npmjs.orgなどのドメインを許可することが必要になる場合があります。 アプリケーションでは、特定の依存関係に応じて、追加または異なるドメインが必要になる場合があります。 これらのリポジトリがないと、requirements.txtまたはpackage.jsonに依存するアプリ ビルドが失敗する可能性があります。 - ドライラン モードを使用して、ネットワーク ポリシーを検証します。 このモードでは、トラフィックをブロックせずにポリシーの適用をシミュレートします。
-
system.access.outbound_networkテーブルを使用して、拒否された接続試行を確認します。 これは、許可する必要があるドメインを識別するのに役立ちます。 拒否ログの確認を参照してください。
- 信頼できる API や、Unity カタログに登録されていないAzureストレージ アカウントなど、必要な外部ドメインを追加します。
Private Link 環境でアプリをデプロイする
ワークスペースでフロントエンドプライベート接続を使用する場合は、Databricks アプリをデプロイして使用するための追加の構成手順を完了する必要があります。 この構成がないと、アプリのデプロイが失敗するか、ユーザーがアプリに到達できない可能性があります。
DNS の構成
アプリの URL がパブリック IP アドレスではなくプライベート IP アドレスに解決されるように、 databricksapps.com ドメインの条件付き DNS 転送を構成する必要があります。 この構成がないと、プライベート ネットワークの背後にあるユーザーは、デプロイされたアプリに到達できません。
Azure DNS サーバーに、次のドメインの条件付き転送規則を追加します。
*.databricksapps.com*.azuredatabricks.net*.privatelink.azuredatabricks.net
VNet が Azure Private DNS ゾーンにリンクしていることを確認します。 DNS のセットアップ手順の詳細については、「 カスタム DNS 構成」を参照してください。
出口要件
エグレスが制限されているPrivate Link環境では、アプリはビルド時と実行時の両方で特定のドメインへの送信接続を必要とします。 許可リストに追加するドメインの完全な一覧については、アプリのデプロイに必要なエグレスドメインを参照してください。
Private Link環境でアプリのエグレスを構成するには:
- ネットワーク接続構成 (NCC) を作成または更新し、アプリをホストしているワークスペースにアタッチします。
- ネットワーク ポリシー を作成または更新して、 必要なドメインを許可リストに登録します。
- まずドライラン モードを使用して、トラフィックをブロックせずに構成を検証します。
-
system.access.outbound_networkシステム テーブルで、アプリのデプロイ中に拒否された接続試行を確認します。
Private Link のデプロイ失敗時のトラブルシューティング
アプリがPrivate Link環境にデプロイできない場合:
エグレス拒否ログを確認します。
system.access.outbound_networkシステム テーブルに対して最近の拒否イベントのクエリを実行します。 拒否ログの確認を参照してください。SELECT * FROM system.access.outbound_network WHERE event_time >= CURRENT_TIMESTAMP() - INTERVAL 2 HOUR ORDER BY event_time DESC;DNS 解決を確認します。 アプリの URL がパブリック IP アドレスではなくプライベート IP アドレスに解決されることを確認します。 プライベート ネットワーク内から
nslookupを使用して、次のことを確認します。nslookup <your-app-name>.databricksapps.comネットワーク ポリシーの構成を確認します。 必要なドメインが許可リストに含まれているかどうかを確認します。 ビルド エラーの最も一般的な原因は、パッケージ リポジトリ (
pypi.org、registry.npmjs.org) のドメインがありません。アプリを再起動します。 ネットワーク ポリシーを更新した後、アプリを再デプロイまたは再起動して、更新されたポリシーを有効にします。 サーバーレス ワークロードの再起動または再デプロイに関する説明を参照してください。
暗号化とトラフィック ルーティング
Databricks Apps では、専用のルーティング パスと複数の暗号化レイヤーを使用して、ネットワーク通信をセキュリティで保護し、データを保護します。
トラフィックのルーティング
Azure Databricks コントロール プレーン、コンピューティング プレーン、その他のAzure Databricks リソース、クラウド サービス間のトラフィックは、クラウド プロバイダーのグローバル ネットワークを経由し、パブリック インターネットを経由しません。
ユーザーと databricksapps.com の間のトラフィックは、ユーザーのネットワークの場所に応じてパブリック インターネットを経由する場合があります。 パブリック インターネット ルーティングを回避するには、フロントエンドプライベート接続を構成します。
転送中の暗号化
アプリとの間のすべてのネットワーク通信は暗号化されます。
-
ユーザー トラフィック: ユーザーと
databricksapps.com間の通信では、トランスポート層セキュリティ (TLS) 1.3 暗号化が使用されます。 - Control plane traffic: Azure Databricks コントロール プレーンとコンピューティング プレーン間の通信では、アプリの作成、更新、削除などの管理操作に相互 TLS (mTLS) が使用されます。
保存時の暗号化
Databricks Apps は、次の方法を使用して格納されたデータを暗号化します。
- Application code: Azure Databricks は、アプリ コードをワークスペース ファイルに格納し、ノートブックやその他のワークスペース ファイルと同じ暗号化を使用します。
- コンピューティング ストレージ: アプリでは、AES-256 とクラウド プロバイダーの既定の暗号化実装で暗号化されたエフェメラル ホスト オペレーティング システム ディスクが使用されます。