gpt4 book ai didi

c# - 使用 KeyVault secret 覆盖 Azure 应用服务和本地中的应用程序设置

转载 作者:行者123 更新时间:2023-12-02 05:56:37 24 4
gpt4 key购买 nike

尝试从 C# 应用服务中的 KeyVault 检索 secret 。

本地计算机:

  • Visual Studio > 工具 > 选项 > Azure 服务身份验证 - 经过身份验证的 Azure 帐户

  • 如果在 vs code 等上,可能会在 dotnet run 的 shell 中使用 az login。未选中。

azure

  • 应用服务 Blade :
    • 将应用服务身份设置为系统分配
  • KeyVault Blade :
    • 已创建 KeyVault
    • 已创建 secret :Name =“Foo”
    • 给我自己管理 secret 访问策略
    • 给定应用服务身份获取和列出 secret 访问策略

appsettings.json

...
"KeyVaultName" : "abc123",
"Secrets": {
"One" : "@Microsoft.KeyVault(Secreturi=[uri to secret copied from Azure blade])"
}
...

程序.cs

...
using Azure.Extensions.AspNetCore.Configuration.Secrets;
using Azure.Identity;
...
public static IHostBuilder CreateHostBuilder(string[] args)
{
return Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((context, config) =>
{
var builtConfig = config.Build();
var secretClient = new SecretClient(
new Uri($"https://{builtConfig["KeyVaultName"]}.vault.azure.net/"),
new DefaultAzureCredential());
config.AddAzureKeyVault(secretClient, new KeyVaultSecretManager());
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}

结果

我刚刚获得了 @Microsoft ... 值,我希望将其映射到 keyvault 中的值。

有些事情似乎不太对劲,因为我必须定义 keyvault 的名称两次,一次在 SecretClient 中,一次在 @Microsoft.KeyVault 引用中。

最佳答案

看来我混合了两种从 KeyVault 获取 secret 的方法。

配置提供程序

我在 Program.cs 中添加的是一个配置提供程序,它将 secret 映射到配置集合中。在 Startup.cs 中放置断点并检查配置集合中的值验证了这一点。

我应该做的是命名 secret Secret--One 它将映射并覆盖本地配置值 { "Secret: { "One": "..."} }。无法在环境变量配置映射中使用 :__,因为 secret 名称中不支持这些字符。

感觉我仍然缺少一些东西,所以请在评论或其他答案中更新。

应用程序设置中的 KeyVault 引用

另一方面,如果您想要使用在 Azure 应用程序设置(应用服务配置)边栏选项卡上设置的环境变量覆盖配置值,则可以使用 KeyVault 引用。

这样做的问题是,您仍然需要另一种方法来确保您不会在本地保守 secret 并冒着将其提交给源代码控制的风险。

有关此方法的更多信息,请参阅 answer by Enrico .

引用文献

关于c# - 使用 KeyVault secret 覆盖 Azure 应用服务和本地中的应用程序设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68224000/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com