即使存储桶策略允许此 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 存储桶内容的主要内容,如果未能解决你的问题,请参考以下文章
AWS S3 存储桶策略:如何授予对 EC2 实例的访问权限?
AWS IAM 策略:如何更改 AWSLambdaFullAccess 策略以仅允许访问一个 S3 存储桶?