通过API S3存储桶私有访问

时间:2020-05-20 18:19:23

标签: php laravel-5 amazon-s3

我试图在正在开发的API上找到最佳解决方案,基本上在我的API中,我将图像存储在s3专用存储桶中,而在专用存储桶中,我需要在移动应用上显示该图像。

我有2种解决方案,但在我看来并不是最好的解决方案:

1)在base64中发送图像。 问题:自从之前通过访问URL进行读取以来,需要更改应用程序以读取base64图像。

2)使用s3凭据访问应用中进行身份验证的专用存储桶 问题:并不完全安全,公开了保存在应用程序中的凭据。

有人遇到同样的情况吗?任何想法。

1 个答案:

答案 0 :(得分:1)

如果您的用户未登录,并且您想与应用的所有所有用户共享相同的内容,则您的移动应用应:

  • 使用AWS安全令牌服务(STS)通过AssumeRole - AWS Security Token Service生成一组临时凭证
  • 应将角色预先配置为具有访问S3存储桶的权限
  • 将临时凭据发送到移动应用
  • 然后,移动应用可以使用这些凭证来访问Amazon S3中的私有内容

相反,如果您的用户对您的应用程序进行了身份验证,那么您可能希望控制哪些对象可以在S3中访问。为此,流程将是:

  • 用户对应用程序进行身份验证
  • 当他们希望访问对象时,您的后端应用程序将验证他们是否有权访问对象
  • 如果允许,则应用程序应生成一个Amazon S3 pre-signed URLs,这是一个有时间限制的URL,用于授予对私有对象的访问权限