繁体   English   中英

从 appsettings 中定义的 KeyVault 检索机密

[英]Retrieving secrets from KeyVault defined in appsettings

在我的应用程序服务中,在应用程序设置中,如果我添加以下键值,它就可以正常工作。

some:secret -> @Microsoft.KeyVault(VaultName=...)

但是,如果我将该行移至我的 appsettings 文件:

{
  "some": {
    "secret": "@Microsoft.KeyVault(VaultName=...)"
  }
}

然后在我的代码中检索到的“some:secret”值将为空。 以下是我将 appsettings 添加到 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(或函数应用程序)中时有效,并且该值将像该刀片中的任何其他应用程序设置一样注入:作为 ENV vars。

您的 dotnet 应用程序不会看到(或知道)任何 KeyVault。 秘密的检索由 AppService 处理。 这就是为什么这对于任何其他运行时(如 Java 或节点)也以相同的方式工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM