#amazon-web-services #amazon-s3 #protected
#amazon-web-services #amazon-s3 #защищено
Вопрос:
ОБНОВЛЕНИЕ: добавлена политика CORS (ниже), но она по-прежнему не работает. Пожалуйста, кто-нибудь, помогите мне найти проблему.
Я боролся с этим в течение нескольких часов. У меня есть ведро под названием test-pcrp. Я хочу, чтобы видео в этом сегменте были доступны для просмотра только на моем веб-сайте. Ниже приведены настройки корзины, политика корзины и CORS, которые у меня есть. Однако, независимо от того, что я делаю, видео недоступно для просмотра на сайте.
Настройки корзины:
ОТКЛЮЧИТЬ блокировку всего общедоступного доступа
ВКЛЮЧИТЬ блокировку общедоступного доступа к сегментам и объектам, предоставленным через новые списки управления доступом (ACL)
Заблокировать общедоступный доступ к сегментам и объектам, предоставленным через любые списки управления доступом (ACL)
ОТКЛЮЧИТЬ блокировку общедоступного доступа к сегментам и объектам, предоставленным через новые политики общедоступных сегментов или точек доступаОТКЛЮЧИТЕ
публичный и межаккаунтный доступ к корзинам и объектам с помощью любых политик общедоступных корзин или точек доступа
Политика:
{
"Version": "2012-10-17",
"Id": "http referer policy example",
"Statement": [
{
"Sid": "Allow get requests originating from www.dev.pcrprograms.org and dev.pcrprograms.org.",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::test-pcrp/*",
"Condition": {
"StringLike": {
"aws:Referer": [
"https://dev.pcrprograms.org/*",
"http://dev.pcrprograms.org/*"
]
}
}
}
]
}
Политика CORS
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"GET",
"HEAD"
],
"AllowedOrigins": [
"https://dev.pcrprograms.org"
],
"ExposeHeaders": [],
"MaxAgeSeconds": 3000
}
]
Комментарии:
1. К вашему сведению, ваше условие ссылки включает
dev.pcrprograms.org
, но неwww.dev.pcrprograms.org
включает. С помощью чего вы проводите тестирование?2. Домен на реальном сайте не включает www, поэтому это домен, на котором я тестирую.
3. Пожалуйста, поясните, что вы подразумеваете под «не работает». Что отображается в окне консоли разработчика в веб-браузере? Какое поведение отображается в сетевом окне веб-браузера?
Ответ №1:
Вероятно, ваша политика не работает, поскольку объекты в Amazon S3 по умолчанию являются частными. Добавление Deny
политики не предоставляет доступ — оно просто еще больше ограничивает доступ.
Однако использование referer
для управления доступом ненадежно. Подделка ссылок довольно проста, и на нее не следует полагаться как на средство безопасности.
Предпочтительный вариант — заставить серверную часть генерировать предварительно подписанные URL-адреса Amazon S3, которые являются ограниченными по времени URL-адресами, предоставляющими временный доступ к частным объектам, хранящимся в Amazon S3.
Комментарии:
1. Я не беспокоюсь о подделке ссылок, поскольку это будет происходить в зоне членства, пользователи которой не имеют серьезных технических навыков. По этой же причине я не могу использовать URL-адреса с ограниченным временем. Эти видеоролики будут доступны на сайте участника в обозримом будущем. Я обновил свою политику корзины, но я по-прежнему не могу просматривать свои видео на своем веб-сайте. Есть предложения о том, что мне нужно изменить, чтобы это работало?
2. Предварительно подписанные URL-адреса генерируются вашей серверной системой и не требуют навыков пользователя. По сути, это способ сказать: «Хорошо, вы авторизованы для доступа к этому файлу, вот ссылка». Я вижу, что вы используете WordPress, так что это можно сделать с помощью PHP. См.: предварительный URL-адрес для объекта AWS S3 с помощью PHP
3. Я бы предложил отладку следующим образом: сначала удалите
referer
условие в политике корзины. Это должно сделать объекты в корзине доступными. Затем верните условие и выясните, что может привести к сбою. Проверьте все сообщения об ошибках в выводе консоли вашего браузера.4. Хорошо, указанный URL-адрес НЕ работает для меня. Может кто-нибудь, пожалуйста, помогите мне разобраться в причине, по которой не работают вышеуказанные настройки и политика корзины? Единственная ошибка, которую показывает консоль, — «np равно нулю», и я не могу найти никакой информации об этом.
5. Вы протестировали код, который генерирует предварительно подписанный URL-адрес? Он должен возвращать URL-адрес, который вы можете ввести в браузер для извлечения объекта.