33

有没有办法根据客户端 IP 地址限制对存储在 Amazon S3 中的文件的访问?

我有一个文件存储在那里,只能通过特定的 IP 地址访问。这个怎么做?

4

2 回答 2

40

是的,虽然我自己没有使用过这个。

S3 支持使用“访问策略语言”对存储桶和其中的对象进行精细控制。有特定的白名单和黑名单 IP 声明可用。但是,您必须编写 APL 语句并上传它们。

http://docs.amazonwebservices.com/AmazonS3/latest/dev/AccessPolicyLanguage.html

以下是 2 个条件部分示例:

白名单

"Condition" :  {
       "IpAddress" : {
          "aws:SourceIp" : ["192.168.176.0/24","192.168.143.0/24"]
      }
}

黑名单

"Condition" :  {
       "NotIpAddress" : {
          "aws:SourceIp" : ["192.168.176.0/24","192.168.143.0/24"]
      }
}
于 2012-07-12T17:58:50.673 回答
24

Amazon 在其 S3 文档中的“存储桶策略示例”下的“限制对特定 IP 地址的访问”中对此进行了描述:

此语句中的条件标识 54.240.143.* 允许的 IP 地址范围,但有一个例外:54.240.143.188。

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

您可以在 AWS S3 控制台中添加类似的内容。选择您的存储桶,单击属性选项卡,然后单击权限。单击“添加存储桶策略”并将其粘贴到弹出对话框的表单中。

我修改了 Amazon 的示例,以显示如何通过提供 JSON 数组而不是字符串来将多个 IP 范围包含在策略中。“1.2.3.4/32”的“aws:SourceIp”条目意味着单个 IP 地址 1.2.3.4 也被授予访问权限。

于 2015-07-10T00:46:16.570 回答