【问题标题】:Amazon Bucket Policy for only mobile app access仅适用于移动应用访问的 Amazon 存储桶策略
【发布时间】:2017-08-08 20:43:56
【问题描述】:

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

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

【问题讨论】:

    标签: amazon-web-services amazon-s3 aws-sts


    【解决方案1】:

    传统上,通过这种方式访问​​移动应用程序:

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

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

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

    【讨论】:

    • 关于第二部分:授予您移动应用程序上的任何用户访问 S3 存储桶的权限,您能否更详细地解释一下如何请求一些临时凭证,或者添加一些说明的链接?谢谢!
    • @CodeBrew AWS Security Token Service 答案中的链接可以提供详细信息。
    • 我明白了。谢谢约翰!
    【解决方案2】:

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

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

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

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

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

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2013-08-05
      • 2013-01-08
      • 1970-01-01
      • 2011-09-10
      • 2023-02-26
      • 2023-03-31
      • 2016-03-16
      • 1970-01-01
      • 2019-04-20
      相关资源
      最近更新 更多