【发布时间】:2020-08-22 23:17:01
【问题描述】:
我有一个供应商需要每晚将 CSV 文件和 ZIP 文件上传到 AWS S3 存储桶。显然,我不希望他们看到/访问我的任何其他存储桶。在与他们反复多次后,他们可以完成这项夜间任务的唯一方法是将以下策略应用于他们的用户所属的 IAM 组:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "s3:*",
"Resource": "arn:aws:s3:::*"
}
]
}
这显然不理想,我真的希望他们的用户有一个更严格的政策。我一直在使用IAM Policy Simulator 测试一堆其他策略,在测试 ListBucket 和 PutObject 时,它们都导致“拒绝 - 隐式拒绝(无匹配语句)”结果。我还从存储桶中删除了“阻止所有公共访问”设置,认为它正在创建固有的拒绝状态。
我尝试过的许多策略中的一些是:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::mybucket/*"
}
]
}
和
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"s3:ListBucket"
],
"Resource":"arn:aws:s3:::mybucket"
},
{
"Effect":"Allow",
"Action":[
"s3:PutObject",
"s3:GetObject"
],
"Resource":"arn:aws:s3:::mybucket/*"
}
]
}
和
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:ListAllMyBuckets"
],
"Resource": "arn:aws:s3:::*"
},
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::mybucket",
"arn:aws:s3:::mybucket/*"
]
}
]
}
对此的任何帮助表示赞赏。提前感谢您抽出几分钟的时间。
【问题讨论】:
-
该供应商是否通过 Web 控制台或 api/sdk 访问?
-
API/CLI。抱歉,应该澄清一下。
-
您是否为要模拟的 ListBucket 和 PutObject 指定了存储桶 arn?如果是,它与
mybucket匹配吗? -
我没有在模拟中指定存储桶 ARN。我刚刚做了,它通过了。如果我将此策略部署到 IAM 组,是否有任何原因不起作用?我目前正在测试上面提到的最后一个。
-
您需要发布有关 IAM 组附加了哪些策略的更多详细信息,以便我们进行调试。
标签: amazon-s3 amazon-iam