AWS S3 / RUBY на Rails / Heroku: Безопасность в моем приложении
-
25-09-2019 - |
Вопрос
У меня есть маршрут на моем конфиге, который говорит, что для страницы, скажем, /secure
, есть необходимый логин (сделано через authLogic). A FORE_FILER в моем контроллере заботится об этом. Это работает нормально, страница и ее ресурсы имеют ограниченный доступ - через приложение.
Проблема в том, что мы используем Amazon S3 для хранения в этом приложении (на основе REFineryCms), развернутых в Heroku. У меня есть ведро, и это работает нормально.
Тем не менее, любой ресурс, вставленный в безопасной части приложения, напрямую доступен через браузер. Другими словами, /secure
Страница содержит элементы, такие как PDF-файлы. Находясь через приложение, ресурсы защищены, эти файлы PDF доступны из любой точки в Интернете (пример URL): http://s3.amazonaws.com/my_bucket/images/1234/the_file_which_should_be_secure.pdf.
Могу ли я сделать тонкозернистый доступ доступа на S3? Должен ли я создать новое ведро? В идеале я хотел бы установить флаг на моем ресурсе, который делает его невидимым в Интернете - не знаю.
Любое предложение приветствовало.
PS OpenId.org имеет срок действия SSL SSL, поэтому необходимо для создания новой пустой учетной записи, как я не мог войти
Решение
Самое простое и простое решение - это просто для того, чтобы назвать ваши активы S3 со случайными, неподходящими именами файлов, а затем выставлять только секретные URL-адреса людям, которые должны иметь доступ.
Вот как работает фото Facebook и многие другие сайты (не существует конфиденциальности или безопасности, кроме ощущения отдельных файлов).
Другие советы
Вы можете попробовать, что сказано на этой странице:
http://thewebfellas.com/blog/2009/8/29/protecting-your-sapherclip-downloads.
Спетексики находятся под разделом "Нет больше потоковой передачи, времени для перенаправления".
Резюме: S3 имеет четыре консервированных политики доступа, используя политику для чтения аутентификации S3, обеспечивает способ создания аутентифицированного URL для частного контента, который работает только в течение определенного периода времени.
Я на самом деле не сделал это, поэтому, пожалуйста, дайте мне знать, если это работает для вас. :-)
Если вы используете PaperClip, вы можете ограничить доступ к объектам, хранящимся на Amazon S3, истекающий URL. (Если вы не против использовать истекший URL)
Вот вики из мыслима / скрепки на Github
https://github.com/thoughtbot/bapherclip/wiki/restricting-access-To-objects-stored-on-amazon-s3.
Кроме того, есть некоторые полезные ссылки в нижней части этой страницы, которую вы можете не захотеть пропустить.
Может быть, я запутался относительно того, что вы пытаетесь достичь, но S3 имеет доступ к разрешениям, которые требуют ключа шифрования в URL-адресе, который вы предоставляете пользователю. При использовании GEM AWS-S3 эта опция включена по умолчанию. Следовательно, вы не должны иметь возможность получить доступ к файлам, если только пользователь не использует ссылку с зашифрованным ключом, встроенным в него. Это потребует от вас, чтобы убедиться, что файл установлен только для авторизованного доступа.
Больше информации можно найти http://amazon.rubyforge.org/ о GEM. Ищите документацию, связанную с контролем доступа (я думаю, что «аутентификация_read» - это то, что вы хотите).