Объединение двух условий в политике Amazon S3 Bucket
Скажем, у меня есть условие, например, где я хочу, если запрос не с этих IPS ["192.0.2.0/24","203.0.113.0/24"]
и если запрос не имеет реферера среди следующих [example1.com, example2.com ]
тогда отрицай это. Я знаю, индивидуально, я могу сделать что-то вроде этого:
{
"Sid": "6",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my_bucket/*",
"Condition": {
"IpAddress":{
"aws:SourceIp": ["192.0.2.0/24","203.0.113.0/24"]
}
}
}
{
"Sid": "7",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::indeev5-dev-media/*/video/*",
"Condition": {
"StringNotLike": {
"aws:Referer": [
"http://example1.com/*",
"http://example2.com/*",
]
}
}
}
но как я могу сделать "и" здесь. Т.е. проверить оба условия одновременно. Я разместил вопрос, который вроде преследует ту же цель, поэтому любые указатели будут высоко оценены здесь. Короче говоря, я хочу запретить все запросы, которые не из списка рефералов, кроме тех, которые из списка ip. Спасибо
1 ответ
Похоже, что ваше логическое требование:
- Разрешить любой запрос, где находится IP
["192.0.2.0/24","203.0.113.0/24"]
- Разрешить любой запрос, где находится реферер
["http://example1.com/*", "http://example2.com/*"]
Таким образом, вы можете настроить его как ИЛИ, а не как И НЕ, и, используя только РАЗРЕШИТЬ, а не ДЕНЬ. Это дает преимущество, позволяющее политикам пользователя работать (которые могут быть переопределены при использовании DENY).
Политика будет состоять из двух частей:
- РАЗРЕШАТЬ
"Condition": {"IpAddress":{"aws:SourceIp": ["192.0.2.0/24","203.0.113.0/24"]}}
- РАЗРЕШАТЬ
"Condition": {"StringLike": {"aws:Referer": ["http://example1.com/*","http://example2.com/*",]}}
(Я не проверял это.)