为用户保护S3存储桶?

时间:2020-05-10 13:32:59

标签: reactjs amazon-web-services react-native amazon-s3 aws-amplify

我开发了一个React Native应用程序,并使用AWS Amplify支持后端(DynamoDB,S3)。该应用程序的所有用户都必须使用Auth.signIn()进行登录,并且属于用户池。

一旦进入,他们就可以开始通过该应用将视频上传到S3或在应用中查看 PUBLIC 的S3存储桶中的视频。

我将S3视频(https://myS3bucket...。)的路径用作视频的源URL。但是,只有在存储桶公开时,这些视频才在我的应用中可见。其他任何设置(受保护/私有),都看不到视频。我该如何使其更加安全?

3 个答案:

答案 0 :(得分:0)

S3存储桶具有3种管理安全性的方法:

  • IAM:与该存储桶相同的AWS账户内的任何用户或角色均可被授予与S3存储桶及其对象进行交互的权限。
  • S3 Bucket Policies:授予存储桶范围(或前缀)对S3存储桶的访问权限。
  • S3 ACLs-每个对象级别的权限。

通常建议不要使用S3 ACL,因为它们的功能通过S3存储桶策略得到了改进。仅在需要特定对象具有不同权限集的情况下使用它们。

答案 1 :(得分:0)

如果您希望经过身份验证的用户上传和/或下载文件,则我不建议公开文件或存储桶。为此,使用S3 signed URLs授予用户访问文件的权限。换句话说,后端将相应地对用户进行身份验证,生成用户签名的URL,然后react native应用将相应地解释该URL,即视频文件。

您将需要更改一些内容,但是this guide应该涵盖

答案 2 :(得分:0)

我最近发表了一篇文章,详细描述了安全最佳实践,有助于解决以下几点:

  • 如何保护存储敏感用户数据和应用程序代码的 S3 存储桶。
  • 如何安全地配置 CloudFront 分配。
  • 如何使用 CloudFront Functions 保护前端应用免受常见 OWASP 威胁。

要了解更多信息have a look at the article

最好的, 斯蒂芬