我对Azure很陌生,我正在尝试模拟一个实际的生产环境。因此,我已经将.netcore 3.1应用程序部署到AppService资源。该Web应用程序能够从其他两个服务(KeyVault和应用程序配置)获取配置。我已经配置了AppService身份。
我可以使用以下代码从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);
我可以从“应用程序配置”中获取密钥:
var settings = config.Build();
config.AddAzureAppConfiguration(settings["AppSettings:Endpoint"]);
而且我可以通过身份和AppConfiguration的关键参考同时使用它们
var settings = config.Build();
config.AddAzureAppConfiguration(options =>
{
options
.Connect(settings["AppSettings:Endpoint"])
.ConfigureKeyVault(kv =>
{
kv.SetCredential(new DefaultAzureCredential());
});
});
所以,我的问题是关于代码片段3:在生产环境中将AppSettings:Endpoint
值存储为appconfig.json
是否安全?需要明确的是,我指的是这个值:
而且,我发现了here以及有关如何同时使用这两种服务的说明。但首先,该解决方案对我不起作用-我得到了Azure.Identity.CredentialUnavailableException: 'ManagedIdentityCredential authentication unavailable, no managed identity endpoint found.'
。另一方面,他不清楚AppSettings:AppConfiguration:Endpoint
和AppSettings:Identity:ClientId
值的存储位置,因此无法回答我的第一个问题。
提前感谢
请确保您对KV的访问策略正在使用您应用程序的服务主体。]
我重复,请确保您对KV的访问策略正在使用应用程序的服务主体。] >可能只需要权限“列表”和“获取”即可获得机密和其他权限。请勿将机密存储在您的Web配置或等效配置中。 Key Vault几乎是免费的,而且非常便宜。作为解决方案的一部分,如果没有获得自己的保管库,我不会部署应用程序。如果不清楚或需要网络参考,请留下评论。