gpt4 book ai didi

amazon-s3 - 亚马逊S3 : Grant anonymous access from IP (via bucket policy)

转载 作者:行者123 更新时间:2023-12-03 06:59:51 24 4
gpt4 key购买 nike

我有一个 Amazon S3 存储桶,并且希望将其可供特定计算机上的脚本使用,而无需部署登录凭据。所以我的计划是只允许从该机器的 IP 进行匿名访问。我对亚马逊云还很陌生,存储桶策略看起来是不错的选择。我将以下策略添加到我的存储桶中:

{
"Version": "2008-10-17",
"Id": "S3PolicyId1",
"Statement": [
{
"Sid": "IPAllow",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::name_of_my_bucket/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"my_ip_1/24",
"my_ip_2/24"
]
}
}
}
]
}

但是匿名访问还是不行。为了进行测试,我在 S3 管理控制台中向“Everyone”授予了访问权限。这很好用,但显然不是我想要做的。 ;-) 有什么提示我做错了什么以及如何让它工作吗?

我的用例是使用 EC2 和 S3 进行一些数据处理,因此通过 IP 进行访问控制比摆弄用户帐户要简单得多。如果有更简单的解决方案,我愿意接受建议。

最佳答案

But anonymous access still does not work.

到底什么操作仍然不起作用,您是否偶然尝试列出存储桶中的对象?

用例常常隐含地涉及 Amazon S3除了已由策略明确定位的资源之外,API 调用还可以处理不同的资源类型。具体来说,您需要了解 Operations on the Service 之间的区别(例如 ListAllMyBuckets )、Operations on Buckets (例如 ListBucket )和 Operations on Objects (例如 GetObject )。

特别是,您的策略的 Resource 规范当前仅处理存储桶内的对象 (arn:aws:s3:::name_of_my_bucket/*),这意味着您无法列出存储桶中的对象(尽管如此,您应该能够放置/获取/删除对象) - 为了还允许通过 ListBucket 列出存储桶中的对象,您需要相应修改您的政策如下:

{
"Version": "2008-10-17",
"Id": "S3PolicyId1",
"Statement": [
{
// ... your existing statement for objects here ...
},
{
"Sid": "IPAllow",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::name_of_my_bucket",
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"my_ip_1/24",
"my_ip_2/24"
]
}
}
}
]
}

关于amazon-s3 - 亚马逊S3 : Grant anonymous access from IP (via bucket policy),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16141362/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com