I have a user foo with the following privileges (it's not a member of any group):
{
"Statement": [
{
"Sid": "Stmt1308813201865",
"Action": "s3:*",
"Effect": "Allow",
"Resource": "arn:aws:s3:::bar"
}
]
}
That user however seem unable to upload or do much of anything until I grant full access to authenticated users (which might apply to anyone). This still doesn't let the user change permission as boto is throwing an error after an upload when it tries to do do key.set_acl('public-read')
.
Ideally this user would have full access to the bar
bucket and nothing else, what am I doing wrong?
@cloudberryman's answer is correct but I like to make things as short as possible. This answer can be reduced to:
Are you aware of the AWS Policy Generator?
You need to grant s3:ListBucket permission to the bucket itself. Try the policy below.
The selected answer didn't work for me, but this one did:
Credit: http://mikeferrier.com/2011/10/27/granting-access-to-a-single-s3-bucket-using-amazon-iam/
If you've been pulling your hair out because you cannot figure out why Cyberduck is not being able to set object ACLs but it works with another client (like Panic Transmit) here is the solution:
You need to add
s3:GetBucketAcl
to your Action list, eg:Of course you don't need to do this if you are less restrictive with
s3:*
but I think this is good to know.There is an official AWS documentation at Writing IAM Policies: How to Grant Access to an Amazon S3 Bucket
Just copy and paste the appropriate rule and change the "Resource" key to your bucket's ARN in all Statements.
For programamtic access the policy should be:
And for console access access should be: