You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在评分脚本中获取AzureML Workspace引用且不暴露凭据

报错根因说明

你看到的ScoreInitRestart报错只是表面现象,实际是init函数执行时Azure ML SDK默认触发了交互式设备登录流程,无交互环境下登录流程卡住超时,导致init函数不断重启触发报错。
注意:不要在部署的评分脚本中使用Workspace.from_config()方法,该方法仅适配本地开发场景,部署环境下会触发默认的交互式登录逻辑。

无凭据泄露的解决方案

优先推荐:完全避免在评分脚本中调用Workspace接口

部署在线端点时直接将需要用到的已注册数据集作为挂载参数传入,推理容器会直接把数据集映射到本地路径,评分脚本不需要再做身份认证拉取数据:

# 部署侧代码示例
from azureml.core import Model, Dataset, AciWebservice

dataset = Dataset.get_by_name(workspace=ws, name="你的数据集名")
deploy_config = AciWebservice.deploy_configuration(cpu_cores=1, memory_gb=2)
# 通过datasets参数挂载数据集,容器内默认路径为/datasets/对应数据集名
service = Model.deploy(
    workspace=ws,
    name="推理服务名",
    models=[model],
    inference_config=inference_config,
    deployment_config=deploy_config,
    datasets=[dataset.as_mount()]
)

# 评分脚本init()中直接读挂载路径即可,不需要连接Workspace
def init():
    global data_path
    data_path = "/datasets/你的数据集名"

若必须在init中操作Workspace资源:使用托管标识

不需要硬编码服务主体的任何敏感凭据,由Azure自动管理身份凭证:

  1. 给你的在线端点配置系统分配/用户分配托管标识,在Azure门户的端点「标识」页开启即可,随后给该托管标识分配Azure ML工作区的对应访问权限(如数据集读取权限、工作区读取权限)
  2. 评分脚本中使用DefaultAzureCredential自动获取托管标识凭证:
from azureml.core import Workspace
from azure.identity import DefaultAzureCredential

def init():
    global ws
    # 不需要传入任何凭据参数,自动读取当前环境的托管标识
    ws = Workspace(
        subscription_id="你的订阅ID",
        resource_group_name="你的资源组名",
        workspace_name="你的工作区名",
        auth=DefaultAzureCredential()
    )

内容的提问来源于stack exchange,提问作者Anirban Saha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 22:54:09