Amazon S3 存储桶策略引用

Posted

技术标签:

【中文标题】Amazon S3 存储桶策略引用【英文标题】:Amazon S3 Bucket Policy Referer 【发布时间】:2013-01-08 06:34:53 【问题描述】:

我正在尝试编辑我的 S3 存储桶配置,以使第 3 方网站无法链接到其中的内容。还有一个额外的好处是他们只能访问我的域中的内容,而不是补充的 s3bucket.amazon-east.amazonaws.com 或类似的东西。

文档中有一个完全适用于此的示例,但是当我在下面为我的网站复制/粘贴/修改时它不起作用?我仍然收到 403 错误。当我只取出条件部分时,它允许完全访问,所以只有引用部分存在问题。

这么短的代码让我头疼不已……希望第二双眼睛能启发我发现我可能很明显遗漏的东西?

或者,这可能没有任何问题,并且其他地方可能还有我没有设置/考虑的其他配置?

感谢阅读。


    "Version": "2008-10-17",
    "Statement": [
        
            "Sid": "fml",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::www.mysite.com/*",
            "Condition": 
                "StringLike": 
                    "aws:Referer": [
                        "http://mysite.com/*",
                        "http://www.mysite.com/*"
                    ]
                
            
        
    ]

【问题讨论】:

你有没有找到解决方案。我遇到了同样的问题,文档很糟糕 【参考方案1】:

您是否为您的存储桶启用了日志记录?

如果您这样做,您可以检查日志以验证引用者是否与那些 403 Access Denied 消息一起被记录,并且这是您所期望的。如果不是,那么问题不在于存储桶配置——而是为什么浏览器没有发送引荐来源网址的问题。

如果您没有启用日志记录,则启用日志记录。

另外一个好处是他们只能访问我的域中的内容,而不是补充的 s3bucket.amazon-east.amazonaws.com 或类似的东西。

是什么让你认为这是真的?

【讨论】:

【参考方案2】:

请务必注意,如果您的引荐来源网址末尾包含 /*,那么它将只允许来自该引荐来源网址的孩子的内容,而不是来自该引荐来源网址本身的内容。

因此,如果您还想包含您的主域,那么您需要这样做:

                "aws:Referer": [
                    "http://example.com",
                    "http://example.com/*",
                    "http://www.example.com",
                    "http://www.example.com/*"
                ]

【讨论】:

以上是关于Amazon S3 存储桶策略引用的主要内容,如果未能解决你的问题,请参考以下文章

json 静态站点的Amazon S3存储桶策略。

Amazon S3 存储桶策略,我做错了啥?

Amazon S3 存储桶策略阻止用户代理

Amazon S3 存储桶策略:如何锁定仅访问您的 EC2 实例

使用 amazon sdk 和存储桶策略从 ios 应用程序将图像上传到 amazon s3

如何使用特定的引用策略和 CloudFront 分配改进 S3 存储桶的反抓取