仅限注册用户访问 Amazon S3 静态网页
Posted
技术标签:
【中文标题】仅限注册用户访问 Amazon S3 静态网页【英文标题】:Restrict access to Amazon S3 static webpage to only registered users 【发布时间】:2017-11-03 14:25:10 【问题描述】:我有一个销售电子书的 php 电子商务网站。
每本电子书都作为静态 html 网页存储在 Amazon S3 上,该网页还链接到许多 CSS、JS 和字体文件。
例如: https://s3.eu-west-2.amazonaws.com/university-revision-guru/example/index.html#page=1
我希望能够限制对这个文件的访问,这样只有我数据库中的特定注册用户才能访问它。我该怎么做?
似乎 Amazon S3 权限属性只允许访问特定的 AWS 账户、IP 地址或完全公开。因此,很明显我可能需要在应用程序端做一些工作。
如何限制对 Amazon S3 静态网页的访问,以便只有我的数据库中的特定注册用户才能访问它?
【问题讨论】:
【参考方案1】:您可以将存储桶设为私有,并且每次用户想要查看这本书时都要求他们登录到您的网站以获取链接。然后让您的 PHP 应用在用户请求链接时生成 S3 pre-signed URL。
【讨论】:
【参考方案2】:这是一个简单的 5 步指南。
-
将aws php sdk 集成到您的应用程序中。
-
存储每本书的 S3 密钥。
通过您的网站控制电子书网址。类似于http://your-website.com/ebook.php?book='wings-of-fire&book-id=123。
(您将在此处管理用户的安全和 acl)
使用图书 ID 或名称,找到对应的 S3 密钥。
使用 aws php sdk 获取文件内容(您可以从 aws 获取内容并将其作为附件发送给用户,或者
生成一个预签名的网址并将用户重定向到该网址)这是
如何获得get object,这里是如何获得pre-signed-url。
【讨论】:
【参考方案3】:您可能会查看 Amazon Cognito 以了解您的安全问题,我找到了一个可能是您需要查看的答案: Amazon Cognito S3
【讨论】:
以上是关于仅限注册用户访问 Amazon S3 静态网页的主要内容,如果未能解决你的问题,请参考以下文章