Назад | Перейти на главную страницу

Доступ к CloudFront + S3 запрещен с использованием подписанных файлов cookie

Я пытаюсь интегрировать подписанные файлы cookie для дистрибутива CloudFront, который питается из корзины S3, но получает сообщения об ошибках отказа в доступе:

<Error>
    <Code>AccessDenied</Code>
    <Message>Access Denied</Message>
    <RequestId>BLAH BLAH</RequestId>
    <HostId>BLAH BLAH</HostId>
</Error>

Что меня сбивает с толку, так это то, что некоторые файлы, похоже, работают стабильно, в то время как другие в том же каталоге, что разрешено моей настраиваемой политикой, не работают при использовании одних и тех же подписанных файлов cookie.

Например: у меня есть файл по адресу /projects/index.html который работает и файл в /projects/src/Runtime.js что не несмотря на использование настраиваемой политики, которая явно позволяет им обоим, имея подстановочный знак в ресурсе: http://test.mydomain.com/projects/*

Оба файла настроены как частные на S3, единственная разница, которую я могу придумать между тем, как запрашиваются эти два файла, заключается в том, что /projects/src/Runtime.js файл запрашивается с реферером test.mydomain.com и нет mydomain.com что послужило первым /projects/index.html запрос.

Я знаю, что файлы cookie устанавливаются правильно для обоих запросов и что настраиваемая политика и подпись для них действительны, потому что, когда я возился с ними и даю им неправильные значения, я получаю другое сообщение об ошибке.

В любом случае! Моя конфигурация следующая:
Настройки CloudFront: i.imgur.com/DMcUeDY.png (Ограничение ссылки на сбой сервера, ба)
У меня есть альтернативное имя хоста, являющееся поддоменом сайта, обслуживающего файл (например, test.mydomain.com). Это не настоящая запись CNAME, и у меня нет сертификата на нее - я ссылаюсь на CloudFront, используя это имя через локальную запись / etc / hosts.

Настройки CloudFront Origin: i.imgur.com/ereGJ42.png (Ограничение ссылки на сбой сервера, да)
Происхождение простое - ссылка на корень моего ведра s3, и я не ограничиваю ведро, потому что он также содержит файлы, которые я хочу оставить общедоступными.

Я изменил глухое поведение: i.imgur.com/5N2RlxM.png (Ограничение ссылки на сбой сервера, ммм)
В основном включен Ограничить доступ для зрителей. Доверенные подписывающие лица - это учетная запись root, которая также является владельцем корзины s3.

Остальные параметры CloudFront остались нетронутыми. У меня есть пара ключей CloudFront, созданная Amazon, и я использую ее с фрагментами, которые Amazon предоставляет для PHP (с использованием openssl_sign), чтобы подписать настраиваемую политику, дающую доступ ко всему каталогу.

Я не могу точно определить, в чем проблема, из-за очень расплывчатого сообщения об ошибке «Доступ запрещен», но я почти уверен, что дело не в том, как я подписываю файлы cookie. Я пробовал использовать неправильные значения и получил разные ошибки, такие как «Неверная подпись» или «Неверная политика», поэтому предполагаю, что моя подпись прошла проверку. Кроме того, как я уже упоминал, некоторые файлы работают.

Я застрял на этом уже несколько дней, любая помощь будет принята с благодарностью!