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

サーバレスエグレスコントロールのネットワークポリシーの管理

備考

プレビュー

この機能は パブリック プレビュー段階です。

このドキュメントでは、 Databricksのサーバレスワークロードからの送信ネットワーク接続を制御するために、ネットワーク ポリシーを設定および管理する方法について説明します。

必要条件

  • Databricks ワークスペースは Enterprise レベルにある必要があります。

  • ネットワークポリシーを管理するための権限は、アカウント管理者に制限されています。

ネットワークポリシーへのアクセス

アカウントでネットワークポリシーを作成、表示、更新するには:

  1. アカウントコンソールで、 クラウドリソース をクリックします。
  2. ネットワーク タブをクリックします。

ネットワーク ポリシーの一覧。

新しいネットワーク ポリシーを作成する

  1. 新しいネットワーク ポリシーの作成 をクリックします。

  2. ネットワークアクセスモードを選択します。

    • フルアクセス :無制限のアウトバウンドインターネットアクセス。 フル アクセス を選択した場合、外向きのインターネット アクセスは制限されません。
    • 制限付きアクセス : 送信アクセスは、指定された宛先に制限されます。 詳細については、「 ネットワーク ポリシーの概要」を参照してください。

    ネットワーク ポリシーの詳細。

ネットワークポリシーの設定

次の手順では、制限付きアクセスモードのオプション設定の概要を示します。

エグレス ルールを設定する

  1. サーバレス コンピュートに追加のドメインへのアクセス権を付与するには、 許可されたドメイン リストの上にある 宛先の追加 をクリックします。

    インターネットの宛先を追加します。

    FQDN フィルターを使用すると、同じ IP アドレスを共有するすべてのドメインにアクセスできます。 エンドポイント全体でモデルサービング プロビジョニングは、ネットワーク アクセスが制限付きに設定されている場合、インターネット アクセスを防ぎます。 ただし、FQDN フィルタリングによるきめ細かな制御はサポートされていません。

  2. ワークスペースが追加の S3 バケットにアクセスできるようにするには、 許可されたストレージ アカウント リストの上にある 宛先の追加 ボタンをクリックします。

    保存先を追加します。

エグレス ルールを設定するときは、次の点に注意してください。

  • UC 外部ロケーションのメタストアバケットと S3 バケットバケットが異なるリージョンにある場合、アクセスを成功させるには、バケットをエグレス許可リストに明示的に追加する必要があります。
  • サポートされる宛先の最大数は 2000 です。 これには、ワークスペースからアクセス可能なすべての Unity Catalog の場所と接続、およびポリシーで明示的に追加された宛先が含まれます。
注記

Unity Catalog 接続の暗黙的な許可リストは非推奨です。廃止前に暗黙的な許可リストを使用していたワークスペースを含むアカウントの場合、この動作は 2025 年 7 月 15 日まで有効です。

ポリシーの施行

dry-run モードを使用すると、リソースへのアクセスを中断することなく、ポリシー設定をテストし、送信接続を監視できます。 dry-run モードが有効な場合、ポリシーに違反する要求はログに記録されますが、ブロックされません。 次のオプションから選択できます。

  1. Databricks SQL :Databricks SQLウェアハウスはドライ実行モードで動作します。

  2. AI モデルサービング : モデルサービング エンドポイントはドライ実行モードで動作します。

  3. すべての製品 : すべての Databricks サービスはドライ実行モードで動作し、他のすべての選択をオーバーライドします。

    保存先を追加します。

デフォルトポリシーを更新する

各 Databricks アカウントには 、デフォルト ポリシー が含まれています。 デフォルト・ポリシーは 、明示的にネットワーク・ポリシーが割り当てられていないすべてのワークスペース(新しく作成されたワークスペースを含む)に関連付けられます。このポリシーは変更できますが、削除することはできません。 デフォルト ポリシーは、少なくとも Enterprise レベルのワークスペースにのみ適用されます。

ネットワークポリシーをワークスペースに関連付ける

デフォルトのポリシーを追加の設定で更新した場合、既存のネットワークポリシーがないワークスペースにも自動的に適用されます。 ワークスペースは Enterprise レベルである必要があります。

ワークスペースを別のポリシーに関連付けるには、次の操作を行います。

  1. ワークスペースを選択します。
  2. ネットワーク ポリシー で、 ネットワーク ポリシーの更新 をクリックします。
  3. リストから目的のネットワークポリシーを選択します。

ネットワーク ポリシーを更新します。

ネットワーク ポリシーの変更を適用する

