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