使用Azure App配置合并Azure Key Vault

问题描述 投票:0回答:1

我对Azure很陌生,我正在尝试模拟一个实际的生产环境。因此,我已经将.netcore 3.1应用程序部署到AppService资源。该Web应用程序能够从其他两个服务(KeyVault和应用程序配置)获取配置。我已经配置了AppService身份。

  1. 我可以使用以下代码从KeyVault中获取密钥:

    var settings = config.Build();
    var web = settings["KeyVault:Name"];
    var clientId = settings["KeyVault:ClientId"];
    var clientSecret = settings["KeyVault:ClientSecret"];
    
    config.AddAzureKeyVault($"https://{web}.vault.azure.net/",
                            clientId,
                            clientSecret);
    
  2. 我可以从“应用程序配置”中获取密钥:

    var settings = config.Build();
    config.AddAzureAppConfiguration(settings["AppSettings:Endpoint"]);
    
  3. 而且我可以通过身份和AppConfiguration的关键参考同时使用它们

    var settings = config.Build();
    config.AddAzureAppConfiguration(options =>
    {
        options
       .Connect(settings["AppSettings:Endpoint"])
       .ConfigureKeyVault(kv =>
       {
           kv.SetCredential(new DefaultAzureCredential());
       });
    });
    

所以,我的问题是关于代码片段3:在生产环境中将AppSettings:Endpoint值存储为appconfig.json是否安全?需要明确的是,我指的是这个值:

enter image description here

而且,我发现了here以及有关如何同时使用这两种服务的说明。但首先,该解决方案对我不起作用-我得到了Azure.Identity.CredentialUnavailableException: 'ManagedIdentityCredential authentication unavailable, no managed identity endpoint found.'。另一方面,他不清楚AppSettings:AppConfiguration:EndpointAppSettings:Identity:ClientId值的存储位置,因此无法回答我的第一个问题。

提前感谢

azure asp.net-core .net-core azure-web-sites azure-keyvault
1个回答
0
投票
长答案-您可以并且很可能应该将敏感的部分,连接字符串及其部分作为秘密存储在Key Vault中。如果您的代码需要这些值,则可以选择如何获取这些值。考虑使用Web配置(相当于通常具有机密值,但在其中放置Key Vault引用的位置。您的方式也可行。请记住,如果您的配置偏离您的配置,则可能需要更改代码)已经编码。

请确保您对KV的访问策略正在使用您应用程序的服务主体。]

我重复,请确保您对KV的访问策略正在使用应用程序的服务主体。] >可能只需要权限“列表”和“获取”即可获得机密和其他权限。请勿将机密存储在您的Web配置或等效配置中。 Key Vault几乎是免费的,而且非常便宜。作为解决方案的一部分,如果没有获得自己的保管库,我不会部署应用程序。如果不清楚或需要网络参考,请留下评论。

© www.soinside.com 2019 - 2024. All rights reserved.