閱讀英文

共用方式為


管理無伺服器輸出控制的網路原則

重要

這項功能處於公開預覽狀態

本文件說明如何設定和管理網路原則,以控制 Azure Databricks 中無伺服器工作負載的輸出網路連線。

管理網路原則的許可權僅限於帳戶管理員。請參閱 Azure Databricks 系統管理簡介

存取網路原則

若要在您的帳戶中建立、檢視及更新網路原則:

  1. 從帳戶控制台中,按兩下 [雲端資源]。
  2. 按一下網路標籤。

網路原則清單。

建立新的網路原則

  1. 按一下 [建立新的網路原則]。

  2. 選擇網路存取模式:

    • 全域存取:不受限制的出站網際網路存取。 如果您選擇 [完整存取],輸出因特網存取仍不受限制。
    • 限制存取:輸出存取僅限於指定的目的地。 如需詳細資訊,請參閱 網路原則概觀

    網路原則詳細數據。

設定網路原則

下列步驟概述限制存取模式的選擇性設定。

輸出規則

原則會自動允許透過 Unity Catalog 位置或連線設定的目的地。

  1. 若要將無伺服器計算存取權授與其他網域,請按兩下 [[允許的 網域] 清單上方的 [新增目的地]。

    新增因特網目的地。

    FQDN 篩選器允許存取共用相同 IP 位址的所有網域。 當網路存取設定為受限制時,整個端點布建的模型會防止因特網存取。 不過,不支援使用 FQDN 篩選進行細微的控制。

  2. 若要允許工作區存取其他 Azure 儲存體帳戶,請按 [允許的儲存體帳戶] 清單 上方的 [新增目的地] 按鈕。

    新增記憶體目的地。

    注意

    支援的目的地數目上限為 2000。 這包括可從工作區存取的所有 Unity 目錄位置和連線,以及原則中明確新增的目的地。

政策執行

僅限記錄模式可讓您測試原則設定,並監視輸出連線,而不會中斷資源的存取。 啟用僅限記錄模式時,會記錄違反原則但未封鎖的要求。 您可以從下列選項中選取:

  1. Databricks SQL:Databricks SQL 倉儲會以僅限記錄模式運作。

  2. AI 模型服務:模型服務端點以僅記錄模式運行。

  3. 所有產品:所有 Azure Databricks 服務都會以僅記錄模式運作,並覆寫所有其他選項。

    新增記憶體目的地。

更新默認原則

每個 Azure Databricks 帳戶都包含 預設原則默認原則 與沒有明確網路原則指派的所有工作區相關聯,包括新建立的工作區。 您可以修改此原則,但無法刪除。 默認原則只會套用至至少具有 Premium 的工作區。

將網路原則與工作區產生關聯

如果您已使用其他設定來更新默認原則,它們會自動套用至沒有現有網路原則的工作區。 您的工作區必須位於 Premium 中。

若要將工作區與不同的原則產生關聯,請執行下列動作:

  1. 選取工作區。
  2. 在 [網络原則]中,按兩下 [更新網络原則]
  3. 從清單中選取所需的網路原則。

更新網路原則。

套用網路原則變更

大部分的網路組態更新通常在十分鐘內自動傳遞到您的無伺服器計算服務。 這包括:

  • 新增 Unity Catalog 的外部位置或連線。
  • 將工作區附加至不同的中繼存放區。
  • 變更允許的記憶體或因特網目的地。

注意

如果您修改因特網存取或僅限記錄模式設定,則必須重新啟動計算。

重新啟動或重新部署無伺服器工作負載

您只需要在切換因特網存取模式或更新僅限記錄模式時更新。

若要判斷適合的重新啟動程序,請參閱依產品分類的下列清單:

  • Databricks ML 服務:重新部署您的 ML 服務端點。 請參閱建立自訂模型服務端點
  • Delta Live Tables:停止並重新啟動執行中的 Delta Live Tables 管線。 請參閱 在 Delta Live Tables 管線上執行更新
  • 無伺服器 SQL 倉儲:停止並重新啟動 SQL 倉儲。 請參閱管理 SQL 倉儲
  • 工作流程:當觸發新的作業執行或重新啟動現有的作業執行時,會自動套用網路原則變更。
  • 筆記本:
    • 如果您的筆記本未與 Spark 互動,您可以終止並連結新的無伺服器叢集,以重新整理套用至筆記本的網路設定。
    • 如果您的筆記本與 Spark 互動,則無伺服器資源會重新整理並自動偵測變更。 切換存取模式和僅限記錄模式最多可能需要 24 小時才能套用,而其他變更最多可能需要 10 分鐘才能套用。

確認網路原則強制執行

您可以嘗試從不同的無伺服器工作負載存取受限制的資源,以驗證您的網路原則是否已正確強制執行。 驗證程式會根據無伺服器產品而有所不同。

使用 Delta Live Tables 進行驗證

  1. 建立 Python 筆記本。 您可以使用 Delta Live Tables wikipedia python 教學課程中提供的範例筆記本。
  2. 建立 Delta Live Tables 工作流程:
    1. 在工作區側邊欄的 [數據工程] 底下,按一下 [Pipelines]。
    2. 按兩下 [ 建立管線]。
    3. 使用下列設定來設定管線:
      • 管線模式:無伺服器
      • 原始程式碼:選取您建立的筆記本。
      • 記憶體選項:Unity 目錄。 選取您想要的目錄和架構。
    4. 按一下 [建立]。
  3. 執行 Delta Live Tables 管道。
  4. 在管線頁面中,按兩下 [ 開始]。
  5. 等候管線完成。
  6. 確認結果
    • 信任的目的地:管線應該會順利執行,並將數據寫入目的地。
    • 不受信任的目的地:管線應該會失敗,並出現指出網路存取遭到封鎖的錯誤。

使用 Databricks SQL 進行驗證

  1. 建立 SQL 倉儲。 如需指示,請參閱 建立 SQL 倉儲
  2. 在 SQL 編輯器中執行測試查詢,以嘗試存取由網路原則控制的資源。
  3. 確認結果:
    • 信任的目的地:查詢應該會成功。
    • 不受信任的目的地:查詢應該會失敗,並出現網路存取錯誤。

使用模型服務進行驗證

  1. 建立測試模型

    1. 在 Python 筆記本中,建立嘗試存取公用因特網資源的模型,例如下載檔案或提出 API 要求。
    2. 執行此筆記本以在測試工作區中產生模型。 例如:
    
    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. 在工作區導覽中,選取 Machine Learning
    2. 按兩下 [ 服務] 索引標籤。
    3. 按兩下 [ 建立服務端點]。
    4. 使用下列設定來設定端點:
      • 提供端點名稱:提供描述性名稱。
      • 實體詳細資料:選取 模型登錄模型
      • 模型:選擇您在上一個步驟中建立的模型。
    5. 按一下 [確認]
    6. 等候服務端點到達 [就緒 ] 狀態。
  3. 查詢端點。

    1. 使用服務端點頁面中的 [ 查詢端點] 選項來傳送測試要求。
    {"dataframe_records": [{"host": "https://www.google.com"}]}
    
  4. 確認結果:

    • 已啟用因特網存取:查詢應該會成功。
    • 因特網存取受限:查詢應該會失敗,並出現網路存取錯誤。

更新網路原則

建立網路政策之後即可隨時更新。 若要更新網路原則:

  1. 在帳戶控制台中網路原則的詳細數據頁面上,修改原則:
    • 變更網路存取模式。
    • 為特定服務啟用或停用僅記錄模式。
    • 新增或移除 FQDN 或記憶體目的地。
  2. 點選 「更新」
  3. 請參閱 套用網路原則變更,以確認更新已套用至現有的工作負載。

檢查拒絕記錄

拒絕記錄會儲存在 Unity 目錄 system.access.outbound_network 資料表中。 這些記錄會追蹤輸出網路要求遭到拒絕的時機。 若要存取拒絕記錄,請確定 Unity 目錄中繼存放區上已啟用存取架構。 請參閱 啟用系統資料表架構

使用如下的 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

當使用 Mosaic AI 網關連接至外部生成型 AI 模型時,拒絕不會記錄在網路輸出系統表中。 請參閱 馬賽克 AI 閘道

注意

存取時間與拒絕記錄出現的時間之間可能會有一些延遲。

局限性

  • 組態:此功能只能透過帳戶主控台進行設定。 尚未提供 API 支援。

  • 成品上傳大小:使用 MLflow 的內部 Databricks 文件系統搭配 dbfs:/databricks/mlflow-tracking/<experiment_id>/<run_id>/artifacts/<artifactPath> 格式時,成品上傳限制為 5GB,適用於 log_artifactlog_artifactslog_model API。

  • 支援的 Unity 目錄連線:支援下列連線類型: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 驅動程式進行存取。