AzureML中无需Python脚本,如何用Key Vault密钥填充环境变量?
在AzureML管道的CommandStep中直接从Key Vault注入环境变量(无需Python脚本)
完全可以不用Python脚本做中间层,直接通过AzureML的原生配置实现Key Vault密钥到环境变量的映射,步骤如下:
前提准备
- 你的AzureML工作区已关联对应的Key Vault(新建工作区时默认会创建并关联,若未关联需手动绑定)
- 你拥有Key Vault的
Secrets User权限,且运行CommandStep的计算目标(如计算集群)也被授予了Key Vault的Secrets User角色(通过Azure门户的IAM配置)
具体实现
在定义CommandStep时,直接在environment_variables参数中使用Key Vault的引用格式,AzureML会自动在运行时拉取密钥并注入为环境变量:
示例代码
from azureml.pipeline.steps import CommandStep from azureml.core import Workspace ws = Workspace.from_config() # 定义CommandStep,直接引用Key Vault密钥作为环境变量 command_step = CommandStep( name="run_cli_app", command="your-cli-app --param1 ${{env.CREDENTIAL}}", # 命令行应用读取环境变量 environment_variables={ # 格式1:通过密钥URI引用(推荐,避免同名密钥冲突) "CREDENTIAL": "@Microsoft.KeyVault(SecretUri=https://your-vault-name.vault.azure.net/secrets/your-secret-name/)", # 格式2:通过密钥库名称+密钥名称引用 # "CREDENTIAL": "@Microsoft.KeyVault(VaultName=your-vault-name;SecretName=your-secret-name)" }, compute_target=ws.compute_targets["your-compute-cluster"], workspace=ws )
关键说明
- 命令行应用中直接通过环境变量名(比如
CREDENTIAL)读取即可,无需额外处理 - AzureML会自动处理密钥的拉取和注入,全程不需要Python脚本介入
- 确保计算目标的身份(如系统分配的托管身份)拥有Key Vault的密钥读取权限,否则会出现权限错误
内容的提问来源于stack exchange,提问作者tobycoleman
相关产品推荐
相关产品推荐

