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

如何使用用户分配的托管标识为Azure Function App配置Key Vault访问

修改方案

你只需要调整DefaultAzureCredential的初始化参数,指定提前创建好的用户分配托管标识的客户端ID即可,具体操作如下:

前置准备

  • 在Azure门户创建用户分配托管标识,为其授予Key Vault的对应访问权限(一般分配机密读取权限即可满足配置读取需求)
  • 将该用户分配托管标识绑定到你的函数应用所有需要访问Key Vault的部署槽位
  • 在函数应用的应用配置(或项目的appsettings.json)中新增配置项UserAssignedManagedIdentityClientId,值为你创建的用户分配托管标识的客户端ID

代码修改

仅需要调整ConfigureAppConfiguration方法中Key Vault相关的初始化逻辑,给DefaultAzureCredential传入指定了托管标识ID的参数即可,修改后完整代码如下:

using Azure.Identity;
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.Extensions.Configuration;
using System.IO;
using Core.Utility;

[assembly: FunctionsStartup(typeof(MyJob.Startup))]
namespace MyJob
{
    class Startup : FunctionsStartup
    {
        private IConfiguration _configuration;

        public override void Configure(IFunctionsHostBuilder builder)
        {
            // 此处继续配置你的其他服务
        }

        public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder)
        {
            var context = builder.GetContext();
            var configurationBuilder = builder.ConfigurationBuilder;
            configurationBuilder.AddJsonFile(Path.Combine(context.ApplicationRootPath, "appsettings.json"), true, false)
                .AddEnvironmentVariables();

            // 添加Key Vault配置
            var configuration = configurationBuilder.Build();
            // 指定用户分配托管标识的客户端ID
            var credentialOptions = new DefaultAzureCredentialOptions
            {
                ManagedIdentityClientId = configuration["UserAssignedManagedIdentityClientId"]
            };
            configurationBuilder.AddAzureKeyVault(
                KeyVaultSecrets.MakeKvUri(configuration["KeyVaultName"]),
                new DefaultAzureCredential(credentialOptions)
            );
            _configuration = configurationBuilder.Build();
        }
    }
}

额外说明

  • 本地开发调试时,DefaultAzureCredential会自动匹配你本地IDE、Azure CLI等工具登录的Azure账号,只要该账号拥有Key Vault的访问权限,无需额外修改代码即可正常调试
  • 部署到Azure环境后,运行时会自动使用你指定的用户分配托管身份访问Key Vault,新增函数或部署槽位时仅需绑定同一个用户分配托管标识即可,无需重复授权Key Vault访问权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:48:03