Вы можете использовать префиксы в политиках IAM для управления ролями IAM или пользователями IAM.
Здесь есть отличная статья о разрешениях уровня пользователя IAM для корзин S3: https://aws.amazon.com/blogs/security/writing-iam-policies-grant-access-to-user-specific-folders.-in-an-amazon-s3-bucket/
Но подведем итог, если вы хотите перейти к разрешениям на уровне пользователя, у вас в конечном итоге будет одна сущность IAM для каждого пользователя. Политики будут выглядеть следующим образом
{
"Version":"2012-10-17",
"Statement": [
{
"Sid": "AllowGroupToSeeBucketListInTheConsole",
"Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::*"]
},
{
"Sid": "AllowRootAndHomeListingOfCompanyBucket",
"Action": ["s3:ListBucket"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::my-company"],
"Condition":{"StringEquals":{"s3:prefix":["","home/"],"s3:delimiter":["/"]}}
},
{
"Sid": "AllowListingOfUserFolder",
"Action": ["s3:ListBucket"],
"Effect": "Allow",
"Resource": ["arn:aws:s3:::my-company"],
"Condition":{"StringLike":{"s3:prefix":
[
"home/${aws:username}/*"
"home/${aws:username}"
]
}
}
},
{
"Sid": "AllowAllS3ActionsInUserFolder",
"Action":["s3:*"],
"Effect":"Allow",
"Resource": ["arn:aws:s3:::my-company/home/${aws:username}/*"]
}
]
}
Для ролей вы будете следовать аналогичному шаблону, однако вам не понадобится столько ролей IAM, поскольку многие пользователи, скорее всего, попадут в одну и ту же роль и, следовательно, смогут делиться ими.
{
"Version":"2012-10-17",
"Statement": [
...
{
"Sid": "AllowAllS3ActionsInUserFolder",
"Action":["s3:*"],
"Effect":"Allow",
"Resource": [
"arn:aws:s3:::my-folder-1/${aws:username}/*",
"arn:aws:s3:::my-folder-2/${aws:username}/*"
]
}
...
]
}
Помните, что в политиках IAM вы можете перечислить несколько ресурсов (папок) и действий (файловые операции, такие как создание, список и т. д.) для одного оператора и нескольких операторов (либо allow
, либо deny
в комбинациях действий с ресурсами).
person
Cheruvian
schedule
10.08.2018