2015-01-18 3 views
6

Я использую Amazon S3 для загрузки файлов в разные папки. Все папки и файлы являются общедоступными и могут быть замечены кем угодно. Я создал частную папку, где я хочу разместить частные изображения, чтобы я мог их видеть. Я уже создал правило политики ведра, которое запретит доступ к этой папке. Но как я могу видеть файлы? Есть ли такая специальная ссылка https://s3.amazonaws.com/bucket/private_folder/file.jpg?secret_key=123, которая позволит мне и тому, кто знает секретный ключ, чтобы увидеть файлы?Amazon S3 просмотреть приватные файлы

Есть ли способ загрузить личные файлы, которые можно увидеть с помощью secret_key, url или что-то в этом роде?

+0

вы можете сделать это с помощью [состояние блок] (http://docs.aws.amazon.com/IAM/latest/UserGuide/AccessPolicyLanguage_ElementDescriptions.html#Condition), но это довольно сложный , Вместо этого поместите свои личные файлы во второе ведро. – tedder42

ответ

7

По умолчанию все объекты в Amazon S3 являются частными. Объекты могут быть сделаны "общественность" путем добавления разрешений, с помощью одного из:

  • Object Access Control List (ACL): Установка разрешения непосредственно на объекте
  • Bucket политики: относится к ковш, можно определить правила, относящиеся к поддиректорий, имя ключа (имен файлов), время-день, IP-адрес, и т.д.
  • IAM политики: Касается конкретных пользователей или групп

Пока один из этих способов предоставляет доступ, человек сможет получить доступ к объекту. Также возможно назначить разрешения Deny, которые переопределяют Разрешить разрешения.

Когда объект обращается через URL-адрес без аутентификации (например, s3.amazonaws.com/bucket-name/object-key), указанные выше правила определяют доступ. Тем не менее, даже «частные» файлы могут быть доступны, если вы выполняете аутентификацию с помощью службы, например, вызывая S3 API с вашими учетными данными пользователя или используя предварительно подписанный URL-адрес.

Чтобы посмотреть, как это работает, щелкните личный файл в Консоли управления Amazon S3, затем выберите Откройте в меню «Действия». Объект будет открыт. Это делается путем предоставления браузеру предварительно подписанного URL-адреса, который включает URL-адрес с криптографическим размером и срок действия. URL-адрес будет работать, чтобы получить частный файл только до определенного времени.

Таким образом, чтобы ответить на ваш вопрос, вы можете получить доступ к закрытым файлам с помощью:

  • Команда Открыть в консоли
  • Pre-Signed URL-адреса в веб-браузере
  • Аутентифицированный API вызовы

Просто будьте осторожны, чтобы вы не определяли правила DENY, которые перекрывают даже вашу способность доступа к файлам. Легче просто ДОБАВИТЬ каталоги, которые вы хотите публиковать.

См: Query String Request Authentication Alternative

+0

Можете ли вы ответить на мои вопросы здесь: http://stackoverflow.com/questions/29749203/php-amazon-s3-access-private-files-through-url –

+0

@John.как получить доступ к приватным файлам с сервера s3 только для аутентифицированного пользователя в php.can вы объясните мне больше – iCoders

+0

@iCoders Ответственность за ваше фоновое приложение (работающее на веб-сервере) будет зависеть от того, имеет ли пользователь право на доступ к объекту в Amazon S3. Если это так, приложение может создать предварительно подписанный URL-адрес и вернуть URL-адрес в качестве части веб-страницы. Смотрите: [Предварительно подписанная документация по URL для PHP] (https://docs.aws.amazon.com/aws-sdk-php/v3/guide/service/s3-presigned-url.html) –

Смежные вопросы