Защита объектов AWS S3 от прямого доступа по URL - PullRequest
0 голосов
/ 15 января 2019

У меня есть угловое приложение, служащее статическим размещенным сайтом из aws s3, упакованное дистрибутивом Cloudfront. Кроме того, это угловое приложение получает доступ ко всем изображениям, таким как изображения профиля, из другой корзины S3 (которая со временем увеличивается). Эта корзина также включена в дистрибутив облачного фронта.

Мое намерение состоит в том, чтобы запретить кому-либо прямой доступ к этим изображениям с помощью URL. Эти изображения должны быть доступны только из моего углового приложения, а не снаружи.

Я попытался добавить конфигурацию CORS в мое ведро S3 следующим образом:

<CORSRule>
<AllowedOrigin>https://*.XXXX.com</AllowedOrigin>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>*</AllowedHeader>

Кроме того, я добавил белый список происхождения в моем облачном фронте для моего профиля изображения профиля. Тем не менее я не могу получить доступ к своим фотографиям профиля из браузера или из моего приложения. Это бросок 403. Может кто-нибудь помочь здесь, пожалуйста.

1 Ответ

0 голосов
/ 15 января 2019

Способ сделать это - создать удостоверение Cloud Front Origin Identity и прикрепить его к вашему дистрибутиву. Если вы сделаете это через консоль, Cloud Front сама создаст политику корзины S3, которая помешает прямому доступу. (https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html#private-content-creating-oai)

PS: распространение CloudFront может занять некоторое время для репликации.

...