将Amazon S3访问限制为单个HTTPS主机

时间:2018-05-21 19:39:41

标签: amazon-web-services nginx amazon-s3 https reverse-proxy

我想通过反向代理(Nginx)代理Amazon S3存储桶。

为了更高的安全性,我想禁止对存储桶的读取访问,除了我运行代理的HTTPS主机之外的任何内容。

有没有办法为此任务配置Amazon S3?

请提供配置。

我考虑在S3存储桶名称中添加密码,但它不是解决方案,因为我们还需要对存储桶进行签名上传,因此存储桶名称将公开提供。

1 个答案:

答案 0 :(得分:0)

如果您的反向代理具有公共IP地址,那么您可以将此策略添加到Amazon S3存储桶:

{
  "Version": "2012-10-17",
  "Id": "S3PolicyId1",
  "Statement": [
    {
      "Sid": "IPAllow",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::examplebucket/*",
      "Condition": {
         "IpAddress": {"aws:SourceIp": "54.240.143.22/32"}
      } 
    } 
  ]
}

如果请求来自特定IP地址,则授予GetObject权限。默认情况下,Amazon S3是私有的,因此仅在该特定情况下授予访问权限。您还需要授予对IAM用户/组的访问权限(通过IAM,一个存储桶策略),以便更新存储桶内容。

请参阅:Bucket Policy Examples - Amazon Simple Storage Service