ほとんどのネットワーク設定の更新は、10 分以内にサーバレス コンピュートに自動的に反映されます。 これには以下が含まれます。

  • 新しい Unity Catalog 外部ロケーションまたは接続を追加する。
  • ワークスペースを別のメタストアにアタッチする。
  • 許可されたストレージまたはインターネットの宛先を変更します。
注記

インターネットアクセスまたはドライ実行モードの設定を変更する場合は、コンピュートを再起動する必要があります。

サーバレスワークロードの再起動または再デプロイ

更新する必要があるのは、インターネットアクセスモードを切り替えるとき、またはドライ実行モードを更新するときだけです。

適切な再始動手順を決定するには、以下の製品別リストを参照してください。

  • Databricks ML Serving : ML サービング エンドポイントを再デプロイします。 カスタム モデルサービング エンドポイントを作成するを参照してください。
  • DLT : 実行中の DLT パイプラインを停止してから再起動します。DLT パイプラインで更新プログラムを実行するを参照してください。
  • サーバレス SQLウェアハウス : SQLウェアハウスを停止して再起動します。 SQLウェアハウスの管理を参照してください。
  • ワークフロー : ネットワーク ポリシーの変更は、新しいジョブの実行がトリガーされたとき、または既存のジョブの実行が再開されたときに自動的に適用されます。
  • ノートブック :
    • ノートブックが Sparkと対話しない場合は、新しいサーバレス クラスターを終了してアタッチし、ノートブックに適用されているネットワーク設定を更新できます。
    • ノートブックが Sparkと対話すると、サーバレス リソースが更新され、変更が自動的に検出されます。 アクセス モードとドライ実行モードの切り替えは、適用されるまでに最大 24 時間かかる場合があり、その他の変更が適用されるには最大 10 分かかる場合があります。

ネットワーク ポリシーの適用を確認する

ネットワーク ポリシーが正しく適用されていることを確認するには、さまざまなサーバレス ワークロードから制限されたリソースへのアクセスを試みます。 検証プロセスは、サーバレス製品によって異なります。

DLTによる検証

  1. Python ノートブックを作成します。DLT wikipedia の Python チュートリアルで提供されているサンプル ノートブックを使用できます。

  2. DLT パイプラインを作成します。

    1. ワークスペースのサイドバーで、 データエンジニアリング の下にある パイプライン をクリックします。

    2. パイプラインの作成 をクリックします。

    3. 次の設定でパイプラインを構成します。

      • パイプライン Mode : サーバレス
      • ソース コード : 作成したノートブックを選択します。
      • ストレージオプション : Unity Catalog。 目的のカタログとスキーマを選択します。
    4. 作成 をクリックします。

  3. DLT パイプラインを実行します。

  4. パイプライン ページで、 開始 をクリックします。

  5. パイプラインが完了するまで待ちます。

  6. 結果を確認する

    • 信頼できる宛先 : パイプラインは正常に実行され、宛先にデータを書き込む必要があります。
    • 信頼できない宛先 : パイプラインは失敗し、ネットワーク アクセスがブロックされていることを示すエラーが表示されます。

Databricks SQL による検証

  1. SQLウェアハウスを作成します。

  2. SQL エディタでテストクエリを実行し、ネットワークポリシーによって制御されるリソースへのアクセスを試みます。

  3. 結果を確認します。

    • 信頼できる宛先 : クエリは成功する必要があります。
    • 信頼できない宛先 : クエリはネットワーク アクセス エラーで失敗します。
  4. 標準の Python ライブラリを使用して UDF からネットワークに接続するには、次の UDF 定義を実行します。

    SQL
    CREATE OR REPLACE TEMPORARY FUNCTION ping_google(value DOUBLE)
    RETURNS STRING
    LANGUAGE python
    AS $$
    import requests
    url = "https://www.google.com"
    response = requests.get(url, timeout=5)
    if response.status_code == 200:
    return "UDF has network!"
    else:
    return "UDF has no network!"
    $$;
    select ping_google(1)

