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

如何用Azure Key Vault保护.NET7独立Azure Functions及本地授权疑问

问题解答

疑问1:本地开发无需API密钥即可调用Function级授权的函数

这是Azure Functions本地开发的默认豁免机制。使用Azure Functions Core Tools(本地运行时)时,为了方便开发调试,会自动跳过AuthorizationLevel.Function级别的授权验证。只有当你把函数部署到Azure云环境后,这个授权规则才会生效,调用方必须携带对应的API密钥才能触发函数。

你可以做个测试:把函数部署到Azure后,直接调用URL会返回401未授权,只有在请求头加上x-functions-key(或者查询参数加code),传递正确的API密钥才能成功触发。

疑问2:如何将授权API密钥指向Key Vault的特定密钥

首先要明确:你配置的AzureWebJobsSecretStorageType和AzureWebJobsSecretStorageKeyVaultUri是用来让Functions runtime把系统级机密(比如触发器连接字符串、函数内部配置的敏感值)存储到Key Vault,和Function级别的授权API密钥不是一回事。

要让Function的授权密钥从Key Vault获取,需要这么操作:

  • 先在你的Key Vault中创建一个机密,比如命名为FunctionAuthKey,把你想用做API授权密钥的字符串设为机密值
  • 部署到Azure云环境后,在函数应用的应用设置中添加一个配置项(比如FunctionApiKey),值填写Key Vault机密的引用格式:
    @Microsoft.KeyVault(SecretUri=https://<vaultURI>.vault.azure.net/secrets/FunctionAuthKey/)
    
  • 确保函数应用的托管身份(系统分配或用户分配)有Key Vault的机密读取权限
  • 云端运行时,函数会自动从Key Vault拉取这个密钥作为Function级授权的有效密钥,调用方需要在请求中携带这个密钥(请求头x-functions-key或查询参数code)才能触发函数

另外你补充的AzureWebJobsSecretStorageKeyVaultClientSecret是用来让Functions runtime访问Key Vault读取系统机密的身份凭证,和授权API密钥无关。本地开发时因为有授权豁免,所以即使配置了这些,也不会触发密钥验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 13:05:15