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

如何向Azure Machine Learning推理服务器提供访问密钥?

首先明确两个常见误区:

  1. 用于训练阶段的密钥传递方案仅适用于模型训练、管道执行等存在作业运行上下文的场景,推理服务属于独立运行的长驻Web服务,没有对应的训练Run上下文,因此调用Run.get_context()返回离线实例属于预期行为。
  2. 直接在环境变量定义中明文写入密钥的方式风险极高:密钥会明文出现在代码、环境定义、镜像构建记录中,极易发生泄露,完全不推荐。
最优方案:Azure密钥保管库(AKV) + 托管身份

这是安全等级最高、推荐度最高的方案,操作流程如下:

  • 为你的AML推理端点分配托管身份(可选择系统分配托管身份,或预先创建的用户分配托管身份)
  • 前往你存储数据库密码的AKV,为上述托管身份授予机密读取权限,遵循最小权限原则,不要分配额外的写入、删除等权限
  • 在推理服务的入口代码(通常是score.py)中引入对应的身份验证和密钥保管库SDK,直接通过托管身份拉取密钥,无需在代码、环境配置中写入任何明文凭据,示例代码如下:
from azure.identity import DefaultAzureCredential
from azure.keyvault.secrets import SecretClient

# 初始化客户端,托管身份会自动完成身份验证,无需手动传入凭据
credential = DefaultAzureCredential()
secret_client = SecretClient(vault_url="https://<你的AKV名称>.vault.azure.cn/", credential=credential)
db_password = secret_client.get_secret("<你的数据库密钥在AKV中的名称>").value

这种方式的优势是密钥全程只存在于AKV和推理服务的运行内存中,不会在任何配置、日志、镜像文件里泄露,同时你可以在AKV中随时轮换密钥,无需重新部署推理服务。

次选方案:AML安全环境变量

如果你需要更简单的实现方式,可以使用AML内置的安全环境变量功能,不要直接在代码里明文写入密钥,操作如下:

  • 首先将密钥存储在和你AML工作区关联的AKV中
  • 部署推理服务时,通过AML的部署配置指定安全环境变量,引用AKV中的密钥,这类环境变量不会在AML的任何配置、日志接口中明文返回,仅在推理服务运行时注入到容器环境中
    示例代码如下:
from azure.ai.ml.entities import Environment

env = Environment.from_pip_requirements(env_name, "requirements-azure.txt")
env.environment_variables = {
    "DB_PASSWORD": "{{azureml:<你的密钥在AML工作区中的密钥名称>}}"
}

这种方式实现更简单,安全等级略低于第一种方案,适合对安全要求不是极高的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:45:04