AWS S3存储桶策略安全性

时间:2018-08-09 16:03:34

标签: amazon-web-services amazon-s3

我有一个网站,用户可以在其中上传图像或pdf等文件,并将它们存储在AWS S3中。它工作正常,但是我将“公共策略”进行了如下测试:

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

它有效,但我认为malicius用户可能会提出很多要求,而亚马逊会为此收费。那么,限制访问但继续与我的Webapp一起正常工作的方式是什么?

谢谢。

2 个答案:

答案 0 :(得分:0)

您可以为这些对象创建一个有时间限制的Amazon S3 pre-signed URL。这样可以在有限的时间内授予对私有对象的访问权限。

答案 1 :(得分:0)

您可以通过修改存储桶策略来限制对特定HTTP引荐来源网址的访问。

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

用您的网站名称替换example.com。这使得只能从以您的域名为起点的域名中访问对象。确保您使用的浏览器在请求中包含http Referer标头。有关更多详细信息,请参见Restricting Access to a Specific HTTP Referrer