У нас есть одна корзина, доступная только для всех пользователей IAM, за исключением нескольких:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": [
"s3:PutObject",
"s3:Delete*"
],
"Resource": [
"arn:aws:s3:::XXXXXXX",
"arn:aws:s3:::XXXXXXX/*"
],
"Condition": {
"StringEquals": {
"aws:PrincipalType": "User"
},
"StringNotLike": {
"aws:userId": [
"AIDAXXXXXXX"
"AIDAXXXXXXX"
]
}
}
}
]
}
Теперь мы перевели некоторых пользователей в AWS SSO. Нам нужно ограничить доступ к корзине для всех пользователей единого входа, кроме немногих. Для этого я создал политику корзины:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Principal": "*",
"Action": [
"s3:PutObject",
"s3:Delete*"
],
"Resource": [
"arn:aws:s3:::XXXX",
"arn:aws:s3:::XXXXX/*"
],
"Condition":
"StringNotLike": {
"aws:userId": [
"AROAxxxxxxxx:*",(AWS SSO group roleID)(for whose we want to give access)
"AIDAXXXXXXX",
"AiDAXXXXXXX"
]
}
}
}
]
}
Но это блокирует все другие роли IAM, которые пытаются получить доступ с сервера. Мы не можем упоминать все эти roleID в условии, потому что есть так много ролей.
Итак, нам нужна политика сегментов, которая позволяет только нескольким пользователям IAM & Federated (SSO) и всем ролям IAM, которые пытаются для доступа с сервера.