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

Posted

技术标签:

【中文标题】即使存储桶策略允许此 IP 地址,也无法下载 S3 存储桶内容【英文标题】:Cannot download S3 bucket contents even though bucket policy allows this ip address 【发布时间】:2018-05-20 15:59:45 【问题描述】:

我正在尝试使用我的一个使用 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 卷曲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"
                ]
            
        
    
]

然后我运行了相同的命令,再次加引号和不加引号:

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 存储桶中下载我的文件。我应该有权限,但没有任何工作。

【问题讨论】:

【参考方案1】:

在您的 s3 存储桶策略中,您提供了10/8 范围内的允许 IP。但是您要访问的 s3 端点不在您的私有 10/8 网络上;他们有公共 IP,您的请求将被视为来自您的公共 IP,而不是您的私有 IP。

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

tl;dr:将您的公共 IP,而不是您的私有 IP。

【讨论】:

将其更改为公共 IP 地址有效。我不敢相信我错过了,谢谢!

以上是关于即使存储桶策略允许此 IP 地址,也无法下载 S3 存储桶内容的主要内容,如果未能解决你的问题,请参考以下文章

允许 lambda 函数访问 S3 存储桶但阻止外部 IP

s3 策略允许在同一语句中使用多个 IP

AWS S3 存储桶策略:如何授予对 EC2 实例的访问权限?

AWS IAM 策略:如何更改 AWSLambdaFullAccess 策略以仅允许访问一个 S3 存储桶?

尝试使用基于S3资源的策略允许Lambda访问S3,为什么它不起作用?

即使存在 S3 存储桶,也无法对别名目标进行精细处理