我正在努力让AWS S3 IAM用户策略发挥作用,这是我当前IAM用户的策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1424859689000",
"Effect": "Allow",
"Action": [
"s3:DeleteObject",
"s3:GetObject",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::vault-us/*"
]
}
]
}
当我在S3存储桶中创建一个新对象时,我会收到一个403 Forbidden错误,但当我使用名为"AmazonS3FullAccess"的托管策略时,一切都很好。
我想做的是限制某些IAM用户的上传/下载权限,但我很难做到这一点。
如有任何建议,我们将不胜感激!
我设法弄清楚,为了上传工作,我需要包含操作"s3:PutObjectAcl",下面是我的IAM策略示例:
{
"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:::vault-us"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": [
"arn:aws:s3:::vault-us/*"
]
}
]
}
你能做的第一件事就是弄清楚是错误的操作还是资源范围,你能一次一个地执行这两个策略吗:
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::vault-us/*"
]
和
"Action": [
"s3:DeleteObject",
"s3:GetObject",
"s3:PutObject"
],
"Resource": [
"*"
]
如果第一个有效,第二个失败,那么你没有足够的权限来执行操作,例如,尝试添加listBucket或类似的内容(我倾向于添加所有可能的内容,然后逐渐删除它们,直到它崩溃)。
如果第一个坏了,第二个工作,那么你的资源声明是错误的,我发现最常见的修复方法是尝试添加:
"Action": [
"s3:DeleteObject",
"s3:GetObject",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::vault-us/*",
"arn:aws:s3:::vault-us"
]
如果两者都失败了,那么很可能是你的行为和资源都错了。
好运