У меня есть S3 Bucket («myBucket»), к которому имеет доступ только пользователь, назовем его «s3user».У меня есть политика IAM, прикрепленная к этому пользователю, следующим образом:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource": "arn:aws:s3:::myBucket"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucket",
"s3:GetObjectVersion"
],
"Resource": "*"
}
]
}
Я прикрепил эту политику IAM к пользователю "s3User", предоставив доступ только для чтения к "myBucket".Пока все хорошо.
Теперь я добавил вторую политику, но теперь не политику IAM, а политику S3 Bucket, а именно:
{
"Version": "2012-10-17",
"Id": "S3PolicyId1",
"Statement": [
{
"Sid": "IPAllow",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::myBucket/*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": [
"1.2.3.4/27",
"2.3.4.1/28",
"5.6.7.8/29"
]
}
}
}
]
}
Я ожидал, что это явное отрицание приведет котклонить все запросы, не поступающие из указанных исходных IP-диапазонов.Но он все еще позволяет мне перечислять содержимое корзины с других IP-адресов.Кажется, что политика сегмента не имела никакого эффекта вообще.
Согласно этой статье AWS S3 , когда у вас есть несколько политик, все они применяются, и явные запреты имеют приоритет над явными разрешениями, так что я думаю, что должен работать, но это не так.
Есть идеи, почему я не могу отклонять запросы к корзине на основе адресов sourceIP?
Спасибо!