Na minha experiência, tem sido prática bastante comum criar uma política que apenas conceda acesso ao intervalo e ao conteúdo.
Eu costumava usar uma política como essa (não quero permitir que esse usuário substitua as permissões de depósito ou exclua o intervalo etc.):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowS3Browse",
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:ListAllMyBuckets"
],
"Resource": "*",
},
{
"Sid": "GrantS3BucketAccess",
"Effect": "Allow",
"Action": [
"s3:AbortMultipartUpload",
"s3:DeleteObject*",
"s3:Get*",
"s3:List*",
"s3:PutBucketAcl",
"s3:PutObject",
"s3:PutObjectAcl",
"s3:RestoreObject"
],
"Resource": [
"arn:aws:s3:::bucket",
"arn:aws:s3:::bucket/*"
]
}
]
}