【问题标题】:Best way to protect resources hosted on Amazon S3?保护托管在 Amazon S3 上的资源的最佳方式是什么?
【发布时间】:2014-01-03 23:09:08
【问题描述】:

我正在创建一个网站,人们可以在其中注册并付费观看视频。该网站将使用 PHP 构建,并设想其工作方式如下:

  • 内容创建者上传他们的内容(视频文件上传到 S3 存储桶)
  • 用户可以注册,付费观看上传的视频

因此,我需要一种方法来保护每个用户的对象,这样用户就无法付费观看视频、检查 HTML 并与其他人共享视频的 URL,而其他人随后无需付费即可观看。

我考虑过使用 IAM,创建一个 IAM 用户,该用户有权访问已购买的视频(对象),作为我网站上的注册用户购买视频的权限,但观看 the introduction video from AWS 似乎 IAM 用户更倾向于授予访问权限人们能够登录到 AWS 控制台并管理我的 AWS 服务,而不是作为向 Web 服务用户授予对象权限的一种方法。

如果我认为 IAM 用户更适合通过控制台访问我的服务的人是正确的,那么我有哪些选项可以向我的应用程序用户授予特定权限?

【问题讨论】:

  • 您是正确的,IAM 用户在这里不合适。您可能应该验证用户并分发有时间限制的签名 S3 URL。当然,这不会阻止 URL 在时间限制内共享,但如果您的用户真的想在您背后共享视频,他们可以随时与其他人共享他们的凭据,这样您就无法阻止它。有时间限制的 URL 会限制您的曝光。
  • 实现所需的一种方法是在您的应用程序中代理 S3 对象检索,以便所有请求都通过您并且必须在经过身份验证的会话中,但您很快就会丢失一些直接从 S3 提供内容的主要优势。
  • @jarmod 限时 URL 听起来很完美。你知道有哪些资源可以更深入地实现这些吗?
  • @martin-bean Kyle 在下面的回复中包含一个指向权威 S3 页面的链接。 AWS 开发工具包通常支持签名 URL 生成(例如在 java 中:docs.aws.amazon.com/AmazonS3/latest/dev/…),或者您可以使用docs.aws.amazon.com/AmazonS3/2006-03-01/dev/… 处的信息直接生成 REST URL)。可能还有一些使用各种语言的 GitHub 项目可以提供帮助。

标签: amazon-web-services amazon-iam


【解决方案1】:

您需要将自己的身份验证系统与Amazon's Signing and REST Authentication APIAssumeRoleWithWebIdentity 结合使用,以便为每个用户创建临时安全凭证(根据要求)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-02
    • 2012-02-03
    • 1970-01-01
    • 2020-08-30
    • 2015-01-07
    • 1970-01-01
    • 2020-09-26
    • 2017-07-30
    相关资源
    最近更新 更多