Я новичок в Azure и пытаюсь смоделировать реальную производственную среду. Итак, я развернул приложение .netcore 3.1 на ресурсе AppService. Это веб-приложение может получать конфигурацию от двух других сервисов - KeyVault и App Configuration. Я уже настроил удостоверение 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
в производственной среде? Для ясности я имею в виду это значение:
Более того, я нашел здесь и объяснение того, как использовать эти две службы вместе. Но, во-первых, у меня это решение не работает - я получаю Azure.Identity.CredentialUnavailableException: 'ManagedIdentityCredential authentication unavailable, no managed identity endpoint found.'
. С другой стороны, он не понимает, где хранить значения AppSettings:AppConfiguration:Endpoint
и AppSettings:Identity:ClientId
, тогда это не отвечает на мой первый вопрос.
заранее спасибо
var client = new SecretClient(new Uri("https://name.vault.azure.net/"), new DefaultAzureCredential()); var a = client.GetSecret("AppSettings:Endpoint"); config.AddAzureAppConfiguration(a.Value);
Источник 05.06.2020