Лучший способ хранить пароли для приложения ASP.NET Core в Azure - PullRequest
2 голосов
/ 23 мая 2019

Я разработал какое-то приложение и использую внешний сервис для отправки писем (SendGrid).Чтобы использовать этот сервис, мне нужны логин и пароль для использования SendGrid API.В среде Developmnet я использовал секреты .Net Core (https://docs.microsoft.com/pl-pl/aspnet/core/security/app-secrets?view=aspnetcore-2.2&tabs=windows), но теперь после публикации мне нужно предоставить логин и пароль другим способом. Я знаю, что существует хранилище ключей Azure, но что, если приложение будет опубликовано где-тоеще

1 Ответ

0 голосов
/ 24 мая 2019

ДЛЯ ПРОИЗВОДСТВА: Используйте Управляемый идентификатор для ресурсов Azure, чтобы избежать хранения строк подключения.Это чистое решение для управления секретами в Key Vault.

Ключ доступа для Key Vault или других подобных ресурсов никогда не передается, даже Сервисам или DevOps Engineer для развертывания или запуска приложений в производстве

  1. Создайте хранилище ключей Azure и сохраните свои секреты
  2. Включите идентификацию, управляемую системой, в службе приложений Azure.Он зарегистрирует ваше веб-приложение внутри AAD
  3. Поиск идентификатора приложения с идентификатором управляемой службы в Key Vault и предоставит предполагаемый доступ к нему
  4. Инициализируйте подключение к вашему хранилищу ключей, используя следующий фрагмент

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 инструмент для хранения \управлять секретами в локальной машине.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...