管理无服务器出口控制的网络策略
重要
此功能目前以公共预览版提供。
本文档介绍如何配置和管理网络策略,以控制 Azure Databricks 中无服务器工作负荷的出站网络连接。
管理网络策略的权限仅限于帐户管理员。请参阅 Azure Databricks 管理简介。
访问网络策略
若要在帐户中创建、查看和更新网络策略,请执行以下操作:
- 在帐户控制台中,单击“云资源”。
- 单击“网络”选项卡。
创建新的网络策略
单击 创建新网络策略。
选择网络访问模式:
- 完全访问权限:不受限制的出站互联网访问。 如果选择 “完全访问”,出站 Internet 访问将保持不受限制。
- 受限访问:出站访问仅限于指定的目标。 有关详细信息,请参阅 网络策略概述。
配置网络策略
以下步骤概述了受限访问模式的可选设置。
出口规则
策略会自动允许通过 Unity Catalog 位置或连接配置的目标。
若要授予对其他域的无服务器计算访问权限,请单击“允许的域”列表上方的“添加目标”。
FQDN 筛选器允许访问共享同一 IP 地址的所有域。 在将网络访问设置为受限时,通过端点进行的模型服务预配可防止互联网访问。 但是,无法通过 FQDN 过滤实现精细控制。
若要允许工作区访问其他 Azure 存储帐户,请单击“允许的 存储帐户”列表上方的“添加目标”按钮。
注意
支持的目的地数量上限为 2000。 这包括可从工作区访问的所有 Unity Catalog 位置和连接,以及策略中显式添加的目标。
策略强制执行
仅日志模式允许测试策略配置并监视出站连接,而不会中断对资源的访问。 启用干运行模式后,将记录违反策略但未阻止的请求。 您可以选择以下选项:
Databricks SQL:Databricks SQL 仓库在干运行模式下运行。
AI 模型服务:模型服务终结点在干运行模式下运行。
所有产品:所有 Azure Databricks 服务都以干运行模式运行,覆盖所有其他选择。
更新默认策略
每个 Azure Databricks 帐户都包含一个 默认策略。 默认策略 与没有显式网络策略分配的所有工作区(包括新创建的工作区)相关联。 可以修改此策略,但无法将其删除。 默认策略仅适用于至少具有高级层的工作区。
将网络策略关联到工作区
如果已使用其他配置更新了默认策略,它们将自动应用于没有现有网络策略的工作区。 工作区需要位于高级层中。
若要将工作区与其他策略相关联,请执行以下操作:
- 选择工作区。
- 在 网络策略中,单击 更新网络策略。
- 从列表中选择所需的网络策略。
应用网络策略更改
大多数网络配置更新会在十分钟内自动传播到无服务器计算。 这包括:
- 添加新的 Unity 目录外部位置或连接。
- 将工作区附加到其他元存储。
- 更改允许的存储或 Internet 目标。
注意
如果修改 Internet 访问或干运行模式设置,则必须重启计算。
重启或重新部署无服务器工作负荷
只需在切换 Internet 访问模式或更新试运行模式时更新。
若要确定适当的重启过程,请参阅以下按产品列出的列表:
- Databricks ML 服务:重新部署 ML 服务终结点。 请参阅创建自定义模型服务终结点
- 增量实时表:停止并重启正在运行的 Delta 实时表管道。 请参阅对增量实时表管道运行更新。
- 无服务器 SQL 仓库:停止并重启 SQL 仓库。 请参阅管理 SQL 仓库。
- 工作流:触发新作业运行或重新启动现有作业运行时,将自动应用网络策略更改。
- 笔记本:
- 如果笔记本不与 Spark 交互,可以终止并附加新的无服务器群集以刷新应用于笔记本的网络配置。
- 如果笔记本与 Spark 交互,则无服务器资源会刷新并自动检测更改。 切换访问模式和干运行模式最多可能需要 24 小时才能应用,其他更改最多可能需要 10 分钟才能应用。
验证网络策略强制实施
可以通过尝试从不同的无服务器工作负荷访问受限资源来验证网络策略是否正确强制实施。 验证过程因无服务器产品而异。
使用增量实时表进行验证
- 创建 Python 笔记本。 可以使用 Delta Live Tables 维基百科 python 教程中提供的示例笔记本。
- 创建增量实时表管道:
- 在工作区边栏中的“数据工程”下,单击“管道”。
- 单击“创建管道”。
- 使用以下设置配置管道:
- 管道模式:无服务器
- 源代码:选择创建的笔记本。
- 存储选项:Unity 目录。 选择所需的目录和架构。
- 单击 “创建” 。
- 运行 Delta Live Tables 管道。
- 在管道页中,单击“ 开始”。
- 等待管道完成。
- 验证结果
- 受信任的目标:管道应成功运行,并将数据写入目标。
- 不受信任的目标:管道应失败,并出现指示网络访问被阻止的错误。
使用 Databricks SQL 进行验证
- 创建 SQL 仓库。 有关说明,请参阅 创建 SQL 仓库。
- 在 SQL 编辑器中运行测试查询,该查询尝试访问由网络策略控制的资源。
- 验证结果:
- 受信任的目标:查询应成功。
- 不受信任的目标:查询应失败并出现网络访问错误。
使用模型服务进行验证
创建测试模型
- 在 Python 笔记本中,创建尝试访问公共 Internet 资源的模型,例如下载文件或发出 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")
创建服务终结点
- 在工作区导航中,选择机器学习。
- 单击“服务”选项卡。
- 单击“ 创建服务终结点”。
- 使用以下设置配置终结点:
- 提供终结点名称:提供描述性名称。
- 实体详细信息:选择 模型注册表模型。
- 模型:选择在上一步中创建的模型。
- 单击“确认” 。
- 等待服务终结点到达 就绪 状态。
查询终结点。
- 使用服务终结点页中的“查询终结点”选项发送测试请求。
{"dataframe_records": [{"host": "https://www.google.com"}]}
验证结果:
- 已启用 Internet 访问:查询应成功。
- Internet 访问受限:查询应失败并出现网络访问错误。
更新网络策略
可以在创建网络策略后随时更新它。 若要更新网络策略,请执行以下操作:
- 在帐户控制台中网络策略的详细信息页上,修改策略:
- 更改网络访问模式。
- 为特定服务启用或禁用干运行模式。
- 添加或删除 FQDN 或存储目标。
- 单击“更新”。
- 请参阅 应用网络策略更改,以验证更新是否应用于现有工作负荷。
检查拒绝日志
拒绝日志存储在 Unity 目录中的 system.access.outbound_network
表中。 这些日志跟踪出站网络请求被拒绝时间。 若要访问拒绝日志,请确保在 Unity 目录元存储上启用访问架构。 请参阅启用系统表架构。
使用如下所示的 SQL 查询查看拒绝事件。 如果启用了干运行日志,查询将返回拒绝日志和干运行日志,可以使用 access_type
列进行区分。 拒绝日志显示 DROP 值,而试运行日志显示 DRY_RUN_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 模型时,不会在网络出站系统表中记录拒绝。 请参阅 Mosaic AI Gateway。
注意
访问时间与出现拒绝日志的时间之间可能存在一些延迟。
限制
配置:此功能只能通过帐户控制台进行配置。 API 支持尚不可用。
项目上传大小:使用具有
dbfs:/databricks/mlflow-tracking/<experiment_id>/<run_id>/artifacts/<artifactPath>
格式的 MLflow 的内部 Databricks 文件系统时,项目上传限制为 5GB,用于log_artifact
、log_artifacts
和log_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 驱动程序进行访问。