即使存储桶策略允许此IP地址,也无法下载S3存储桶内容



我正在尝试使用Curl和WGET使用我的EC2实例之一从我的S3存储桶下载文件。我最初以

为本设置了我的存储策略
{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "HelpGetObject",
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:GetObject",
        "Resource": ["arn:aws:s3:::name_of_bucket/*"],
        "Condition": {
            "IpAddress": {
                "aws:SourceIp": [
                    "10.152.0.0/15",
                    "10.154.0.0/17",
                    "10.154.128.0/17"
                ]
            }
        }
    }
]
}

然后,我去了我的实例,该实例具有IP地址10-152-17-111,并用和不引用的wget/curl

wget https://s3.amazonaws.com/name_of_bucket/my_file.tar.gz

这给了我403 curl https://s3.amazonaws.com/name_of_bucket/my_file.tar.gz

这给了我403

现在我更改了政策,以便所有S3操作都可以使用,并且我的特定IP地址均包含

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "HelpGetObject",
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:*",
        "Resource": [
            "arn:aws:s3:::name_of_bucket",
            "arn:aws:s3:::name_of_bucket/*"
        ],
        "Condition": {
            "IpAddress": {
                "aws:SourceIp": [
                    "10.152.0.0/15",
                    "10.154.0.0/17",
                    "10.154.128.0/17",
                    "10.152.17.111/32"
                ]
            }
        }
    }
]
}

i然后以和没有引号的方式再次运行相同的命令:

wget https://s3.amazonaws.com/name_of_bucket/my_file.tar.gz

返回403

curl https://s3.amazonaws.com/name_of_bucket/my_file.tar.gz

返回403

我不知道下一步该怎么做,我只想从S3存储桶中下载文件。我应该有权限,但没有任何可行。

在您的S3存储牌策略中,您在10/8范围内提供允许的IP。但是您要击中的S3端点并不在您的私有10/8网络上;他们有公共IPS,您的请求将被视为源自您的您的公共IP,而不是您的私人IP。

https://wtfismyip.com/text是确定您的公共IP的一种方法。显然,这将根据您使用的网络而改变,并且还适用于该网络上的其他任何人,这是基于IP的权限不是授予S3访问的共同方法的两个原因。如果您的S3内容确实是公开的,而不是机密的,则可以考虑在上传时间将public-read ACL附加到对象上;然后,遗愿政策是无关紧要的。

tl; dr :将您的公共IP放入策略中,而不是私人IP。

最新更新