4

我在 Amazon S3 中有一个存储桶,我将数据设置为对所有人只读。然而,这不是我想要的。我希望只能从我的移动应用程序访问该数据,并将其限制为通过 url 下载。

那可能吗?如果是这样如何实施这样的桶策略?

4

2 回答 2

14

传统上,通过以下方式访问移动应用程序:

  • 移动应用程序用户向您的后端进行身份验证(通过您的移动应用程序)。这可以通过 Amazon Cognito 或您自己的用户名/密码数据库来完成。
  • 您的应用程序会检查他们的身份并确定允许他们访问哪些数据。然后,它使用AWS 安全令牌服务 (STS)生成具有有限权限的限时凭证(例如,访问 S3 存储桶中的特定目录)。后端应用程序将这些凭据发送到移动应用程序。
  • 然后,移动应用程序可以使用凭证对AWS 进行 API 调用(无需通过您的后端服务器)。

如果您希望您的移动应用程序上的任何用户访问 S3 存储桶,那么该用户不需要在第一步中进行身份验证——这只是您的移动应用程序请求了一些临时凭证。

以上都不需要存储桶策略。权限将根​​据 STS 凭证而不是存储桶授予。

于 2017-08-08T12:43:42.297 回答
3

没有直接的方法可以在 S3 存储桶中设置客户端特定的策略,但您的用例可以通过其他方式实现。

方式 1 - 在您的移动应用程序中设置 http 请求引用者,并在 S3 上创建与此引用者匹配的策略。

方式 2 - 通过匹配客户端类型并在请求中添加少量条件的服务器重定向您的所有请求。这些条件可以在 S3 策略中处理。

方式 3 - 通过其 ip 在 S3 存储桶上列入白名单的服务器重定向您的所有应用程序请求。虽然在这里你必须使用一些代理服务器或负载平衡器。

这是有关访问策略和条件的官方 S3 文档 - http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html

希望这可以帮助!

于 2017-08-08T12:10:04.573 回答