【发布时间】:2022-01-12 13:38:05
【问题描述】:
我们有一个 Web api(.NET 5),可以从 Azure KeyVault 访问一些机密。
在用于开发的本地机器中,由于我是新创建的保管库的所有者,因此我的电子邮件具有访问密钥保管库的权限。
因此我通过 VS -->Tools> Options-->Azure Service Authentication-->Account Selection--> "myemail@.com" 选择了我的帐户
我有以下代码从 Keyvault 获取机密并通过配置进行访问,就像我们访问 appsettings 值一样。
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((context, config) =>
{
var appSettings = config.Build();
var credentialOptions = new DefaultAzureCredentialOptions();
var credential = new DefaultAzureCredential(credentialOptions);
config.AddAzureKeyVault(new Uri(appSettings["Url:KeyVault"]), credential);
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
我们在服务层和控制器层访问像_configuration["secret"]这样的秘密值。
我的查询是
1,如果我将此代码部署到本地服务器,它将如何工作(开发环境是本地服务器)?
2,如果我将此 Web API 部署到 Azure,如何在不更改任何代码的情况下使用身份 AD App 访问密钥库。我们已注册 AD 应用程序,该应用程序具有对该特定 Vault 的读取权限。
我希望代码能够无缝地用于本地和 Azure。
【问题讨论】:
标签: .net-5 azure-keyvault azure-managed-identity defaultazurecredential