AWS S3 / Ruby on Rails / heroku: дыра в безопасности моего приложения - PullRequest
1 голос
/ 23 октября 2010

В моей конфигурации есть маршрут, который говорит, что для страницы, скажем, /secure, требуется вход в систему (выполняется через authlogic). Before_filter в моем контроллере позаботится об этом. Это прекрасно работает, доступ к странице и ее ресурсам ограничен - через приложение.

Проблема в том, что мы используем Amazon S3 для хранения в этом приложении (на основе refinerycms), развернутом на heroku. У меня есть ведро, и оно отлично работает.

Однако любой ресурс, вставленный в защищенную часть приложения, напрямую доступен через браузер. Другими словами, страница /secure содержит такие элементы, как файлы PDF. Хотя ресурсы приложения защищены, эти PDF-файлы доступны из любой точки Интернета (пример URL): http://s3.amazonaws.com/my_bucket/images/1234/the_file_which_should_be_secure.pdf

Могу ли я выполнить детальный контроль доступа на S3? Должен ли я создать новое ведро? В идеале я хотел бы установить флажок на своем ресурсе, который делает его невидимым в Интернете - не знаю.

Любое предложение приветствуется.

P.S. openid.org имеет сертификат ssl с истекшим сроком действия, поэтому необходимо создать новую пустую учетную запись, поскольку я не могу войти

Ответы [ 4 ]

5 голосов
/ 28 октября 2010

Вы можете попробовать то, что сказано на этой странице:

http://thewebfellas.com/blog/2009/8/29/protecting-your-paperclip-downloads

Спецификации находятся в разделе «Потоков больше нет, время для перенаправления».

Сводка: S3 имеет четыре постоянные политики доступа, используя политику аутентифицированного чтения S3 предоставляет способ создания аутентифицированного URL для частного контента, который работает только в течение определенного периода времени.

На самом деле я этого не делал, поэтому, пожалуйста, дайте мне знать, если это работает для вас. : -)

4 голосов
/ 24 октября 2010

Самое простое и простое решение - просто присвоить вашим ресурсам S3 случайные, неосуществимые имена файлов, а затем раскрывать секретные URL-адреса только тем людям, которые должны иметь доступ.

Так работают фотографии на Facebook и многие другие сайты (нет конфиденциальности или безопасности, кроме незаметности отдельных имен файлов).

2 голосов
/ 11 августа 2011

Если вы используете скрепку, вы можете ограничить доступ к объектам, хранящимся в Amazon S3, с помощью URL-адреса. (если вы не против использовать истекающий URL)

Вот вики из мыслибека / скрепки на GitHub

https://github.com/thoughtbot/paperclip/wiki/Restricting-Access-to-Objects-Stored-on-Amazon-S3

Кроме того, в нижней части этой страницы есть несколько полезных ссылок, которые вы, возможно, не захотите пропустить.

0 голосов
/ 24 октября 2010

Может быть, я не совсем понимаю, что вы пытаетесь выполнить, но у S3 есть доступ с правами доступа, для которого требуется ключ шифрования в URL, который вы предоставляете пользователю.При использовании гема aws-s3 эта опция включена по умолчанию.Следовательно, вы не сможете получить доступ к файлам, если пользователь не использует ссылку со встроенным в нее зашифрованным ключом.Для этого необходимо убедиться, что для файла установлен только авторизованный доступ.

Более подробную информацию можно найти http://amazon.rubyforge.org/ о драгоценном камне.Ищите документацию, связанную с контролем доступа (я думаю, что «authenticated_read» - это то, что вам нужно).

...