ДЛЯ ПРОИЗВОДСТВА: Используйте Управляемый идентификатор для ресурсов Azure, чтобы избежать хранения строк подключения.Это чистое решение для управления секретами в Key Vault.
Ключ доступа для Key Vault или других подобных ресурсов никогда не передается, даже Сервисам или DevOps Engineer для развертывания или запуска приложений в производстве
- Создайте хранилище ключей Azure и сохраните свои секреты
- Включите идентификацию, управляемую системой, в службе приложений Azure.Он зарегистрирует ваше веб-приложение внутри AAD
- Поиск идентификатора приложения с идентификатором управляемой службы в Key Vault и предоставит предполагаемый доступ к нему
- Инициализируйте подключение к вашему хранилищу ключей, используя следующий фрагмент
Program.cs
using Microsoft.Azure.Services.AppAuthentication;
using Microsoft.Azure.KeyVault;
using Microsoft.Extensions.Configuration.AzureKeyVault;
...
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((context, config) =>
{
if (context.HostingEnvironment.IsProduction())
{
var builtConfig = config.Build();
var azureServiceTokenProvider = new AzureServiceTokenProvider();
var keyVaultClient = new KeyVaultClient(
new KeyVaultClient.AuthenticationCallback(
azureServiceTokenProvider.KeyVaultTokenCallback));
config.AddAzureKeyVault(
$"https://{builtConfig["KeyVaultName"]}.vault.azure.net/",
keyVaultClient,
new DefaultKeyVaultSecretManager());
}
})
.UseStartup<Startup>();
Startup.cs
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
}
Теперь секреты из хранилища ключей будут загружаться в переменную конфигурации.Вы можете использовать его как, Конфигурация ["YourKeyVaultKeyName"].
ДЛЯ РАЗРАБОТКИ: Вы можете дополнительно использовать Dotnet-user-secrets инструмент для хранения \управлять секретами в локальной машине.