从 appsettings 中定义的 KeyVault 检索机密
Retrieving secrets from KeyVault defined in appsettings
在我的应用服务中,在“应用程序设置”选项卡上,如果我添加以下键值,它就可以正常工作。
some:secret -> @Microsoft.KeyVault(VaultName=...)
但是,如果我将该行移动到我的应用程序设置文件中:
{
"some": {
"secret": "@Microsoft.KeyVault(VaultName=...)"
}
}
那么我的 'some:secret' 代码中检索到的值将为空。以下是我将我的应用程序设置添加到 configuratoin 的方式(还添加了 ASPNETCORE_ENVIRONMENT
到 App Service 的应用程序设置):
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder => webBuilder.UseStartup<Startup>()
.ConfigureAppConfiguration((context, config) =>
{
var environment = context.HostingEnvironment.EnvironmentName;
config.SetBasePath(Directory.GetCurrentDirectory());
config.AddJsonFile("appsettings.json", optional: false);
config.AddJsonFile($"appsettings.{environment}.json", optional: false);
config.AddEnvironmentVariables();
}));
我在这里错过了什么?
语法 @Microsoft.KeyVault(VaultName=...)
仅在部署在 Azure AppService(或 Function App)中时有效,并且该值将像来自该 blade 的任何其他应用程序设置一样注入:作为 ENV 变量。
您的 dotnet 应用程序将看不到(或不知道)KeyVault 的任何内容。秘密的检索由 AppService 处理。这就是为什么这也适用于任何其他运行时,如 Java 或 node.
在我的应用服务中,在“应用程序设置”选项卡上,如果我添加以下键值,它就可以正常工作。
some:secret -> @Microsoft.KeyVault(VaultName=...)
但是,如果我将该行移动到我的应用程序设置文件中:
{
"some": {
"secret": "@Microsoft.KeyVault(VaultName=...)"
}
}
那么我的 'some:secret' 代码中检索到的值将为空。以下是我将我的应用程序设置添加到 configuratoin 的方式(还添加了 ASPNETCORE_ENVIRONMENT
到 App Service 的应用程序设置):
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder => webBuilder.UseStartup<Startup>()
.ConfigureAppConfiguration((context, config) =>
{
var environment = context.HostingEnvironment.EnvironmentName;
config.SetBasePath(Directory.GetCurrentDirectory());
config.AddJsonFile("appsettings.json", optional: false);
config.AddJsonFile($"appsettings.{environment}.json", optional: false);
config.AddEnvironmentVariables();
}));
我在这里错过了什么?
语法 @Microsoft.KeyVault(VaultName=...)
仅在部署在 Azure AppService(或 Function App)中时有效,并且该值将像来自该 blade 的任何其他应用程序设置一样注入:作为 ENV 变量。
您的 dotnet 应用程序将看不到(或不知道)KeyVault 的任何内容。秘密的检索由 AppService 处理。这就是为什么这也适用于任何其他运行时,如 Java 或 node.