首页 > 解决方案 > 通过 IP 限制对 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"
                    ]
                }
            }
        }
    ]

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

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

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

标签: amazon-web-servicesamazon-s3

解决方案


正如 Kush Vyas 在评论中提到的那样,改变策略,而不是允许某个 IP,它会拒绝所有其他 IP 的伎俩。


推荐阅读