我刚刚设置了我的AWS S3。 我的应用程序使用full-admin-acces-keys,但由于这可能有风险,我想设置一个带有IAM组的IAM用户,并且只允许他使用S3-stuff。 我的水桶位于欧洲中心1号,它的名字是' MYBCKET'在以下政策中:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::MYBCKET"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::MYBCKET/*"
]
}
]
}
这不起作用。如果我向用户提供以下有效的政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": [
"*"
]
}
]
}
它必须是资源肯定的东西。
有人可以向我解释资源是由什么组成的,这样我才能理解并希望找到错误?
只是告诉你:我确信我将我的桶名称拼写正确,并且我在资源arn:aws:s3:::MYBCKET/*
和arn:aws:s3:::MYBCKET
中尝试了不同的组合以及其他一些不起作用的组合。
感谢您的回答和时间。
答案 0 :(得分:2)
我认为您的策略没有任何问题,如果意图是用户应该以编程方式访问存储桶。
如果用户还需要能够通过控制台访问策略,您可以尝试这样做,这将允许用户列出存储桶:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:ListAllMyBuckets"
],
"Resource": "arn:aws:s3:::*"
},
{
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3::: MYBCKET"]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": ["arn:aws:s3::: MYBCKET/*"]
}
]
}