如何将Azure Key Vault密钥值直接关联至Azure App Service环境变量
Azure App Service 直接引用Key Vault密钥作为环境变量的原生配置方案
先排查现有配置的常见问题
- 托管标识权限:必须给App Service的托管标识分配Key Vault Secrets User角色(或自定义权限包含
secrets/get),且权限作用范围是目标Key Vault,避免用订阅/资源组级别的权限导致继承问题 - Secret URI正确性:确认URI完整,若指定版本需包含版本路径(如
https://xxx.vault.azure.net/secrets/encryption-key/xxxxxxxxxxxx);不指定版本的话,要确保密钥处于启用状态 - 托管标识状态:检查App Service的系统分配托管标识是否已开启,且该标识已被添加到Key Vault的访问策略中
正确配置步骤(原生无代码方案)
确认Key Vault访问策略
- 进入目标Key Vault → 访问策略 → 添加访问策略
- 机密权限勾选获取,主体选择你的App Service名称(系统分配托管标识名称与App Service一致)
- 保存策略配置
配置App Service应用设置
- 进入App Service → 配置 → 应用程序设置
- 新建应用设置:
- 名称:填写你的环境变量名(如
EncryptionKey) - 值:使用格式
@Microsoft.KeyVault(SecretUri=https://<你的Key Vault名称>.vault.azure.net/secrets/<密钥名称>)- 示例:
@Microsoft.KeyVault(SecretUri=https://my-keyvault.vault.azure.net/secrets/encryption-key) - 若密钥有版本,追加版本路径:
@Microsoft.KeyVault(SecretUri=https://my-keyvault.vault.azure.net/secrets/encryption-key/abc123xyz)
- 示例:
- 名称:填写你的环境变量名(如
- 按需勾选部署槽位设置,点击确定后保存配置,App Service会自动重启加载
验证配置生效
- 通过App Service控制台验证:Windows环境执行
echo %EncryptionKey%,Linux环境执行echo $EncryptionKey,查看是否输出密钥值 - 或通过Kudu高级工具 → 环境变量页面,检查对应变量是否已正确解析
- 通过App Service控制台验证:Windows环境执行
额外注意事项
- URI中不要包含多余字符(如引号、空格)
- 若使用用户分配托管标识,需在值中指定标识Client ID,格式为:
@Microsoft.KeyVault(SecretUri=https://xxx.vault.azure.net/secrets/xxx;IdentityClientId=<用户分配标识的Client ID>) - 确保Key Vault与App Service同属一个Azure租户;若Key Vault启用防火墙,需允许App Service所在虚拟网络或Azure服务标签访问
内容的提问来源于stack exchange,提问作者bouthayna hamdi
相关产品推荐
相关产品推荐

