【发布时间】: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