Подробные разрешения для политик в AWS
Я хочу, чтобы пользователи, созданные с помощью IAM, могли просматривать одно конкретное ведро в консоли управления. Кроме того, я хочу ограничить его папкой внутри корзины, чтобы разрешения были:
Доступ к консоли S3 для my-bucket/folder/*
Как бы я сделал это с помощью генератора политики? В настоящее время у меня есть:
{
"Statement": [
{
"Effect": "Allow",
"Action": "s3:*",
"Resource": "*"
}
]
}
Тем не менее, когда я изменяю расположение ресурса - arn:aws:s3:::my-bucket/folder
- он не дает пользователю возможности вообще использовать консоль. Возможно ли это сделать и что мне нужно сделать, чтобы это исправить?
1 ответ
Решение
Политика для этого напомнила мне сделать аппроксимацию Эйлера, но я так и сделал (с пояснениями):
{
"Statement": [
{ // first, allow unlimited access for S3
"Effect": "Allow",
"Action": "s3:*",
"Resource": "*"
},
{ // second, deny access to all buckets except for the particular bucket
"Action": [
"s3:*"
],
"Effect": "Deny",
"Resource": [
list-of-my-other-buckets
]
},
{ // third, since we've already given * permissions, the bucket has full
// permissions, and we need to restrcit all the permissions we don't want to give
"Action": [
"s3:AbortMultipartUpload",
"s3:CreateBucket",
"s3:DeleteBucket",
"s3:DeleteObject",
"s3:DeleteObjectVersion",
"s3:GetBucketAcl",
"s3:GetBucketNotification",
"s3:GetBucketPolicy",
"s3:GetBucketRequestPayment",
"s3:GetObjectAcl",
"s3:GetObjectVersion",
"s3:GetObjectVersionAcl",
"s3:PutBucketAcl",
"s3:PutBucketNotification",
"s3:PutBucketPolicy",
"s3:PutBucketRequestPayment",
"s3:PutBucketVersioning",
"s3:PutObjectAcl",
"s3:PutObjectVersionAcl"
],
"Effect": "Deny",
"Resource": [
"arn:aws:s3:::my-bucket/*"
]
}
]
}