【问题标题】:How to limit access to individual files in an Amazon s3 static website如何限制对 Amazon s3 静态网站中单个文件的访问
【发布时间】:2020-08-23 08:35:03
【问题描述】:

最近创建了一个静态网站,托管在 s3 上,我注意到当用户检查网站的来源时,他们可以单击链接,这些链接允许他们访问单独选项卡中的图像等项目。有没有办法允许网站访问图像但限制尝试访问源图像的用户。

【问题讨论】:

    标签: amazon-web-services amazon-s3 permissions bucket


    【解决方案1】:

    用户只需在选项卡中打开资产应该没问题,如果您只是想阻止内容在您的域以外的其他地方被访问,您可以使用 Referer 头部将其锁定为仅通过您的网站.

    这可以通过bucket policy similar to the one below 在 S3 中完成。

    {
      "Version":"2012-10-17",
      "Id":"http referer policy example",
      "Statement":[
        {
          "Sid":"Allow get requests originating from www.example.com and example.com.",
          "Effect":"Allow",
          "Principal":"*",
          "Action":["s3:GetObject","s3:GetObjectVersion"],
          "Resource":"arn:aws:s3:::awsexamplebucket1/*",
          "Condition":{
            "StringLike":{"aws:Referer":["http://www.example.com/*","http://example.com/*"]}
          }
        }
      ]
    }
    

    您始终可以通过将 CloudFront distributionAWS WAF 结合使用以包含由引荐来源阻止的规则来增强此功能。

    如果您尝试锁定此内容(是否有人需要登录才能查看或付费才能获得),您有多种选择。

    【讨论】:

      【解决方案2】:

      遗憾的是,如果没有适当的身份验证,您无法限制下载图像的能力。如果您的用户可以在他们的浏览器中看到图像,他们就可以下载它们,因为它们已经被下载了。

      但您可以限制您的用户直接访问您的 S3 存储桶。为此,您可以使用 CloudFront (CF) 在您的 S3 存储桶前面。

      具体来说,您可以在 CF 中设置 Origin Access Identity 并使您的网站和所有图像只能通过 CF 访问:

      【讨论】:

        猜你喜欢
        • 2019-11-17
        • 1970-01-01
        • 2015-09-20
        • 2018-06-11
        • 1970-01-01
        • 1970-01-01
        • 2019-08-25
        • 1970-01-01
        • 2021-01-06
        相关资源
        最近更新 更多