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

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

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

イングレス制御については、 「コンテキストベースのイングレス制御」を参照してください。

必要条件

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

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

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

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

  1. アカウント コンソールから、 [セキュリティ] をクリックします。
  2. [ネットワーク] タブをクリックします。
  3. [ポリシー] の下で、 [コンテキストベースのイングレスおよびエグレス制御] をクリックします。

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

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

  2. ポリシー名 を入力します。

  3. [出力] タブをクリックします。

    イングレス ルールを設定するには、 「イングレス ルールの設定」を参照してください。

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

    • すべての宛先へのアクセスを許可する : 無制限のアウトバウンド インターネット アクセス。 [フル アクセス ] を選択した場合、送信インターネット アクセスは制限されません。
    • 特定の宛先へのアクセス制限 : 送信アクセスは指定された宛先に制限されます。

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

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

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

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

出力ルールを設定する前に、次の点に注意してください。

  • メタストアで S3 バケットを使用する場合、アクセスを成功させるには、 REST API を使用してバケットをエグレス許可リストに明示的に追加する必要があります。
  • サポートされる宛先の最大数は 2500 です。
  • 追加できるストレージ保存先の数 (allowed_storage_destinations) は、ポリシーごとに100個に制限されています。
  • 許可されたドメインとして追加できる FQDN の数は、ポリシーごとに 100 に制限されています。
  • OpenSharing バケットはネットワークポリシーで暗黙的に許可リストに登録されています。
  1. サーバレス コンピュートに追加のドメインへのアクセス権を付与するには、 許可されたドメイン リストの上にある 宛先の追加 をクリックします。

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

    FQDNフィルタを使用すると、同じIPアドレスを共有するすべてのドメインにアクセスできます。

注記

モデルサービング プロビジョニング スループット エンドポイントは、詳細な FQDN フィルタリングをサポートしていません。 ネットワークアクセスを制限付きに設定すると、これらのエンドポイントからのインターネットアクセスはすべてブロックされます。

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

ワークスペースまたはすべてのワークスペースにバインドされた外部ストレージの場所のみが、ネットワーク ポリシーに自動的に含まれます。 場所がワークスペースにバインドされていることを確認するには、次のステップに従います。

  1. カタログ エクスプローラーで、[外部ロケーション] を開き、 [ワークスペース] タブをチェックして、ワークスペースが割り当てられていることを確認します。 「特定のワークスペースに外部ロケーションを割り当てる」を参照してください。
  2. API / CLI : ワークスペース バインディングを使用して、外部ロケーションのバインディングを取得します。

追加のサービスにアクセスするには、有効な FQDN をすべて追加する必要があります。

注記

REPL や UDF などのユーザー コード コンテナーからクラウド ストレージ サービスへの直接アクセスは、デフォルトでは許可されていません。このアクセスを有効にするには、ポリシーの [許可されたドメイン] にストレージ リソースの FQDN を追加します。ストレージ リソースのベース ドメインのみを追加すると、リージョン内のすべてのストレージ リソースへのアクセスが誤って許可されてしまう可能性があります。

ポリシーの施行

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

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

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

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

    Dry 実行モード for network ポリシー.

インターネットの宛先をブロックする

注記

この機能はパブリック プレビュー段階にあり、SEG対象のワークスペースで利用できます。まだSEG対象ではないEnterprise tier のワークスペースでは、ネットワークアクセスが**フルアクセス**に設定されている場合に限り、ブロックされた宛先はデフォルトのポリシーでのみサポートされます。

サーバレスワークロードからの特定のインターネットの宛先をブロックします。全体的な強制モードを切り替えることなく、既知の不正なドメインをブロックするための 制限付きアクセス モードの軽量な代替手段として、ブロックされた宛先を使用します。

ネットワークポリシーREST APIを介して、ブロックされた宛先を構成します。API にはアカウント管理者の OAuth トークンが必要です。個人用アクセストークンは、アカウントレベルのAPIsではサポートされていません。

OAuthマシン間認証を参照してください。

ブロックされた宛先は次のように動作します:

  • 各エントリは、destination (完全修飾ドメイン名、FQDN) と、DNS_NAMEinternet_destination_typeを指定します。
  • IP範囲とストレージの宛先はサポートされていません。
  • ブロックされた宛先は、ポリシーのネットワークアクセスモードに関係なく常に適用されます。
  • ブロックされた宛先は、許可された宛先よりも優先されます。
  • 許可された宛先がブロックされた宛先のサブドメインである構成は、APIによって拒否されます。ただし、「広範囲に許可し、狭範囲にブロックする」パターンは許可されています(例: example.comを許可し、api.example.comをブロックする)。

ネットワークアクセスが フルアクセス に設定されている場合でも、拒否ログは Unity Catalog の system.access.outbound_network テーブルに格納されます。拒否ログを確認するを参照してください。

