Managing network ポリシー for サーバレス egress control
プレビュー
この機能はパブリックプレビュー段階です。
このドキュメントでは、 Databricksのサーバレスワークロードからの送信ネットワーク接続を制御するために、ネットワーク ポリシーを設定および管理する方法について説明します。
ネットワークポリシーを管理するための権限は、アカウント管理者に制限されています。 「Databricks 管理の概要」を参照してください。
新しいネットワーク ポリシーを作成する
[新しいネットワーク ポリシーの作成] をクリックします。
ネットワークアクセスモードを選択します。
フルアクセス:無制限のアウトバウンドインターネットアクセス。 [フル アクセス] を選択した場合、送信インターネット アクセスは制限されません。
制限付きアクセス: 送信アクセスは、指定された宛先に制限されます。 詳細については、「 ネットワーク ポリシーの概要」を参照してください。
ネットワークポリシーの設定
次の手順では、制限付きアクセスモードのオプション設定の概要を示します。
エグレスルール
Unity Catalog の場所または接続を使用して構成された宛先は、ポリシーによって自動的に許可されます。
サーバレス コンピュートに追加のドメインへのアクセス権を付与するには、[許可されたドメイン] リストの上にある [宛先の追加] をクリックします。
FQDN フィルターを使用すると、同じ IP アドレスを共有するすべてのドメインにアクセスできます。 エンドポイント全体でモデルサービング プロビジョニングは、ネットワーク アクセスが制限付きに設定されている場合、インターネット アクセスを防ぎます。 ただし、FQDN フィルタリングによるきめ細かな制御はサポートされていません。
ワークスペースが追加の S3 バケットにアクセスできるようにするには、 [許可されたストレージ アカウント] リストの上にある [宛先の追加] ボタンをクリックします。
注:
サポートされる宛先の最大数は 2000 です。 これには、ワークスペースからアクセス可能なすべての Unity Catalog の場所と接続、およびポリシーで明示的に追加された宛先が含まれます。
デフォルトポリシーを更新する
各 Databricks アカウントには 、デフォルト ポリシーが含まれています。 デフォルト・ポリシーは、明示的にネットワーク・ポリシーが割り当てられていないすべてのワークスペース(新しく作成されたワークスペースを含む)に関連付けられます。このポリシーは変更できますが、削除することはできません。 デフォルト ポリシーは、少なくとも Enterprise のワークスペースにのみ適用されます。
ネットワークポリシーをワークスペースに関連付ける
デフォルトのポリシーを追加の設定で更新した場合、既存のネットワークポリシーがないワークスペースにも自動的に適用されます。 ワークスペースはEnterpriseである必要があります。
ワークスペースを別のポリシーに関連付けるには、次の操作を行います。
ワークスペースを選択します。
[ネットワーク ポリシー] で、[ネットワーク ポリシーの更新] をクリックします。
リストから目的のネットワークポリシーを選択します。
ネットワーク ポリシーの変更を適用する
ほとんどのネットワーク設定の更新は、10 分以内にサーバレス コンピュートに自動的に反映されます。 これには以下が含まれます。
新しい Unity Catalog 外部ロケーションまたは接続を追加する。
ワークスペースを別のメタストアにアタッチする。
許可されたストレージまたはインターネットの宛先を変更します。
注:
インターネットアクセスまたはログオンリーモードの設定を変更する場合は、コンピュートを再起動する必要があります。
サーバレスワークロードの再起動または再デプロイ
インターネットアクセスモードを切り替えるとき、またはログ専用モードを更新するときのみ更新する必要があります。
適切な再始動手順を決定するには、以下の製品別リストを参照してください。
Databricks ML Serving: ML サービング エンドポイントを再デプロイします。 「カスタム モデルサービング エンドポイントを作成する」を参照してください。
Delta Live Tables: 実行中の Delta Live Tables パイプラインを停止してから再起動します。 「 Delta Live Tables パイプラインで更新を実行する」を参照してください。
サーバレス SQLウェアハウス: SQLウェアハウスを停止して再起動します。 「SQLウェアハウスの管理」を参照してください。
ワークフロー: ネットワーク ポリシーの変更は、新しいジョブの実行がトリガーされたとき、または既存のジョブの実行が再開されたときに自動的に適用されます。
ノートブック:
ノートブックが Sparkと対話しない場合は、新しいサーバレス クラスターを終了してアタッチし、ノートブックに適用されているネットワーク設定を更新できます。
ノートブックが Sparkと対話すると、サーバレス リソースが更新され、変更が自動的に検出されます。 アクセス モードとログ専用モードの切り替えは、適用されるまでに最大 24 時間かかる場合があり、その他の変更が適用されるには最大 10 分かかる場合があります。
ネットワーク ポリシーの適用を確認する
ネットワーク ポリシーが正しく適用されていることを確認するには、さまざまなサーバレス ワークロードから制限されたリソースへのアクセスを試みます。 検証プロセスは、サーバレス製品によって異なります。
Delta Live Tables での検証
Python ノートブックを作成します。 Delta Live Tables wikipedia Python チュートリアルで提供されているサンプル ノートブックを使用できます。
Delta Live Tables パイプラインを作成します。
ワークスペースのサイドバーで、データエンジニアリングの下にあるパイプラインをクリックします。
「パイプラインの作成」をクリックします。
次の設定でパイプラインを構成します。
パイプライン Mode: サーバレス
ソース コード: 作成したノートブックを選択します。
ストレージオプション: Unity Catalog。 目的のカタログとスキーマを選択します。
[作成] をクリックします。
Delta Live Tables パイプラインを実行します。
パイプライン ページで、[ 開始] をクリックします。
パイプラインが完了するまで待ちます。
結果を確認する
信頼できる宛先: パイプラインは正常に実行され、宛先にデータを書き込む必要があります。
信頼できない宛先: パイプラインは失敗し、ネットワーク アクセスがブロックされていることを示すエラーが表示されます。
Databricks SQL による検証
SQLウェアハウスを作成します。手順については、「SQLウェアハウスの作成」を参照してください。
SQL エディタでテストクエリを実行し、ネットワークポリシーによって制御されるリソースへのアクセスを試みます。
結果を確認します。
信頼できる宛先: クエリは成功する必要があります。
信頼できない宛先: クエリはネットワーク アクセス エラーで失敗します。
モデルサービングで検証
テストモデルの作成
Python ノートブックで、ファイルのダウンロードや API リクエストの作成など、公開インターネット リソースへのアクセスを試みるモデルを作成します。
このノートブックを実行して、テスト ワークスペースにモデルを生成します。 例えば:
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")
配信エンドポイントを作成する
ワークスペースのナビゲーションで、 [Machine Learning] を選択します。
「Serving」タブをクリックします。
[サービングエンドポイントの作成]をクリックします。
次の設定でエンドポイントを構成します。
Serving Endpoint Name: わかりやすい名前を指定します。
エンティティの詳細: [モデル レジストリ モデル] を選択します。
モデル: 前の手順で作成したモデルを選択します。
[確認]をクリックします。
サービス エンドポイントが [準備完了 ] 状態に達するまで待ちます。
エンドポイントをクエリします。
サービス エンドポイント ページ内の [クエリ エンドポイント ] オプションを使用して、テスト要求を送信します。
{"dataframe_records": [{"host": "https://www.google.com"}]}
結果を確認します。
インターネット アクセスが有効: クエリは成功します。
インターネット アクセス制限: クエリはネットワーク アクセス エラーで失敗します。
ネットワークポリシーを更新する
ネットワーク ポリシーは、作成後いつでも更新できます。 ネットワークポリシーを更新するには:
アカウントコンソールのネットワークポリシーの詳細ページで、ポリシーを変更します。
ネットワークアクセスモードを変更します。
特定のサービスのログ専用モードを有効または無効にします。
FQDN またはストレージの宛先を追加または削除します。
[更新] をクリックします。
「ネットワーク ポリシーの変更を適用する」を参照して、更新プログラムが既存のワークロードに適用されることを確認します。
拒否ログを確認する
拒否ログは、Unity Catalog の system.access.outbound_network
テーブルに格納されます。 これらのログは、送信ネットワーク要求が拒否されたタイミングを追跡します。 拒否ログにアクセスするには、Unity Catalog メタストアでアクセス スキーマが有効になっていることを確認します。 「システムテーブル スキーマの有効化」を参照してください。
次のような SQL クエリを使用して、拒否イベントを表示します。 ログのみのログが有効になっている場合、クエリは拒否ログとログのみのログの両方を返します。これらは access_type
列を使用して区別できます。 拒否ログには DROP 値がありますが、ログのみのログには LOG_ONLY_DENIAL が表示されます。
次の例では、過去 2 時間のログを取得します。
select * from system.access.outbound_network
where event_time >= current_timestamp() - interval 2 hour
sort by event_time desc
を使用して外部生成 モデルに接続する場合、ネットワークアウトバウンドシステムテーブルに拒否が記録されません。AIMosaic AI GatewayMosaic AI Gatewayを参照してください。
注:
アクセス時から拒否ログが表示されるまでの間に、多少の遅延が発生する場合があります。
制限事項
設定: この機能は、アカウントコンソールからのみ設定できます。 API のサポートはまだ利用できません。
アーティファクトのアップロードサイズ: MLflowの内部 Databricks Filesystem を
dbfs:/databricks/mlflow-tracking/<experiment_id>/<run_id>/artifacts/<artifactPath>
形式で使用する場合、アーティファクトのアップロードはlog_artifact
、log_artifacts
、およびlog_model
APIsで5GBに制限されます。サポートされている Unity Catalog 接続: サポートされている接続の種類は、 MySQL、 PostgreSQL、 Snowflake、 Redshift、 Azure Synapse、 SQL Server、Salesforce、 BigQuery、Netsuite、Workday RaaS、 Hive metastore、Salesforce Data Cloud です。
モデルサービング: モデルサービングのイメージを構築する場合、エグレスコントロールは適用されません。