如何防止直接访问Amazon S3?

时间:2017-03-05 16:45:28

标签: amazon-web-services amazon-s3

这是我的政策

{
    "Version": "2012-10-17",
    "Id": "Policy3451901640290",
    "Statement": [
        {
            "Sid": "Stmt3451901619319",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::bucket1/*"
        }
    ]
}

这是我的 cors

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <CORSRule>
        <AllowedOrigin>*</AllowedOrigin>
        <AllowedMethod>GET</AllowedMethod>
        <AllowedMethod>POST</AllowedMethod>
        <AllowedMethod>PUT</AllowedMethod>
        <AllowedMethod>DELETE</AllowedMethod>
        <MaxAgeSeconds>3000</MaxAgeSeconds>
        <ExposeHeader>ETag</ExposeHeader>
        <AllowedHeader>*</AllowedHeader>
    </CORSRule>
</CORSConfiguration>

我的存储桶中的所有文件必须是可供所有人阅读的,但只能通过我的网站查看,是否有一种简单的方法可以拒绝直接访问S3?

更新

我尝试将此添加到我的政策中:

"Condition":{
        "StringLike":{"aws:Referer":["http://www.example.com/*","http://example.com/*"]}
      } 

无论如何,我可以直接通过S3访问我网站之外的所有文件,而不是像这样:

假设我的文件夹上有这个文件:

https://s3-eu-west-1.amazonaws.com/bucket1/example.jpg

如果用户现在转到该链接,他/她可以看到该图像。相反,我希望只能从我的网站访问。

让我们说example.com我有这个:

<img src="https://s3-eu-west-1.amazonaws.com/bucket1/example.jpg" />

0 个答案:

没有答案