Important
この機能は、プライベート プレビュー段階にあります。 試すには、Azure Databricks の連絡先にお問い合わせください。
拡張ネットワークトラフィックログは、Azure Databricksサーバーレスコンピュートからのアウトバウンドネットワークトラフィックを記録します。 デフォルトでは、アウトバウンド ネットワーク アクセス イベント システム テーブルは、サーバーレスのエグレス制御が拒否するリクエストのみを記録します。 拡張ネットワークトラフィックログを使用すると、許可されたリクエストも記録するため、サーバーレスワークロードが接続している場所や接続のトラブルシューティングができます。
拡張ネットワークトラフィックログには、サーバーレスコンピュートが各宛先 IP アドレスに送受信するデータ量を記録するフローログテーブルも含まれます。 これら2つの機能は以下のシステムテーブルを使用します:
| 能力 | システムテーブル | Description |
|---|---|---|
| 許可されたアウトバウンドネットワークアクセスイベント | system.access.outbound_network |
既存の拒否リクエスト表に、許可された発信リクエストを追加します。 |
| アウトバウンドトラフィックフローログ | system.access.outbound_traffic |
宛先IPアドレスごとに送受信バイトを記録し、1分間隔に集計します。 |
アウトバウンドトラフィックフローログはプライベートネットワークゲートウェイを経由したトラフィックのみを記録します。
ログを照会するには、拡張ネットワーク トラフィック ログの照会を参照してください。
ユースケース例
拡張ネットワーク トラフィック ログを次の目的で使用します:
- ネットワーク活動の調査: サーバーレスワークロードがどの目的地にアクセスし、いつ、どのワークスペースからアクセスしたかを確認しましょう。
- ネットワークポリシーの洗練: ほとんどアクセスされない宛先を見つけ、サーバーレスのエグレス許可リストから削除するかどうかを判断してください。
- 接続のトラブルシューティング: サーバーレスのエグレスコントロールがリクエストを許可するか拒否するかを判断してください。
- ネットワークコストの調査: サーバーレスワークロードがアクセスするリージョン間、インターネット、プライベート宛先を特定しましょう。
- ストレージ接続性の最適化: プライベート接続やワークロードと同じ領域にあることで恩恵を受けそうな、頻繁にアクセスされるストレージ宛先を見つけましょう。
- トラフィック量の測定: サーバーレスコンピュートがプライベートネットワークゲートウェイを通じて各宛先に送受信するデータ量を確認しましょう。
- 異常な活動を検出する: 予想外に多くのトラフィックがある目的地を見つけましょう。
どのように機能するのか
許可されたネットワークアクセスイベント
拡張ネットワークトラフィックログは、既存のALLOWEDテーブルにsystem.access.outbound_networkイベントを追加します。 このテーブルは、SQLウェアハウス、ジョブ、Lakeflowパイプライン、Databricksアプリ、モデルサーバーエンドポイントなど、サーバーレスワークロードからのアウトバウンドネットワークアクセスイベントを記録します。 許可されるイベントには、クラウドストレージ、インターネット宛先、およびプライベート接続を通じてアクセスされるリソースへのリクエストが含まれます。 完全なテーブルスキーマについては、 ネットワークアクセスイベントシステムテーブルリファレンスを参照してください。
access_type列は各イベントの結果を示しています:
| 値 | Description |
|---|---|
ALLOWED |
アウトバウンドネットワークアクセスは許可されていました。 拡張ネットワークトラフィックログでのみ利用可能です。 |
DROP |
強制モードでサーバーレスのエグレス制御により、アウトバウンドネットワークアクセスが拒否されました。 |
DRY_RUN_DENIAL |
サーバーレスのエグレス制御によってアウトバウンドネットワークアクセスは拒否されるはずでしたが、ポリシーがドライランモードだったため許可されました。 |
リクエストに対して記録される access_type 値と destination_type 値は、宛先とサーバーレスのエグレスポリシーモードによって異なります。
| ネットワークリクエスト | 無制限の外向き通信 | ドライ実行モード | 強制モード |
|---|---|---|---|
| ストレージアクセスを許可 | ALLOWED / DNS |
ログに記録されない | ALLOWED / STORAGE |
| ポリシー違反のストレージアクセス | 適用なし | DRY_RUN_DENIAL / DNS |
DROP / STORAGE |
| VNet リソースへのアクセスを許可 | ALLOWED / DNS |
ALLOWED / DNS |
ALLOWED / DNS |
| ポリシー違反のVNetリソースへのアクセス | 適用なし | DRY_RUN_DENIAL / DNS |
DROP / DNS |
| インターネットアクセスが許可済み | ALLOWED / DNS |
ALLOWED / DNS |
ALLOWED / DNS |
| ポリシーに違反するインターネットアクセス | 適用なし | DRY_RUN_DENIAL / DNS |
DROP / DNS |
許可された DNS イベントの場合、destination にはドメイン名またはストレージホスト名が含まれます。 許可された STORAGE イベントでは、destination にはストレージのホスト名とパスが含まれます。 解決された宛先IPアドレスは dns_event.rdata または storage_event.rdataです。 これらのフィールドは、拒否されたイベントに対して空です。
アウトバウンドトラフィックフローログ
system.access.outbound_trafficテーブルは個々のリクエストではなく、集計されたトラフィック量を記録します。 Azure Databricksはトラフィックを1分ごとに固定された間隔でグループ化し、その間隔は分の境界で始まり、1分で終わります。 各区間内で、同じワークスペース、宛先IPアドレス、接続方法を持つトラフィックが1つのレコードに統合され、送受信バイト数が合計されます。
例えば、 12:05:00 と 12:06:00 間の通信は、 period_start_time = 12:05:00 と period_end_time = 12:06:00のレコードを生成します。 開始時間は含め、終了時間は含まれません。 これらのタイムスタンプは、最初と最後のパケットの時間ではなく、区間境界を示します。 トラフィックがない間隔では、レコードは生成されません。
system.access.outbound_traffic テーブルには、次のスキーマがあります。
| Column | データの種類 | Description |
|---|---|---|
event_id |
文字列 | 集約された交通記録の一意識別子。 |
account_id |
文字列 | トラフィックが発生したAzure DatabricksアカウントのIDです。 |
workspace_id |
文字列 | トラフィックが発生したワークスペースのID。 |
destination_ip |
文字列 | 送信先 IP アドレス。 |
received_bytes |
bigint | 間隔中にサーバーレス コンピューティングによって受信された総バイト数。 |
sent_bytes |
bigint | その期間中にサーバーレスコンピュートによって送信された総バイト数。 |
connection_type |
文字列 | 使用される接続の種類。 値は PRIVATE です。 |
connection_method |
文字列 | 使用された接続方法。 値は PRIVATE_NETWORK_GATEWAY です。 |
period_start_time |
timestamp | 1分間の区間の開始を含む。 |
period_end_time |
timestamp | 1分間隔の排他的終端。 |
表がどのように関連しているか
system.access.outbound_network リクエストの宛先ホスト名やストレージ場所を示します。
system.access.outbound_traffic 宛先のIPアドレス、接続方法、転送されたバイト数を教えてくれます。
それらを関連付けるために、アカウントID、ワークスペースID、解決済みの宛先IPアドレスを照合し、アクセスイベントのevent_timeタイムスタンプがフローログの間隔内に収まることを確認してください。 2つのテーブルは独立した event_id の値を持っているので、 event_idで結合しないでください。
これらのマッチはIPアドレスと時間に基づく相関関係です。 アクセスイベントを特定のネットワーク接続にリンクするわけではありません。 複数のホスト名が同じIPアドレスに解決されると、各ホスト名は同じフローレコードと一致します。
Limitations
拡張ネットワークトラフィックログには以下の制限があります:
- モデルサービングエンドポイントからの外部モデルアクセスについては、許可対象イベントはログに記録されません。
- サーバーレスの外向き通信制御がドライランモードにあるワークスペースからのストレージアクセスでは、許可されたイベントはログに残されません。
- 許可されたイベントは、MLflowやdbtアーティファクトなどのワークスペース内部ストレージへのアクセスには記録されません。
- OpenSharing プロバイダー ストレージへのアクセスについて、許可されたイベントはログに記録されません。
- 約1分未満のワークロードからの許可されたトラフィックは、特にスケジュールされた非インタラクティブなワークロードや制限のない外向き通信ポリシーを持つワークスペースでは、記録されにくいです。
- アウトバウンドトラフィックフローログは、プライベートネットワークゲートウェイを経由したトラフィックのみを記録します。 他のプライベート接続や公共インターネットの出口を利用するトラフィックは記録されません。
- アウトバウンドトラフィックフローログは、Agent Bricks、Unity Gateway、Git フォルダーからのトラフィックを記録しません。
これらの制限は、サーバーレスの外向き通信制御がどのように適用されるかや、拒否されたリクエストがどのように記録されるかには影響しません。
よく寄せられる質問
以下の質問は、拡張ネットワークトラフィックログでよく見られる挙動について取り上げています。
拡張ネットワークトラフィックログを使うにはサーバーレスの egress 制御が必要ですか?
No. 制限のないサーバーレス イーグレス ポリシーを持つワークスペースでも、許可されたアウトバウンドネットワークアクセスイベントが記録されます。
なぜワークロードが終わった後にネットワークアクセスイベントが発生するのでしょうか?
Azure Databricksは、例えばDeltaログやメタデータの管理のために、ワークロード終了後もストレージへのアクセスを続けることがあります。 これらのリクエストは、ユーザーのワークロードが稼働していないときにネットワークアクセスイベントを発生させることがあります。 イベントはサーバーレス計算インスタンスが終了した後に停止します。
なぜネットワークアクセスログに見慣れないホスト名が表示されるのでしょうか?
ログに記録される送信先の一部は、プラットフォーム運用に使用される Azure Databricks 管理リソースです:
| ホストネームパターン | Purpose |
|---|---|
databricks-prewarm-datasets* |
サーバーレスのコンピュート起動時間を改善します。 |
dbstorage* |
Azure Databricks の既定のストレージ。 |
system-tables* |
デフォルトのサンプルデータセットへのアクセス。 |
見覚えのないホスト名が他に見つかった場合は、Azure Databricksアカウントチームに連絡してください。
ネットワークトラフィックログが表示されるまでにどれくらいかかりますか?
ほとんどのアウトバウンドネットワークアクセスイベントは、リクエストから15分以内に発生します。 遅延は変動することがあり、Azure Databricks はこれらのログに対して遅延のサービス レベル アグリーメント (SLA) を提供していません。
なぜ許可されたネットワークアクセスイベントのフローログが見つからないのですか?
フローログはプライベートネットワークゲートウェイ経由でルーティングされたトラフィックのみを記録しているため、他の接続性を利用する許可されたリクエストには対応するフローログがありません。 フローログが欠けているからといって、リクエストが失敗したわけでもデータが転送されていないわけでもありません。