インターネットの宛先をブロックするには:

  1. ネットワークポリシーを取得します。次のコマンドを実行します:

    <ACCOUNT_HOST>accounts.gcp.databricks.com に置き換えます。

    Bash
    curl --location --request GET \
    'https://<ACCOUNT_HOST>/api/2.0/accounts/<ACCOUNT_ID>/network-policies/<NETWORK_POLICY_ID>' \
    --header 'Authorization: Bearer <OAUTH_TOKEN>'

    応答本文をnetwork-policy.jsonとして保存します。

  2. egress.network_accessの下にblocked_internet_destinationsを追加するようにnetwork-policy.jsonを編集します。次の例は、 フルアクセス モードで単一のドメインをブロックします:

    JSON
    {
    "network_policy_id": "my-policy",
    "account_id": "...",
    "egress": {
    "network_access": {
    "restriction_mode": "FULL_ACCESS",
    "blocked_internet_destinations": [
    {
    "destination": "malicious-domain.example.com",
    "internet_destination_type": "DNS_NAME"
    }
    ]
    }
    }
    }
  3. 次のコマンドを使用して、更新されたポリシーをPUTリクエストとともに同じエンドポイントに送信します。PUT本文には、完全なネットワークポリシーを含める必要があります。省略したフィールドはすべてクリアされます。

    Bash
    curl --location --request PUT \
    'https://<ACCOUNT_HOST>/api/2.0/accounts/<ACCOUNT_ID>/network-policies/<NETWORK_POLICY_ID>' \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Bearer <OAUTH_TOKEN>' \
    --data @network-policy.json

Databricks CLI を使用して databricks account network-policies update-network-policy-rpc でネットワーク**ポリシー**を管理することも、**Terraform** の databricks_account_network_policy **リソース**を使用して管理することもできます。account network-policiesコマンド・グループを参照してください。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Databricks ML Serving : ML サービング エンドポイントを再デプロイします。 カスタム モデルサービング エンドポイントを作成するを参照してください。
  • パイプライン : 実行中の LakeFlow Pipelines を停止してから再起動します。「パイプラインの更新を実行する」を参照してください。
  • サーバレス SQLウェアハウス : SQLウェアハウスを停止して再起動します。 SQLウェアハウスの管理を参照してください。
  • Lakeflow ジョブ : ネットワーク ポリシーの変更は、新しいジョブ実行がトリガーされたとき、または既存のジョブ実行が再開されたときに自動的に適用されます。
  • ノートブック :
    • ノートブックがSparkと対話しない場合は、ネットワーク ポリシーを更新するために、サーバレス コンピュートを終了して再アタッチできます。
    • ノートブックが Sparkと対話すると、サーバレス リソースが更新され、変更が自動的に検出されます。 ほとんどの変更は 10 分で更新されますが、インターネット アクセス モードの切り替え、ドライ実行モードの更新、または適用の種類が異なるアタッチされたポリシー間の変更には、最大 24 時間かかる場合があります。 これらの特定の種類の変更の更新を迅速化するには、関連付けられているすべてのノートブックとジョブをオフにします。

宣言型自動化バンドルのUI依存関係

制限付きアクセスモードを レス 出力制御とともに使用すると、Declarative Automation Bundles UI 機能は特定の外部ドメインへのアクセスを必要とします。 アウトバウンドアクセスが完全に制限されている場合、ユーザーは宣言型自動化バンドルを操作する際に、ワークスペースインターフェイスでエラーが表示される可能性があります。

宣言的オートメーション バンドルの UI 機能が制限されたネットワーク ポリシーで動作し続けるようにするには、 ポリシーの許可されたドメイン に次のドメインを追加します。

  • github.com
  • objects.githubusercontent.com
  • release-assets.githubusercontent.com
  • checkpoint-api.hashicorp.com
  • releases.hashicorp.com
  • registry.terraform.io

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

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

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

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

    1. ワークスペースで、サイドバーの ワークフローアイコン。 Jobs & パイプライン をクリックします。

    2. 「作成 」をクリックし、「 ETL パイプライン」 をクリックします。

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

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

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

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

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

  6. 結果を確認する

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

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

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

  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
ORDER BY event_time DESC;

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

  • ネットワーク ポリシーが必要な依存関係へのアクセスをブロックしている場合は、まず system.access.outbound_networkの拒否ログを確認します。さらに、モデルサービングコンテナのビルドログは、ブロックされたドメインに関する有用な情報を提供する場合があります。
  • モデルサービングコンテナのビルドが失敗した場合は、 system.access.outbound_network の拒否ログを確認して、ブロックされたドメインを特定します。
  • モデルサービングによる外部モデルへのアクセスの強制は、ドライ実行モードでも継続されます。
注記

アクセス時から拒否ログが表示されるまでの間に、知覚可能な遅延が発生する可能性があります。

制限

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

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

  • Databricks SQL ユーザー定義関数 (UDF) のネットワーク接続 : Databricks SQL でネットワーク アクセスを有効にするには、Databricks アカウント チームにお問い合わせください。

  • パイプラインイベントフックのログ記録 :別のワークスペースを対象とするLakeFlow Pipelinesイベントフックはログに記録されません。これは、クロスリージョンワークスペースと、同じリージョン内のワークスペースの両方に構成されたEventhooksに適用されます。

  • Unity Catalogワークスペース バインディングの変更 : Unity Catalogワークスペース バインディングへの変更が有効になるまでに最大 24 時間かかる場合があります。 このプロセスを迅速化するには、ストレージバケットをネットワークポリシーに追加してください。ワークスペースカタログのバインディングを参照してください。

次のステップ

  • コンテキストベースのイングレス制御を構成する : ID、リクエストの種類、ネットワーク ソースに基づいて受信アクセス ポリシーを定義し、ワークスペース アクセスを保護します。コンテキストベースのイングレス制御を参照してください。
  • プライベート接続を構成する : Private サービス Connect を使用して、パブリック インターネットをバイパスして、仮想ネットワークから Google Cloud サービスへの安全で分離されたアクセスを確立します。 「ワークスペースの Private サービス Connect を有効にする」を参照してください。
  • データ転送と接続コストを理解する :ネットワークセキュリティ制御とプライベート接続を実装する際のコストへの影響について学びます。 レスワークロード。 Databricksのネットワークコストについて理解するを参照してください。