我正在完全使用Amazon S3存储桶运行静态网站,但我想用密码保护我的内容。这可能吗?身份验证的类型不会打扰我,它只需要在那里,这样人们就不能只是“发现”我的网站。
目前,我没有设置域名,我认为这可以排除http://www.s3auth.com/作为可能的解决方案。还有其他人吗?
答案 0 :(得分:14)
AWS目前尚未提供直接执行此操作的方法。您提到的S3auth解决方案很不错,因为您的存储桶/对象保持私有状态,因此直接访问存储桶不允许在没有您的私有凭据的情况下读取对象。 s3auth方法的缺点在于它依赖于您使用您的私有凭据信任s3auth。如果您的凭据在任何阶段都受到了损害,那么根据某人滥用您的访问权限的方式,这可能会很昂贵。
如果您使对象公开可读(就像您在创建网站时那样),任何学习/猜测/知道您的对象名称等的人都可以访问它们。或者,如果存储桶是可读的,那么他们所需要的只是存储桶名称。除非收紧S3访问权限,否则没有真正的方法。
如果您只从某些IP地址访问您的网站,也许查看Bucket Policies可能有所帮助。向下滚动到限制对特定IP地址的访问。这不是密码,但它确实允许您限制访问的来源至少。
另一种提供对象临时访问的常用技术是Query String Request Authentication。但是,这与您保护S3存储桶网站的密码的原始要求不符。
答案 1 :(得分:6)
使用CloudFront和Lambda @ Edge可以实现这一点。请在此处查看答案:https://stackoverflow.com/a/45971193/4550880
答案 2 :(得分:3)
我认为AWS SDK for Javascript是您正在寻找的。公平地说,当你在2年前发布这个问题时,它是不可用的。它允许您使用Facebook,Google或亚马逊登录。这里使用AWS登录another resource。