我正在努力让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用户上传/下载权限,但我很难让这个工作。
任何建议都将不胜感激!
答案 0 :(得分:10)
我设法弄清楚为了上传工作我需要包含动作“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/*"
]
}
]
}
答案 1 :(得分:2)
你可以做的第一件事就是弄清楚它的行为是错误还是资源范围,你可以一次一个这两个政策:
"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"
]
如果两者都失败,那么你的行动和资源都是错误的。
祝你好运