Как настроить учетные данные AWS S3 на веб-сайте Azure - PullRequest
0 голосов
/ 29 октября 2018

У меня есть основной сайт asp.net, размещенный на Azure.

Я хочу загрузить файлы в Amazon S3.

Как настроить учетные данные AWS в Azure Web App.

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

Хранилище ключей Azure будет лучшим выбором для хранения любой конфиденциальной / секретной информации, например учетных данных, которую будет использовать ваше веб-приложение, размещенное в Azure.

Вот пример с кодом, а также шаги по настройке, которые вы можете выполнить, чтобы сделать это из основного веб-приложения .NET. ( Образец документации )

В этом примере также демонстрируется еще одна лучшая практика использования идентификатора управляемой службы для вашего веб-приложения для доступа к хранилищу ключей. Это автоматически позаботится об управлении вокруг ротации клавиш и других проблем. Если по какой-либо причине в вашем веб-приложении уже есть зарегистрированный идентификатор Azure AD, вы можете использовать его и для доступа к хранилищу ключей.

Код доступен здесь:

https://github.com/Azure-Samples/key-vault-dotnet-core-quickstart.git

Не для того, чтобы дать вам ссылку, просто ответ, вот только шаги высокого уровня. Подробности смотрите в репозитории github и документации.

  1. Вы создаете хранилище ключей с помощью портала Azure или с помощью команды, подобной

    az keyvault create --name "<YourKeyVaultName>" --resource-group "<YourResourceGroupName>" --location "East US"
    
  2. Вы создаете секреты в этом хранилище для имени пользователя и секретного ключа, которые будут использоваться для доступа к AWS S3. Снова портал или команда Azure CLI.

    az keyvault secret set --vault-name "<YourKeyVaultName>" --name "AWS-ACCESS-KEY-ID" --value "MySecretValue1"
    az keyvault secret set --vault-name "<YourKeyVaultName>" --name "AWS-SECRET-KEY" --value "MySecretValue2"
    
  3. Включение управляемого удостоверения для вашего веб-приложения

    az webapp identity assign --name "keyvaultdotnetcorequickstart" --resource-group "<YourResourceGroupName>"
    
  4. Назначение разрешений на чтение секретов из хранилища ключей для вашего веб-приложения

    az keyvault set-policy --name '<YourKeyVaultName>' --object-id <PrincipalId> --secret-permissions get list
    
  5. Просмотрите код хранилища ключей в репо. Важная часть из Program.cs, приведенная ниже

    public static IWebHost BuildWebHost(string[] args) =>
           WebHost.CreateDefaultBuilder(args)
               .ConfigureAppConfiguration((ctx, builder) =>
               {
                   var keyVaultEndpoint = GetKeyVaultEndpoint();
                   if (!string.IsNullOrEmpty(keyVaultEndpoint))
                   {
                       var azureServiceTokenProvider = new AzureServiceTokenProvider();
                       var keyVaultClient = new KeyVaultClient(
                           new KeyVaultClient.AuthenticationCallback(
                               azureServiceTokenProvider.KeyVaultTokenCallback));
                       builder.AddAzureKeyVault(
                           keyVaultEndpoint, keyVaultClient, new DefaultKeyVaultSecretManager());
                   }
               }
            ).UseStartup<Startup>()
             .Build();
    
        private static string GetKeyVaultEndpoint() => "https://<YourKeyVaultName>.vault.azure.net";
    
0 голосов
/ 29 октября 2018

Лучше всего разрешить клиентскому приложению загружать данные прямо на S3, а не через собственную веб-инфраструктуру. Это позволит использовать массовую параллельную природу S3 и разгрузить вашу веб-инфраструктуру. Разгрузка вашей инфраструктуры позволит использовать меньшее количество экземпляров или меньшие экземпляры для обслуживания того же объема трафика. Отсюда и более низкие затраты на инфраструктуру.

Если ваше приложение является веб-приложением, вы даже можете позволить браузерам своих клиентов загружать данные прямо на S3. Посмотрите, как реализовать это безопасно, прочитав документацию AWS

Надеюсь, это поможет!

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