Простой пример, чтобы ограничить доступ к файлам Cloudfront (S3) для некоторых пользователей, но не для других

Я только начинаю работать с разрешениями на AWS S3 и Cloudfront, поэтому, пожалуйста, будьте со мной полегче.

Два основных вопроса:

  1. Я хочу разрешить доступ некоторым пользователям (например, тем, кто вошёл в систему), но запретить другим. Я предполагаю, что мне нужно использовать ACL вместо политики корзины, поскольку первая более настраиваема, поскольку вы можете идентифицировать пользователя в URL-адресе с параметрами запроса. Прежде всего, это правильно? Может ли кто-нибудь указать мне на самое простое описание на английском языке того, как это сделать для каждого файла/пользователя за файлом/пользователя? Документация по ACL меня чертовски смущает.

  2. Я также хотел бы ограничить доступ, чтобы люди могли просматривать контент только на my-site.com, а не на your-site.com. К сожалению, пример политики корзины документации S3 для этого не имеет влияние на доступ к моей демонстрационной корзине (см. код ниже, немного адаптированный из документации AWS). Более того, если мне нужно в первую очередь сосредоточиться на разрешении доступа для каждого пользователя, хочу ли я вообще определять политику сегментов?

Я понимаю, что даже не касаюсь того, как заставить это работать в контексте Cloudfront (конечная цель), но любые мысли по вопросам 1 и 2 были бы очень признательны, и упоминание Cloudfront было бы бонусом на этом этапе.

`

{
    "Version": "2008-10-17",
     "Id":"http referer policy example",
    "Statement": [
        {
            "Sid": "AllowPublicRead",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-bucket/*",
            "Condition": {
                "StringLike": {
                    "aws:Referer": [
                        "https://mysite.com/*",
                        "https://www.mysite.com/*"
                    ]
                }
            }
        }
    ]
}

person tim peterson    schedule 18.09.2013    source источник


Ответы (1)


  1. Чтобы ограничить доступ к CDN, чтобы обслуживать то, что мы называем «частным контентом», вам необходимо использовать API для создания подписанных URL-адресов, и вы можете определить срок действия URL-адреса. Дополнительная информация здесь.
  2. Вы можете использовать учетную запись Origin Access — как описано здесь — для предотвращения передачи контента за пределы облачного интерфейса.

Я думал, что у меня есть код из прошлого проекта, которым я мог бы поделиться, но этого не произошло. Но, по крайней мере, я смог покопаться в своих закладках и найти одну из ссылок, которая помогла мне в этом процессе, и здесь, в stackoverflow, есть еще один пост, в котором упоминается та же ссылка. См. ниже ссылку на ссылку и на пост.

http://improve.dk/how-to-set-up-and-serve-private-content-using-s3/

частный контент Cloudfront + архитектура подписанных URL-адресов

Ну, ему два года, возможно, вам придется немного изменить его здесь и там, но вы поймете, в чем суть.

person Felipe Garcia    schedule 18.09.2013
comment
спасибо @Felipe, у вас есть код на любом языке, который может привести пример? - person tim peterson; 19.09.2013
comment
У меня могут быть какие-то кусочки из прошлого проекта. Я покопаюсь в этом и отпишусь вам. - person Felipe Garcia; 19.09.2013
comment
К сожалению, я не нашел исходный код, который я создал, но, по крайней мере, я нашел некоторые ссылки, которые я использовал в прошлом. Смотрите обновленный ответ. - person Felipe Garcia; 19.09.2013