限制对S3上托管的网站的访问

时间:2013-01-11 12:58:20

标签: amazon-s3

我想在亚马逊S3上托管一个静态网站,但我需要限制某些用户访问它。这可能是通过IP地址或亚马逊凭证(只有登录用户才能访问存储桶的内容。

这可能吗?

由于

3 个答案:

答案 0 :(得分:12)

编辑:基于用户/群组的限制 do not work适用于在S3中托管的静态网站,因为AWS未注册S3的AWS管理控制台(路径:amazon.com)凭据/ Cookie(路径:amazonaws.com)并且没有检查它们。

解决方法:www.s3auth.com - S3存储桶的基本身份验证可能会为您提供帮助但涉及第三方。另一种解决方案可能是Query String Request Authentication,使用EC2实例或Elastic Beanstalk Java SE Static Files Option。我们目前正在探索使用Amazon API Gateway as Amazon S3 Proxy保护我们的存储桶。

旁注:还有一些需要注意的事项,通常不会直接指出。

存储分区策略currently not possible授予或限制组访问权限,仅限特定用户。由于您通常也不希望为用户结构中的每个更改更新每个存储桶策略,并且存储桶策略可能(无意中)干扰您的用户策略,您可能不希望使用存储桶策略

基于用户/组的策略仅适用于附加到s3:GetBucketLocations3:ListAllMyBuckets的{​​{1}}和arn:aws:s3:::*(遗憾的是,此处无法过滤,所有存储桶名称都会显示对于使用此政策的用户/群组。)

IAM政策示例:(不是S3 Bucket政策,静态网站托管工作)

*

更详细的博文:"How to Restrict Amazon S3 Bucket Access to a Specific IAM Role"

答案 1 :(得分:2)

您也可以将对桶/静态网站的访问限制为某些http引用者。因此,您可以设置一个wordpress会员网站,其中只有登录该网站的用户才能访问亚马逊上托管的网站。例如。 mymembershipsite.com/members。

答案 2 :(得分:0)

你可以在 S3 前面放一个 Cloudfront,在 Cloudfront 前面放一个 AWS WAF,只将你想要的 IP 列入白名单,这样就可以了。