首页 > 解决方案 > 阻止人们从 s3 amazon Bucket 下载文件(图像)

问题描述

如何修改 S3 存储桶策略以使人们可以在网站上看到图像但如果他们尝试下载图像,s3 会禁止他们的请求。(安全图像文件)

{
"Version": "2012-10-17",
   "Id": "Policyid",
   "Statement": [
       {
           "Sid": "policyid",
           "Effect": "Allow",
           "Principal": "*",
           "Action": "s3:GetObject",
           "Resource": "arn:aws:s3:::mybucket/*",
           "Condition": {
               "StringLike": {
                   "aws:Referer": [
                       "http://www.mywebsite.com/*",
                       "http://mywebsite.com/*"
                   ]
               }
           }
       }
   ]
}

标签: amazon-web-servicesamazon-s3

解决方案


阻止人们直接从 S3 下载您的对象而不是使用您的网站的一种方法是通过CloudFrontand Origin Access Identity

多亏了这一点,您将能够阻止人们直接访问您的 S3 对象(图像):

例如,如果您使用 CloudFront 签名 URL 或签名 cookie 来限制访问,您也不希望人们能够通过简单地使用文件的直接 Amazon S3 URL 来查看文件。相反,您希望他们仅使用 CloudFront URL 访问文件,以便您的保护工作。

AWS文档中提供了有关如何设置的完整详细信息。作为设置过程的一部分,您的存储桶策略必须进行如下修改(来自文档的示例):

{
    "Version": "2012-10-17",
    "Id": "PolicyForCloudFrontPrivateContent",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EH1HDMB1FH2TC"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::awsexamplebucket/*"
        }
    ]
}

上述存储桶策略确保只能CloudFront Origin Access Identity访问您的对象。您的用户将无法直接执行相同操作。


推荐阅读