Управление доступом к хранилищам объектов

Владельцы хранилищ имеют исключительные права на файлы: они могут создавать, удалять и читать все файлы. Они также и управляют тем, как отображается файл и как его видят все остальные пользователи.

В этой вы узнаете о параметрах доступа к хранилищам и файлам в них.

Публичный контент

Владелец хранилища должен принять два основных решения:

  • Есть ли у анонимных пользователей доступ к содержимому хранилища. Как правило, это решение принимается при создании хранилища и может быть изменено позже.
  • Является ли тот или иной файл общедоступным (к такому файлу может получить доступ любой пользователь) или частным (его могут просмотреть только владельцы). Это решение принимается при загрузке файла и может быть изменено после.

1: Доступ к просмотру содержимого хранилища

Если владелец дает каждому пользователю право на просмотр содержимого хранилища, это означает, что любой пользователь Интернета сможет увидеть имена (называемые ключами) всех файлов в хранилище, а также другую информацию о файлах (их размеры и даты последнего изменения). Эта метаинформация видна, даже если файл является частным и пользователь не может просмотреть его содержимое.

Если хранилище позволяет просматривать свое содержимое анонимным пользователям, они могут получить больше информации о файлах, чем того хотелось бы  владельцу. Потому лучше заблокировать просмотр файлов хранилища анонимными пользователями (в некоторых случаях это сделано по умолчанию).

В качестве примера рассмотрим следующую ситуацию:

  • Хранилище под названием permissions поддерживает просмотр списка файлов анонимными пользователями.
  • В хранилище есть частный файл my-secret-diary.txt.
  • Также в хранилище есть публичный файл изображения my-photo.png.

Если попробовать открыть файлы в браузере, то файл изображения будет загружен, потому что он общедоступный.

Но частный файл my-secret-diary.txt открыть не получится. Вместо этого на странице появится сообщение AccessDenied:

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<Error>
<Code>AccessDenied</Code>
<BucketName>permissions</BucketName>
<RequestId>tx000000000000001986a9f-0059c052b0-fc31-nyc3a</RequestId>
<HostId>fc31-nyc3a-nyc</HostId>
</Error>

Однако если посетить базовый URL-адрес хранилища, вы сможете увидеть список всех его файлов. Это означает, что вы получите информацию обо всех файлах, несмотря на то, что содержимое файла my-secret-diary.txt заблокировано для чтения.

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Name>permissions</Name>
<Prefix/>
<Marker/>
<MaxKeys>1000</MaxKeys>
<IsTruncated>false</IsTruncated>
<Contents>
<Key> my-secret-diary.txt</Key>
<LastModified>2017-09-17T19:20:21.360Z</LastModified>
<ETag>"39365ac292b6471ef008d1099bf99963"</ETag>
<Size>42</Size>
<StorageClass>STANDARD</StorageClass>
<Owner>
<ID>2900818</ID>
<DisplayName>2900818</DisplayName>
</Owner>
</Contents>
<Contents>
<Key>image.png</Key>
<LastModified>2017-09-17T23:19:53.222Z</LastModified>
<ETag>"00d3c043c2e54e99712d6e526932bb76"</ETag>
<Size>95607</Size>
<StorageClass>STANDARD</StorageClass>
<Owner>
<ID>2900818</ID>
<DisplayName>2900818</DisplayName>
</Owner>
</Contents>
</ListBucketResult>

Это позволит анонимным пользователям узнать о наличии в хранилище такого файла. Даже если они не смогут открыть и прочитать его, само существование файла перестанет быть секретом.

Так зачем открывать анонимам возможность просматривать содержимое хранилища? Владелец может делать файлы общедоступными, если все его содержимое является публичным, и таким образом неавторизованные сценарии смогут читать эти файлы.

Возможность просматривать содержимое хранилища устанавливается обычно во время создания хранилища. Эту функцию можно отключить позже.

2: Публичный доступ к файлам

Как и доступ к просмотру содержимого хранилища, публичный доступ к содержимому файлов обычно блокируется по умолчанию. Владельцы должны делать файлы общедоступными самостоятельно.

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

Владельцы могут также временно открывать публичный доступ к частным файлам по ссылке. Каждый пользователь, у которого есть ссылка на объект, сможет просмотреть частные файлы в течение заданного интервала времени.

Читайте также: