如何在Azure网站中配置AWS S3凭证

时间:2018-10-29 06:51:37

标签: amazon-web-services azure asp.net-core

我在azure上托管了一个asp.net核心网站。

我想在Amazon S3中上传文件。

如何在Azure Web App中配置AWS凭证。

2 个答案:

答案 0 :(得分:1)

Azure Key Vault 是最好的存储存储在Azure中的Web应用程序将使用的敏感信息/机密信息(例如凭据)的方法。

此处是带有代码和设置步骤的示例,您可以按照以下步骤从.NET核心Web应用程序执行此操作。 (Sample documentation

此示例还演示了另一种最佳实践,即为您的Web应用程序使用托管服务标识以访问密钥库。这将自动处理围绕关键轮换和其他问题的治理。万一您的Web应用由于某种原因已经具有Azure AD注册身份,您也可以使用它来访问密钥库。

代码在这里可用:

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

不要只给您链接一个答案,这只是高级步骤。有关课程的详细信息,请参阅github存储库和文档。

  1. 您可以使用Azure门户或类似

    的命令来创建Key Vault
    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. 为您的Web应用启用托管身份

    az webapp identity assign --name "keyvaultdotnetcorequickstart" --resource-group "<YourResourceGroupName>"
    
  4. 分配权限以从您的Web应用程序的Key Vault中读取机密

    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";
    

答案 1 :(得分:0)

最佳做法是让您的客户端应用程序直接上传到S3,而不要通过您自己的Web基础结构。这将利用S3的大量以太网并行特性,并减轻Web基础架构的负担。卸载基础架构将允许使用较少的实例或较小的实例来提供相同数量的流量。因此,您的基础设施成本更低。

如果您的应用程序是Web应用程序,则甚至可以让客户的浏览器直接上传到S3。阅读此AWS Documentation

,了解如何安全地实施此操作

希望这会有所帮助!