Объекты Amazon S3: возможно ли ограничить общедоступную политику чтения только некоторыми IP-адресами?

Есть ведро с общедоступной политикой чтения. Теперь я хочу ограничить доступ к некоторым объектам, чтобы быть доступным только с некоторых IP-адресов. Это возможно?

Я также планирую добавить CloudFront. Что мне сделать, чтобы сохранить одинаковые настройки для каждого объекта?

Спасибо!


person Dorian    schedule 31.01.2013    source источник


Ответы (1)


Вы можете использовать политику корзины S3. Но вместо отдельных файлов он будет применен к отдельным папкам в корзине. Вы можете использовать политику следующим образом:

  {
        "Version": "2008-10-17",
        "Id": "testPolicy",
        "Statement": [

            {
                "Sid": "1",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "*"
                },
                "Action": "s3:GetObject",
                "Resource": "arn:aws:s3:::bucketname/subfolder/subfolder2/*",
                "Condition": {
                    "IpAddress": {
                        "aws:SourceIp": [
                            "xxx.xxx.xxx.xxx/xx",
                            "xxx.xxx.xxx.xxx/xx"
                        ]
                    }
                }
            }
        ]
    }

Введите имя корзины, имена папок и IP-адреса.

Примечание. Попробуйте сначала использовать непроизводственный сегмент.

person Ruchit Rami    schedule 31.01.2013
comment
Хорошо, спасибо за ответ. Однако мне действительно нужно работать с каждым файлом, а не с папками. Есть ли способ напрямую обновить ACL объекта, чтобы ограничить доступ к некоторым IP-адресам? - person Dorian; 31.01.2013
comment
@Dorian По сути, это одно и то же, но вместо оператора со значением подстановочного знака в определении Resource у вас будет несколько операторов, каждый из которых конкретно ссылается на конкретный ресурс, к которому вы хотите применить политику. - person Mike Brant; 01.02.2013
comment
@Dorian Как заметил Майк, вы можете определить его и для отдельных объектов. Моя ошибка, что я этого не указал. - person Ruchit Rami; 01.02.2013