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

从AppService访问禁用公网的Azure Key Vault报错,求无需专用网络的解决方法

问题分析与解决方案

错误根源

你碰到的ArgumentException: Keyword not supported: '@microsoft.keyvault(secreturi'错误,和Key Vault的网络配置无关,核心是你的应用没有配置Key Vault配置提供者,导致应用框架无法识别@microsoft.keyvault(secreturi=...)这类引用语法。

无需专用网络的可行方案

你当前的配置(托管标识、Key Vault权限、信任Microsoft服务绕过防火墙)本身已经满足AppService访问禁用公网的Key Vault的条件,只需补充以下配置:

1. 配置Key Vault配置提供者(以.NET应用为例)

在应用的启动代码中添加Key Vault作为配置源,让框架能解析密钥引用:

var builder = WebApplication.CreateBuilder(args);

// 引入Key Vault配置,使用托管标识认证
var keyVaultUrl = new Uri("https://你的密钥保管库名称.vault.azure.net/");
builder.Configuration.AddAzureKeyVault(keyVaultUrl, new DefaultAzureCredential());

// 后续应用构建逻辑
var app = builder.Build();

需要先安装两个NuGet包:

  • Azure.Extensions.AspNetCore.Configuration.Secrets
  • Azure.Identity

2. 检查应用设置的引用格式

确保AppService应用设置中,Key Vault密钥的引用格式正确:
正确格式:@Microsoft.KeyVault(SecretUri=https://<密钥保管库名称>.vault.azure.net/secrets/<密钥名称>/<可选版本>)
注意:Microsoft和KeyVault的首字母必须大写,拼写错误会导致识别失败。

3. 确认权限与信任规则

虽然你已完成相关配置,但可以再做一次验证:

  • 检查Key Vault访问策略,确认托管标识已被授予机密读取权限
  • 确认Key Vault防火墙设置中“允许受信任的Microsoft服务绕过此防火墙”已勾选(Azure App Service属于信任列表,无需额外配置)

快速验证网络与权限

如果想确认网络和权限是否正常,可以通过AppService的Kudu工具测试:

  1. 进入AppService的“高级工具”,启动Kudu
  2. 打开PowerShell终端,执行以下命令:
# 获取托管标识的访问令牌
$token = Invoke-RestMethod -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net' -Headers @{Metadata="true"}

# 请求Key Vault获取密钥
Invoke-RestMethod -Uri 'https://<你的密钥保管库名称>.vault.azure.net/secrets/<密钥名称>?api-version=2016-10-01' -Headers @{Authorization="Bearer $($token.access_token)"}

如果能成功返回密钥数据,说明网络和权限配置没问题,问题完全在应用的配置提供者未设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 13:12:45