我限制通过IP访问S3怎么办?

时间:2018-08-29 11:40:48

标签: amazon-web-services amazon-s3

我有一个带有以下语句的存储桶my_super_bucket

"Statement": [
        {
            "Sid": "Stmt4214214",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::my_super_bucket/*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": [
                        "my_super_ip_1",
                        "my_super_ip_2"
                    ]
                }
            }
        }
    ]

以前,存储桶对列表对象具有公共权限,因此,由于我只允许这两个IP,我删除了该特权。但是,我仍然可以从其他IP访问此存储桶中的任何文件。进一步的故障排除,我采取了以下三个步骤:

  1. 我认为可能是由于CloudFront缓存所致,所以尝试直接通过S3 URL访问文件,仍然可以下载。
  2. 也为条件添加了"NotIpAddress": { "aws:SourceIp": "*"},仍然可以访问文件。
  3. 删除了每个文件的读取对象权限。现在,无论SourceIP,我都无法访问该文件。

那么,我如何才能实现只允许某些IP访问特定存储桶中任何文件的目标?在IRC上,一个人告诉我这些策略仅适用于AWS CLI,但是还必须有一种方法来限制通过URL的访问,对吗?

1 个答案:

答案 0 :(得分:0)

正如库什·维亚斯(Kush Vyas)的评论中所提到的那样,更改策略以使其不再允许某个IP,而拒绝其他所有IP来达到目的。