モデルサービングで検証

  1. テストモデルの作成

    1. Python ノートブックで、ファイルのダウンロードや API リクエストの作成など、公開インターネット リソースへのアクセスを試みるモデルを作成します。
    2. このノートブックを実行して、テスト ワークスペースにモデルを生成します。 例えば:
    Python

    import mlflow
    import mlflow.pyfunc
    import mlflow.sklearn
    import requests

    class DummyModel(mlflow.pyfunc.PythonModel):
    def load_context(self, context):
    pass

    def predict(self, _, model_input):
    first_row = model_input.iloc[0]
    try:
    response = requests.get(first_row['host'])
    except requests.exceptions.RequestException as e:
    # Return the error details as text
    return f"Error: An error occurred - {e}"
    return [response.status_code]

    with mlflow.start_run(run_name='internet-access-model'):
    wrappedModel = DummyModel()

    mlflow.pyfunc.log_model(artifact_path="internet_access_ml_model", python_model=wrappedModel, registered_model_name="internet-http-access")
  2. 配信エンドポイントを作成する

    1. ワークスペースのナビゲーションで、 機械学習 を選択します。

    2. サービング タブをクリックします。

    3. サービングエンドポイントの作成 をクリックします。

    4. 次の設定でエンドポイントを構成します。

      • サービングエンドポイント名 : わかりやすい名前を指定します。
      • エンティティの詳細 : モデル レジストリ モデル を選択します。
      • モデル : 前の手順で作成したモデルを選択します。
    5. 確認 をクリックします。

    6. サービス エンドポイントが 準備完了 状態に達するまで待ちます。

  3. エンドポイントをクエリします。

    1. サービス エンドポイント ページ内の クエリ エンドポイント オプションを使用して、テスト要求を送信します。
    {"dataframe_records": [{"host": "https://www.google.com"}]}
  4. 結果を確認します。

    • インターネット アクセスが有効: クエリは成功します。
    • インターネット アクセス制限: クエリはネットワーク アクセス エラーで失敗します。

ネットワークポリシーを更新する

ネットワーク ポリシーは、作成後いつでも更新できます。 ネットワークポリシーを更新するには:

  1. アカウントコンソールのネットワークポリシーの詳細ページで、ポリシーを変更します。

    • ネットワークアクセスモードを変更します。
    • 特定のサービスのドライ実行モードを有効または無効にします。
    • FQDN またはストレージの宛先を追加または削除します。
  2. 更新 をクリックします。

  3. ネットワーク ポリシーの変更を適用する を参照して、更新プログラムが既存のワークロードに適用されることを確認します。

拒否ログを確認する

拒否ログは、Unity Catalog の system.access.outbound_network テーブルに格納されます。 これらのログは、送信ネットワーク要求が拒否されたタイミングを追跡します。 拒否ログにアクセスするには、Unity Catalog メタストアでアクセス スキーマが有効になっていることを確認します。 「システムテーブル スキーマの有効化」を参照してください

次のような SQL クエリを使用して、拒否イベントを表示します。 dry-run logs が有効になっている場合、クエリは拒否ログと dry-run ログの両方を返します。これらは access_type 列を使用して区別できます。 拒否ログには DROP 値がありますが、dry-run ログには DRY_RUN_DENIAL が表示されます。

次の例では、過去 2 時間のログを取得します。

SQL

select * from system.access.outbound_network
where event_time >= current_timestamp() - interval 2 hour
sort by event_time desc

dry-run モードと external 生成AI モデルの場合、次のようになります。

  • を使用して外部生成 モデルに接続する場合、ネットワークアウトバウンドシステムテーブルに拒否が記録されません。AIMosaic AI GatewayMosaic AI Gatewayの紹介を参照してください。
  • Mosaic AI Serving による外部モデルアクセスの適用は、ドライ実行モードでも継続されます。
注記

アクセス時から拒否ログが表示されるまでの間に、多少の遅延が発生する場合があります。

制限

  • 設定 : この機能は、アカウントコンソールからのみ設定できます。 API のサポートはまだ利用できません。

  • アーティファクトのアップロードサイズ : MLflowの内部 Databricks ファイルシステム をdbfs:/databricks/mlflow-tracking/<experiment_id>/<run_id>/artifacts/<artifactPath>形式で使用する場合、アーティファクトのアップロードはlog_artifactlog_artifacts、およびlog_model APIで5GBに制限されます。

  • モデルサービング : モデルサービングのイメージを構築する場合、エグレスコントロールは適用されません。

  • ワークスペース カタログ バインディングの伝達 : ネットワーク アクセス モードが制限付きアクセスに設定されている場合、 ワークスペース カタログ バインディング のアクセス許可への変更が完全に反映されるまでに最大 24 時間かかります。 これを迅速に行うには、ネットワーク ポリシーの許可された保存先に保存先を追加します。変更が有効になるまで約 10 分かかります。

  • 短時間のみ有効なガベージコレクション (GC) ワークロードのログ配信拒否 : 存続時間が 120 秒未満の短時間 GC ワークロードからのログ拒否ログは、ログの遅延によりノードが終了する前に配信されない場合があります。アクセスは引き続き適用されますが、対応するログ エントリが欠落している可能性があります。

  • サポートされている Unity Catalog 接続 : サポートされている接続の種類は、 MySQL、 PostgreSQL、 Snowflake、 Redshift、 Azure Synapse、 SQL Server、Salesforce、 BigQuery、Netsuite、Workday RaaS、 Hive metastore、Salesforce Data Cloud です。