Объединение двух условий в политике 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/*",]}}

(Я не проверял это.)

Другие вопросы по тегам