管理無伺服器輸出控制的網路原則
重要
這項功能處於公開預覽狀態。
本文件說明如何設定和管理網路原則,以控制 Azure Databricks 中無伺服器工作負載的輸出網路 connections。
管理網路原則的許可權僅限於帳戶管理員。請參閱 Azure Databricks 系統管理簡介。
存取網路原則
若要在您的帳戶中建立、檢視和 update 網路原則:
- 從帳戶控制台中,按兩下 [雲端資源]。
- 按一下網路標籤。
建立新的網路原則
按一下 [建立新的網路原則]。
選擇網路存取模式:
- 全域存取:不受限制的出站網際網路存取。 如果您選擇 [完整存取],輸出因特網存取仍不受限制。
- 限制存取:輸出存取僅限於指定的目的地。 如需詳細資訊,請參閱 網路原則概觀。
設定網路原則
下列步驟概述限制存取模式的選擇性設定。
輸出規則
透過 Unity Catalog 位置或 connections 設定的目的地會自動獲得原則允許。
若要將無伺服器計算存取
至其他網域,請按兩下 [ 在允許的網域 。上方新增目的地 FQDN 篩選器允許存取共用相同 IP 位址的所有網域。 當網路存取受到 set 限制時,配置於端點的模型服務可防止連接至因特網。 不過,不支援使用 FQDN 篩選進行細微的控制。
若要允許工作區存取其他 Azure 記憶體帳戶,請按下 [允許的記憶體帳戶] 上方的 [[新增目的地] 按鈕,list。
注意
支援的目的地數目上限為 2000。 這包括從工作區可存取的所有 Unity Catalog 位置和 connections,以及策略中明確新增的目的地。
政策執行
僅記錄模式可讓您測試原則設定,並監視輸出 connections,且不會中斷資源存取。 啟用僅限記錄模式時,會記錄違反原則但未封鎖的要求。 您可以select從下列選項中選擇:
Databricks SQL:Databricks SQL 倉儲會以僅限記錄模式運作。
AI 模型服務:模型服務端點以僅記錄模式運行。
所有產品:所有 Azure Databricks 服務都會以僅記錄模式運作,並覆寫所有其他選項。
Update 默認原則
每個 Azure Databricks 帳戶都包含 預設原則。 默認原則 與沒有明確網路原則指派的所有工作區相關聯,包括新建立的工作區。 您可以修改此原則,但無法刪除。 默認原則只會套用至至少具有 Premium 的工作區。
將網路原則與工作區產生關聯
如果您已使用其他設定來更新默認原則,它們會自動套用至沒有現有網路原則的工作區。 您的工作區必須位於 Premium 中。
若要將工作區與不同的原則產生關聯,請執行下列動作:
- Select 工作區。
- 在 網路原則中,按一下 [Update 網路原則]。
- 從 listSelect 所需的網路原則。
套用網路原則變更
大部分的網路組態更新通常在十分鐘內自動傳遞到您的無伺服器計算服務。 這包括:
- 新增一個新的 Unity Catalog 外部位置或連接。
- 將工作區附加至不同的中繼存放區。
- 變更允許的記憶體或因特網目的地。
注意
如果您修改因特網存取或僅限記錄模式設定,則必須重新啟動計算。
重新啟動或重新部署無伺服器工作負載
切換網路存取模式或更新僅限記錄模式時,您只需要 update。
若要判斷適當的重新啟動程序,請參閱下列依產品類別 list:
- Databricks ML 服務:重新部署您的 ML 服務端點。 請參閱建立自訂模型服務端點
- Delta Live Tables:停止,然後重新啟動執行中的 Delta Live Tables 管線。 請參閱 在 Delta Live Tables 管線上執行 update。
- 無伺服器 SQL 倉儲:停止並重新啟動 SQL 倉儲。 請參閱管理 SQL 倉儲。
- 工作流程:當觸發新的作業執行或重新啟動現有的作業執行時,會自動套用網路原則變更。
-
筆記本:
- 如果您的筆記本未與 Spark 互動,您可以終止並附加新的無伺服器叢集,以 refresh 套用至筆記本的網路組態。
- 如果您的筆記本與 Spark 互動,則無伺服器資源會重新整理並自動偵測變更。 切換存取模式和僅限記錄模式最多可能需要 24 小時才能套用,而其他變更最多可能需要 10 分鐘才能套用。
確認網路原則強制執行
您可以嘗試從不同的無伺服器工作負載存取受限制的資源,以驗證您的網路原則是否已正確強制執行。 驗證程式會根據無伺服器產品而有所不同。
使用 Delta Live Tables 進行驗證
- 建立 Python 筆記本。 您可以使用 Delta Live Tables wikipedia python 教學課程中提供的範例筆記本。
- 建立 Delta Live Tables 管線:
- 在工作區側邊欄的 [數據工程] 底下,按一下 [Pipelines]。
- 按兩下 [ 建立管線]。
- 使用下列設定來設定管線:
- 管線模式:無伺服器
- 原始程式碼:Select 您建立的筆記本。
- 記憶體選項:Unity Catalog。 Select 您要的 catalog 和 schema。
- 按一下 [建立]。
- 執行 Delta Live Tables 管線。
- 在管線頁面中,按兩下 [ 開始]。
- 等候管線完成。
- 確認結果
- 信任的目的地:管線應該會順利執行,並將數據寫入目的地。
- 不受信任的目的地:管線應該會失敗,並出現指出網路存取遭到封鎖的錯誤。
使用 Databricks SQL 進行驗證
- 建立 SQL 倉儲。 如需指示,請參閱 建立 SQL 倉儲。
- 在 SQL 編輯器中執行測試查詢,以嘗試存取由網路原則控制的資源。
- 確認結果:
- 信任的目的地:查詢應該會成功。
- 不受信任的目的地:查詢應該會失敗,並出現網路存取錯誤。
使用模型服務進行驗證
建立測試模型
- 在 Python 筆記本中,建立嘗試存取公用因特網資源的模型,例如下載檔案或提出 API 要求。
- 執行此筆記本以 generate 測試工作區中的模型。 例如:
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")
建立服務端點
- 在工作區導覽中,select機器學習。
- 按兩下 [ 服務] 索引標籤。
- 按兩下 [ 建立服務端點]。
- 使用下列設定來設定端點:
- 提供端點名稱:提供描述性名稱。
- 實體詳細資料:Select模型登錄模型。
- 模型:選擇您在上一個步驟中建立的模型。
- 按一下 [確認]。
- 等候服務端點到達 [就緒 ] 狀態。
查詢端點。
- 使用服務端點頁面中的 [ 查詢端點] 選項來傳送測試要求。
{"dataframe_records": [{"host": "https://www.google.com"}]}
確認結果:
- 已啟用因特網存取:查詢應該會成功。
- 因特網存取受限:查詢應該會失敗,並出現網路存取錯誤。
Update 網路策略
您可以在建立網路原則後隨時進行 update 操作。 要實施 update 網路策略:
- 在帳戶控制台中網路原則的詳細數據頁面上,修改原則:
- 變更網路存取模式。
- 為特定服務啟用或停用僅記錄模式。
- 新增或 remove FQDN 或儲存目的地。
- 按一下 [Update]。
- 請參閱 套用網路原則變更,以確認更新已套用至現有的工作負載。
檢查拒絕記錄
拒絕記錄會儲存在 Unity Catalog中的 system.access.outbound_network
table 中。 這些記錄會追蹤輸出網路要求遭到拒絕的時機。 若要存取拒絕記錄,請確定在 Unity Catalog 中繼存放區上已啟用存取 schema。 請參閱 啟用系統 table 架構。
使用如下的 SQL 查詢來檢視拒絕事件。 如果啟用僅限記錄檔,查詢會傳回拒絕記錄和僅限記錄檔,您可以使用 access_type
column來區別。 拒絕記錄具有 DROP 值,而僅限記錄顯示 LOG_ONLY_DENIAL。
下列範例會從過去 2 小時擷取記錄:
select * from system.access.outbound_network
where event_time >= current_timestamp() - interval 2 hour
sort by event_time desc
使用 Mosaic AI Gateway 連接外部生成 AI 模型時,拒絕不會記錄在網路輸出系統 table。 請參閱 馬賽克 AI 閘道。
注意
存取時間與拒絕記錄出現的時間之間可能會有一些延遲。
局限性
組態:此功能只能透過帳戶主控台進行設定。 尚未提供 API 支援。
成品上傳大小:使用 MLflow 的內部 Databricks 文件系統搭配
dbfs:/databricks/mlflow-tracking/<experiment_id>/<run_id>/artifacts/<artifactPath>
格式時,成品上傳限制為 5GB,適用於log_artifact
、log_artifacts
和log_model
API。支援的 Unity Catalogconnections:支援下列連線類型:支援 MySQL、PostgreSQL、Snowflake、Redshift、Azure Synapse、SQL Server、Salesforce、BigQuery、Netsuite、Workday RaaS、Hive MetaStore 和 Salesforce Data Cloud。
模型服務:建置模型服務的影像時,不會套用輸出控件。
Azure 記憶體存取:僅支援適用於 Azure Data Lake Storage 的 Azure Blob 檔案系統驅動程式。 不支援使用 Azure Blob 記憶體驅動程式或 WASB 驅動程式進行存取。