使用S3从移动应用程序保存图像

时间:2017-05-02 08:21:45

标签: amazon-web-services mobile amazon-s3 amazon-iam

我正在创建一个后端服务,该服务将从Android应用程序获取有关创建某些服务请求的请求。这些服务请求将包含有关服务项的详细信息以及与请求相关的一些图像。我们希望使用S3直接从Android应用程序存储图像,并通过后端服务上的API调用获取保存图像的密钥。

此方法的问题是移动应用程序授权访问共享存储桶。

  • 如果我们在应用程序中保存共享存储桶的访问密钥,则可以对此代码进行反编译,并且会泄露密码。
  • 另一种选择是在后端服务上创建一个API,它将在将图像放入S3之前将授权密钥返回给移动应用程序。通过这种方式,我们还可以定期轮换秘密。

哪种方法在安全性方面更好?我还缺少其他方法吗?这听起来像是使用S3保存文件的标准访问实践,因此必须有针对此特定方案的内容。

1 个答案:

答案 0 :(得分:2)

您不需要发明API来执行此操作 - AWS仅针对此用例提供其STS服务。

http://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html

  
    

要请求临时安全凭证,您可以使用AWS STS API操作。

  
     

要调用API,您可以使用其中一个可用的AWS开发工具包   适用于各种编程语言和环境,包括   Java,.NET,Python,Ruby,Android和iOS。 SDK负责   任务,如加密签名您的请求,重试   必要时请求,并处理错误响应。你也可以使用   AWS STS查询API,在AWS安全令牌中描述   服务API参考。最后,两个命令行工具支持AWS   STS命令:AWS Command Line Interface和AWS Tools for   Windows PowerShell。

     

AWS STS API操作会返回临时安全凭据   由访问密钥和会话令牌组成。访问密钥包括   访问密钥ID和密钥。用户(或应用程序   用户运行)可以使用这些凭据来访问您的资源。   创建凭据时,它们与IAM关联   访问控制策略,限制用户在使用时可以执行的操作   证书。有关更多信息,请参阅使用临时安全性   请求访问AWS资源的凭据。